ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCA3NDk0YzY3Li40MmVkNWM5IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yNCw3ICsyNCwyNjQgQEAKICogTWFrZSBTeXN0ZW0gSU8gQ29uZmlnIFJlZ2lzdGVycyBib2FyZCBjb25maWd1cmFibGUgb24gTVBDODN4eAogICBQYXRjaCBieSBLdW1hciBHYWxhLCAxMSBKYW4gMjAwNgogCi0qIEFkZCBzdXBwb3J0IGZvciAyOEYyNTZKM0EgZmxhaCAoPT4gNjQgTUIpIG9uIFBNNTIwIGJvYXJkCisqIEZpeGVkIFBDSSBpbmRpcmVjdCBjb25maWcgb3BzIHRvIGhhbmRsZSBtdWx0aXBsZSBQQ0kgY29udHJvbGxlcnMKKyAgV2UgbmVlZCB0byBhZGp1c3QgdGhlIGJ1cyBudW1iZXIgd2UgYXJlIHRyeWluZyB0byBhY2Nlc3MgYmFzZWQKKyAgb24gd2hpY2ggUENJIGNvbnRyb2xsZXIgaXRzIG9uCisgIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDEyIEphbiAyMDA2CisKKyogUmVwb3J0IGJhY2sgUENJIGJ1cyB3aGVuIGRvaW5nIHRhYmxlIGJhc2VkIGRldmljZSBjb25maWcKKyAgUGF0Y2ggYnkgS3VtYXIgR2FsYSwgMTEgSmFuIDIwMDYKKworKiBBZGRlZCBzdXBwb3J0IGZvciBQQ0kgcHJlZmV0Y2hhYmxlIHJlZ2lvbiBhbmQgQkFScworICBJZiBhIGhvc3QgY29udHJvbGxlciBzZXRzIHVwIGEgcmVnaW9uIGFzIHByZWZldGNoYWJsZSBhbmQKKyAgYSBkZXZpY2UncyBCQVIgZGVub3RlcyBpdCBhcyBwcmVmZXRjaGFibGUsIGFsbG9jYXRlIHRoZQorICBCQVIgaW50byB0aGUgcHJlZmV0Y2ggcmVnaW9uLgorCisgIElmIGEgQkFSIGlzIHByZWZldGNoYWJsZSBhbmQgbm8gcHJlZmV0Y2hhYmxlIHJlZ2lvbiBoYXMKKyAgYmVlbiBzZXR1cCBieSB0aGUgY29udHJvbGxlciB3ZSBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZworICB0aGUgQkFSIGludG8gdGhlIG5vcm1hbGx5IG1lbW9yeSByZWdpb24uCisgIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDExIEphbiAyMDA2CisKKyogQWRkIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBmbGF0IGRldmljZSB0cmVlIGZpeHVwcyBmb3IgbXBjODN4eAorICBQYXRjaCBieSBLdW1hciBHYWxhLCAxMSBKYW4gMjAwNgorCisqIEFkZCBzdXBwb3J0IGZvciBwYXNzaW5nIGluaXRyZCBpbmZvcm1hdGlvbiB2aWEgZmxhdCBkZXZpY2UgdHJlZQorICBQYXRjaCBieSBLdW1hciBHYWxhLCAxMSBKYW4gMjAwNgorCisqIEFkZGVkIE9GX1NURE9VVF9QQVRIIGFuZCBPRl9TT0MKKworICBPRl9TVERPVVRfUEFUSCBzcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGRldmljZSB0aGUga2VybmVsIGNhbiB1c2UKKyAgZm9yIGNvbnNvbGUgb3V0cHV0CisKKyAgT0ZfU09DIHNwZWNpZmllcyB0aGUgcHJvcGVyIG5hbWUgb2YgdGhlIFNPQyBub2RlIGlmIG9uZSBleGlzdHMuCisgIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDExIEphbiAyMDA2CisKKyogQWxsb3cgYm9hcmQgY29kZSB0byBmaXh1cCB0aGUgZmxhdCBkZXZpY2UgdHJlZSBiZWZvcmUgYm9vdGluZyBhIGtlcm5lbAorICBQYXRjaCBieSBLdW1hciBHYWxhLCAxMSBKYW4gMjAwNgorCisqIEFkZGVkIENPTkZJR18gb3B0aW9ucyBmb3IgYmRfdCBhbmQgZW52IGluIGZsYXQgZGV2IHRyZWUKKworCUNPTkZJR19PRl9IQVNfQkRfVCB3aWxsIHB1dCBhIGNvcHkgb2YgdGhlIGJkX3QKKwlpbnRvIHRoZSByZXN1bHRpbmcgZmxhdCBkZXZpY2UgdHJlZS4KKworCUNPTkZJR19PRl9IQVNfVUJPT1RfRU5WIHdpbGwgY29weSB0aGUgZW52aXJvbm1lbnQKKwl2YXJpYWJsZXMgZnJvbSB1LWJvb3QgaW50byB0aGUgZmxhdCBkZXZpY2UgdHJlZQorCisgIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDExIEphbiAyMDA2CisKKyogQWRkIHN1cHBvcnQgZm9yIHRoZSBESENQIHZlbmRvciBvcHRpb25hbCBib290ZmlsZSAoIzY3KS4KKyAgSWdub3JlcyB0aGUgdmVuZG9yIFRGVFAgc2VydmVyIG5hbWUgb3B0aW9uICgjNjYpLgorICBQYXRjaCBieSBNdXJyYXkgSmVuc2VuLCAzMCBKdW4gMjAwNQorCisqIEZpeCBhIEhXIHRpbWluZyBpc3N1ZSBvbiA4NTQ4IENEUyBmb3IgZVRTRUMgMyBpbiBSR01JSSBtb2RlCisgIFBhdGNoIGJ5IEFuZHkgRmxlbWluZywgMTQgSnVuIDIwMDUKKworKiBGaXggYmFkIHJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciBMVFg5NzEgUEhZIG9uIE1QQzg1eHggYm9hcmRzLgorICBQYXRjaCBieSBHZXJoYXJkIEphZWdlciwgMjEgSnVuIDIwMDUKKworKiBBZGQgbmV0Y29uc29sZSBhbmQgc29tZSBtb3JlIGNvbW1hbmRzIHRvIFJQWGxpdGVfRFcgYm9hcmQKKyAgUGF0Y2ggYnkgU2FtIFNvbmcsIDE5IEp1biAyMDA1CisKKyogRml4IGJhZCBkZWNsYXJhdGlvbiBvbiBwY2lfY2ZnZnVuY19ub3RoaW5nCisgIFBhdGNoIGJ5IFNhbSBTb25nLCAxOSBKdW4gMjAwNQorCisqIEFkanVzdCAiZWNobyIgYXMgYSBkZWZhdWx0IGNvbW1hbmQKKyAgUGF0Y2ggYnkgU2FtIFNvbmcsIDE5IEp1biAyMDA1CisKKyogRml4IFBDSURGIGNhbGN1bGF0aW9uIGluIGNwdS9tcGM4MjYwL3NwZWVkLmMgZm9yIE1QQzgyODBFQworICBQYXRjaCBieSBLb2tIb3cgVGVoLCAxNiBKdW4gMjAwNQorCisqIEFkZCBjcmMgb2YgZGF0YSB0byBqZmZzMiAoaW4gamZmczJfMXBhc3NfYnVpbGRfbGlzdHMoKSkuCisgIFBhdGNoIGJ5IFJpY2sgQnJvbnNvbiwgMTUgSnVuIDIwMDUKKworKiBDb2RpbmcgU3R5bGUgY2xlYW51cAorCisqIEF2b2lkIGRlcmVmZXJlbmNpbmcgTlVMTCBpbiBmaW5kX2NtZCgpIGlmIG5vIHZhbGlkIGNvbW1hbmRzIHdlcmUgZm91bmQKKyAgUGF0Y2ggYnkgQW5kcmV3IER5ZXIsIDEzIEp1biAyMDA1CisKKyogQWRkIEFESSBCbGFja2ZpbiBzdXBwb3J0CisgIC0gYWRkIHN1cHBvcnQgZm9yIEFuYWxvZyBEZXZpY2VzIEJsYWNrZmluIEJGNTMzIENQVQorICAtIGFkZCBzdXBwb3J0IGZvciB0aGUgQURJIEJGNTMzIFN0YW1wIHVDbGludXggYm9hcmQKKyAgLSBhZGQgc3VwcG9ydCBmb3IgdGhlIEFESSBCRjUzMyBFWktpdCBib2FyZAorICBQYXRjaGVzIGJ5IFJpY2hhcmQgS2xpbmdsZXIsIDExIEp1biAyMDA1CisKKyogQWRkIGxvYWRzIG9mIG50b2hsKCkgaW4gaW1hZ2UgaGVhZGVyIGhhbmRsaW5nCisgIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDEwIEp1biAyMDA1CisKKyogU3dpdGNoIE1QQzg2eEFEUyBhbmQgTVBDODg1QURTIGJvYXJkcyB0byB1c2UgY3B1Y2xrIGVudmlyb25tZW50CisgIHZhcmlhYmxlIHRvIHNldCBjbG9jaworICBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCAwNSBKdW4gMjAwNQorCisqIFJQWGxpdGUgY29uZmlndXJhdGlvbiBmaXhlcworICAtIFVzZSBjb3JyZWN0IGZsYXNoIHNlY3RvciBzaXplCisgIC0gVXNlIGNvcnJlY3QgbWVtb3J5IHRlc3QgZW5kIGFkZHJlc3MKKyAgLSBBZGQgc3VwcG9ydCBmb3IgYnppcDIgY29tcHJlc3Npb24KKyAgLSBWYXJpb3VzIHNtYWxsIGZpeGVzCisgIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDA1IEp1biAyMDA1CisKKyogTWVtb3J5IGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBmb3IgWlBDLjE5MDAgYm9hcmQKKyAgLSBGaXggU0RSQU0gdGltaW5nIG9uIGJvdGggbG9jYWwgYnVzIGFuZCA2MHggYnVzCisgIC0gQWRkIHN1cHBvcnQgZm9yIHNlY29uZCBmbGFzaCBiYW5rIChTSU1NKQorICAtIENoYW5nZSBib290IGZsYXNoIGJhc2UKKyAgUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMDUgSnVuIDIwMDUKKworKiBBZGQgc3VwcG9ydCBmb3IgQWRkZXIgYm9hcmRzIHdpdGggMTZNQiBTRFJBTTsKKyAgYWRkIHN1cHBvcnQgZm9yIHNlY29uZCBGRUMgb24gQWRkZXI4N3ggYm9hcmQuCisgIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDA1IEp1biAyMDA1CisKKyogRml4IGNvbmRpdGlvbmFsIGZvciBpbmNsdWRpbmcga3M4Njk1ZXRoIGRyaXZlcgorICBQYXRjaCBieSBHcmVnIFVuZ2VyZXIsIDA0IEp1biAyMDA1CisKKyogRml4IE1ha2VmaWxlOiBpbmNsdWRlIGNvbmZpZy5tayBvbmx5IGFmdGVyIENST1NTX0NPTVBJTEUgaXMgZGVmaW5lZAorICBQYXRjaCBieSBGcmllZHJpY2ggTG9iZW5zdG9jaywgMDIgSnVuIDIwMDUKKworKiBGaXggY29tbWVudCBpbiBjb21tb24vc29mdF9pMmMuYworICBQYXRjaGVzIGJ5IFBldGVyIEtvcnNnYWFyZC9Ub2x1bmF5IE9ya3VuLCAyNiBNYXkgMjAwNQorCisqIENsZWFudXAgY29tcGlsZXIgd2FybmluZ3MuCisgIFBhdGNoIGJ5IEdyZWcgVW5nZXJlciwgMjEgTWF5IDIwMDUKKworKiBXb3JkIGFsaWdubWVudCBmaXhlcyBmb3Igd29yZCBhbGlnbmVkIE5TMTY1NTAgVUFSVAorICBQYXRjaCBieSBKZWFuLVBhdWwgU2FtYW4sIDAxIE1hciAyMDA1CisKKyAgRml4ZXMgYnVnIHdpdGggVUFSVCB0aGF0IG9ubHkgc3VwcG9ydHMgd29yZCBhbGlnbmVkIGFjY2VzczogcmVtb3ZlZAorICAiX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOyIgZm9yICIoQ0ZHX05TMTY1NTBfUkVHX1NJWkUgPT0gNCkiIHNvbWUKKyAgKGJyb2tlbiEpIHZlcnNpb25zIG9mIEdDQyBnZW5lcmF0ZSBieXRlIGFjY2Vzc2VzIHdoZW4gZW5jb3VudGVyaW5nCisgIHRoZSBwYWNrZWQgYXR0cmlidXRlIHJlZ2FyZGxlc3MgaWYgdGhlIHN0cnVjdCBpcyBhbHJlYWR5IGNvcnJlY3RseQorICBhbGlnbmVkIGZvciBhIHBsYXRmb3JtLiBQZXJpcGhlcmFscyB0aGF0IGNhbiBvbmx5IGhhbmRsZSB3b3JkCisgIGFsaWduZWQgYWNjZXNzIHdvbid0IHdvcmsgcHJvcGVybHkgd2hlbiBhY2Nlc3NlZCB3aXRoIGJ5dGUgYWNjZXNzLgorICBUaGUgc3RydWN0IE5TMTY1NTAgaXMgYWxyZWFkeSB3b3JkIGFsaWduZWQgZm9yIFJFR19TSVpFID0gNCwgc28KKyAgdGhlcmUgaXMgbm8gbmVlZCB0byBwYWNrZWQgdGhlIHN0cnVjdCBpbiB0aGF0IGNhc2UuCisKKyogRml4IGJlaGF2aW91ciBpZiBnYXRld2F5aXAgaXMgbm90IHNldAorICBQYXRjaCBieSBSb2JpbiBHaWxrcywgMjMgRGVjIDIwMDQKKworKiBGaXggY2xlYW51cCBmb3IgbmV0c3RhcnQgYm9hcmQuCisgIFJlbW92ZSBidWlsZCByZXN1bHRzIGZyb20gcmVwb3NpdG9yeQorCisqIFNvbWUgY29kZSBjbGVhbnVwIGZvciBHQ0MgNC54CisKKyogRml4ZXMgdG8gc3VwcG9ydCBlbnZpcm9ubWVudCBpbiBOQU5EIGZsYXNoOworICBlbmFibGUgTkFORCBmbGFzaCBiYXNlZCBlbnZpcm9ubWVudCBmb3IgZGVsdGEgYm9hcmQuCisKKyogQWRkIHN1cHBvcnQgZm9yIEludGVsIE1vbmFoYW5zIENQVSBvbiBaeWxvbml0ZSBhbmQgRGVsdGEgYm9hcmRzCisgIChUaGlzIGlzIFdvcmsgaW4gUHJvZ3Jlc3MhKQorCisqIEFkZCBzdXBwb3J0IGZvciBUUU04MjYwLUFJIGJvYXJkcy4KKworKiBNaW5vciBjb2RlIGNsZWFudXAKKworKiBNZXJnZSB0aGUgbmV3IE5BTkQgY29kZSAodGVzdGluZy1OQU5EIGJyYWNoKTsgc2VlIGRvYy9SRUFETUUubmFuZAorICBSZXdyaXRlIG9mIE5BTkQgY29kZSBiYXNlZCBvbiB3aGF0IGlzIGluIDIuNi4xMiBMaW51eCBrZXJuZWwKKyAgUGF0Y2ggYnkgTGFkaXNsYXYgTWljaGwsIDI5IEp1biAyMDA1CisKKyogQWRkIGxvd2Jvb3QgdGFyZ2V0IHRvIG1jYzIwMCBib2FyZAorICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDQgTWFyIDIwMDYKKworKiBGaXggcHJvYmxlbSB3aXRoIGZsYXNoX2dldF9zaXplKCkgZnJvbSBDRkkgZHJpdmVyIHVwZGF0ZQorICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDEgTWFyIDIwMDYKKworKiBNYWtlIENGR19OT19GTEFTSCB3b3JrIG9uIEFSTSBzeXN0ZW1zCisgIFBhdGNoIGJ5IE1hcmt1cyBLbG90emJ1ZWNoZXIsIDI3IEZlYiAyMDA2CisKKyogVXBkYXRlIG1jYzIwMCBjb25maWc6IERpc2FibGUgUENJIGFuZCBEb0MsIHVzZSAxMzMgTUh6IElQQiBjbG9jaywKKyAgdXNlIGh1c2ggc2hlbGwuCisKKyogQ29udmVydCBtY2MyMDAgdG8gdXNlIGNvbW1vbiBDRkkgZmxhc2ggZHJpdmVyCisgIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjggRmViIDIwMDYKKworKiBBZGQgZW52LXZhcmlhYmxlICJ1bmxvY2siIHRvIGhhbmRsZSBpbml0aWFsIHN0YXRlIG9mIHNlY3RvcnMKKyAgKGxvY2tlZC91bmxvY2tlZCkuCisKKyAgT25seSB0aGUgVS1Cb290IGltYWdlIGFuZCBpdCdzIGVudmlyb25tZW50IGlzIHByb3RlY3RlZCwKKyAgYWxsIG90aGVyIHNlY3RvcnMgYXJlIHVucHJvdGVjdGVkICh1bmxvY2tlZCkgaWYgZmxhc2gKKyAgaGFyZHdhcmUgcHJvdGVjdGlvbiBpcyB1c2VkIChDRkdfRkxBU0hfUFJPVEVDVElPTikgYW5kCisgIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAidW5sb2NrIiBpcyBzZXQgdG8gInllcyIuCisKKyAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyOCBGZWIgMjAwNgorCisqIFVwZGF0ZSBkcml2ZXJzL2NmaV9mbGFzaC5jOgorICAtIGZpbmRfc2VjdG9yKCkgY2FsbGVkIGluIGJvdGggdmVyc2lvbnMgb2YgZmxhc2hfd3JpdGVfY2Zpd29yZCgpCisgIFBhdGNoIGJ5IFBldGVyIFBlYXJzZSwgMjd0aCBGZWIgMjAwNgorCisqIENGSSBzdXBwb3J0IGZvciBhIHg4L3gxNiBBTUQvU3BhbnNpb24gZmxhc2ggY29uZmlndXJlZCBpbiB4OCBtb2RlCisgIFBhdGNoIGJ5IEpvc2UgTWFyaWEgTG9wZXosIDE2IEphbiAyMDA2CisKKyogQWRkIHN1cHBvcnQgZm9yIEFNRC9TcGFuc2lvbiBGbGFzaGVzIGluIGZsYXNoX3dyaXRlX2NmaWJ1ZmZlcgorICBQYXRjaCBieSBBbGV4IEJhc3RvcyBhbmQgVGhvbWFzIFNjaGFlZmVyLCAyMDA1LTA4LTI5CisKKyogQ2hhbmdlcy9maXhlcyBmb3IgZHJpdmVycy9jZmlfZmxhc2guYzoKKyAgV2UgKnNob3VsZCogY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBlcnJvciBiaXRzIGlmIHRoZSBwcmV2aW91cyBjYWxsCisgIHJldHVybmVkIEVSUl9PSyAoT3RoZXJ3aXNlIHdlIHdpbGwgaGF2ZSBvdXRwdXQgYW4gZXJyb3IgbWVzc2FnZSBpbgorICBmbGFzaF9zdGF0dXNfY2hlY2soKSBhbHJlYWR5LikgIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIG9ubHkgY2hlY2sgZm9yCisgIGVycm9yIGJpdHMgaWYgZmxhc2hfc3RhdHVzX2NoZWNrKCkgcmV0dXJucyBFUlJfVElNRU9VVC4KKyAgUGF0Y2ggYnkgTWFyY3VzIEhhbGwsIDIzIEF1ZyAyMDA1CisKKyogQ2hhbmdlcy9maXhlcyBmb3IgZHJpdmVycy9jZmlfZmxhc2guYzoKKyAgLSBBZGQgQ0ZHX0ZMQVNIX1BST1RFQ1RfQ0xFQVIgb24gZHJpdmVycy9jZmlfZmxhc2guYworICAtIFByb2hpYml0IGJ1ZmZlciB3cml0ZSB3aGVuIGJ1ZmZlcl9zaXplIGlzIDEgb24gZHJpdmVycy9jZmlfZmxhc2guYworICBQYXRjaCBieSBTYW5nbW9vbiBLaW0sIDE5IEF1ZyAyMDA1CisKKyogRml4ZXMgZm9yIGRyaXZlcnMvY2ZpX2ZsYXNoLmM6CisgIC0gRml4IHdyb25nIHRpbWVvdXQgdmFsdWUgdXNhZ2UgaW4gZmxhc2hfc3RhdHVzX2NoZWNrKCkKKyAgLSBSb3VuZCB3cml0ZV90b3V0IHVwIHdoZW4gY29udmVydGluZyB0byBtc2VjIGluIGZsYXNoX2dldF9zaXplKCkKKyAgLSBSZW1vdmUgY2xlYXJpbmcgZmxhc2ggc3RhdHVzIGF0IHRoZSBlbmQgb2YgZmxhc2hfd3JpdGVfY2ZpYnVmZmVyKCkKKyAgICB3aGljaCBzZXRzIEludGVsIDI4RjY0MEozIGZsYXNoIGJhY2sgdG8gY29tbWFuZCBtb2RlIG9uIENTQjQ3MgorICBQYXRjaCBieSBUb2x1bmF5IE9ya3VuLCAwMiBKdWx5IDIwMDUKKworKiBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIFNNTUFDTzQgQm9hcmQgZnJvbSBQYW5EYUNvbS4KKyAgUGF0Y2ggYnkgSGVpa28gU2Nob2NoZXIsIDIwIEZlYiAyMDA2CisKKyogQWRkIEdJVCB2ZXJzaW9uIGluZm9ybWF0aW9uIChjb21taWQgSUQpIHRvIHVudGFnZ2VkIFUtQm9vdCB2ZXJzaW9ucworCisgIEFzIGRvbmUgaW4gdGhlIGxpbnV4IGtlcm5lbCwgdGhlIFUtQm9vdCB2ZXJzaW9uIChVX0JPT1RfVkVSU0lPTikKKyAgb2YgYWxsIHVucmVsZWFzZWQgKHVudGFnZ2VkKSBVLUJvb3QgaW1hZ2VzIHdpbGwgYmUgYXV0b21hdGljYWxseQorICBleHRlbmRlZCB1cG9uIGNvbXBpbGV0aW1lIHdpdGggYSBwYXJ0IG9mIHRoZSBHSVQgY29tbWl0IElEIGFuZAorICBwb3NzaWJseSB3aXRoICJkaXJ0eSIgaWYgdW5jb21taXRlZCBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4KKworICBIZXJlIGFuIGV4YW1wbGUgZm9yIHRoZSByZXN1bHRpbmcgdmVyc2lvbjoKKyAgIlUtQm9vdCAxLjEuNC1nMzQ1N2FjMTgtZGlydHkiCisKKyAgVGhlIHZlcnNpb24gaXMgbm93IG1haW50YWluZWQgaW4gdGhlIHRvcGxldmVsIE1ha2VmaWxlIGFuZCB0aGUKKyAgdmVyc2lvbiBoZWFkZXJzIGFyZSBhdXRvZ2VuZXJhdGVkLgorCisgIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgOSBGZWIgMjAwNgorCisqIFVwZGF0ZSBkZWZhdWx0IGVudmlyb25tZW50IGZvciBJTktBNHgwMCBib2FyZC4KKworKiBDb252ZXJ0IENQQ0k3NTAgdG8gdXNlIGNvbW1vbiBDRkkgZmxhc2ggZHJpdmVyCisgIFBhdGNoIGJ5IFJlaW5oYXJkIEFybHQsIDggRmViIDIwMDYKKworKiBWYXJpb3VzIGNoYW5nZXMgdG8gZXNkIEhINDA1IGJvYXJkIHNwZWNpZmljIGZpbGVzCisgIFBhdGNoIGJ5IE1hdHRoaWFzIEZ1Y2hzLCAwNyBGZWIgMjAwNgorCisqIENsZWFudXAgVS1Cb290IGJvb3QgbWVzc2FnZXMgb24gQVJNLgorCisgIFRvIG1hdGNoIHRoZSBVLUJvb3QgdXNlciBpbnRlcmZhY2Ugb24gQVJNIHBsYXRmb3JtcyB0byB0aGUgVS1Cb290CisgIHN0YW5kYXJkIChhcyBvbiBQUEMgcGxhdGZvcm1zKSwgc29tZSBtZXNzYWdlcyB3aXRoIGRlYnVnIGNoYXJhY3RlcgorICBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBkZWZhdWx0IFUtQm9vdCBidWlsZC4KKyAgRW5hYmxlIERFQlVHIGZvciBsaWJfYXJtL2JvYXJkLmMgdG8gZW5hYmxlIGRlYnVnIG1lc3NhZ2VzLgorICBOZXcgQ09ORklHX0RJU1BMQVlfQ1BVSU5GTyBhbmQgQ09ORklHX0RJU1BMQVlfQk9BUkRJTkZPIG9wdGlvbnMuCisgIFBhdGNoICBieSBTdGVmYW4gUm9lc2UsIDI0IEphbiAyMDA2CisKKyogRml4IHZhcmlvdXMgY29tcGlsZXIgd2FybmluZ3Mgb24gcHBjNHh4IGJ1aWxkcyAoRUxESyA0LjApCisgIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTggSmFuIDIwMDYKKworKiBBZGQgVkdBIHN1cHBvcnQgKENUNjkwMDApIHRvIENQQ0k3NTAgYm9hcmQuCisgIEluc2VydCBtaXNzaW5nIF9fbGUzMl90b19jcHUoKSBmb3IgZmlsZXNpemUgaW4gZXh0MmZzX3JlYWRfZmlsZSgpLgorICBQYXRjaCBieSBSZWluaGFyZCBBcmx0LCAzMCBEZWMgMjAwNQorCisqIFBNQzQwNSBhbmQgQ1BDSTQwNTogTW92ZWQgY29uZmlndXJhdGlvbiBvZiBwY2kgcmVzb3VyY2VzCisgIGludG8gY29uZmlnIGZpbGUuCisgIFBNQzQwNSBhbmQgQ1BDSTJEUDogQWRkZWQgZmlybXdhcmUgZG93bmxvYWQgYW5kIGJvb3RpbmcgdmlhIHBjaS4KKyAgUGF0Y2ggYnkgTWF0dGhpYXMgRnVjaHMsIDIwIERlYyAyMDA1CisKKyogRml4IDI4RjI1NkozQSBzdXBwb3J0IG9uIFBNNTIwIGJvYXJkCisgICh3aXRob3V0IGJhbmstc3dpdGNoaW5nIG9ubHkgMzIgTUIgY2FuIGJlIGFjY2Vzc2VkKQorCisqIEZpeCBta2ltYWdlIGJ1ZyB3aXRoIG11bHRpZmlsZSBpbWFnZXMgY3JlYXRlZCBvbiA2NCBiaXQgc3lzdGVtcy4KKworKiBBZGQgc3VwcG9ydCBmb3IgMjhGMjU2SjNBIGZsYXNoICg9PiA2NCBNQikgb24gUE01MjAgYm9hcmQKIAogKiBGaXggY29tcGlsZXIgcHJvYmxlbSB3aXRoIGF0OTFybTkyMDBkayBib2FyZC4KICAgUGF0Y2ggYnkgRXVnZW4gQmlneiwgMTkgRGVjIDIwMDUKZGlmZiAtLWdpdCBhL01BS0VBTEwgYi9NQUtFQUxMCmluZGV4IGZjYmFiNDcuLjU4MjM1N2MgMTAwNzU1Ci0tLSBhL01BS0VBTEwKKysrIGIvTUFLRUFMTApAQCAtMjYsOCArMjYsOCBAQAogCiBMSVNUXzV4eHg9IglcCiAJY3BjaTUyMDAJaWNlY3ViZV81MTAwCWljZWN1YmVfNTIwMAlFVkFMNTIwMAlcCi0JcGY1MjAwCQlQTTUyMAkJVG90YWw1MTAwCVRvdGFsNTIwMAlcCi0JVG90YWw1MjAwX1JldjIJVFFNNTIwMF9hdXRvCW8yZG50CQkJCVwKKwltY2MyMDAJCW8yZG50CQlwZjUyMDAJCVBNNTIwCQlcCisJVG90YWw1MTAwCVRvdGFsNTIwMAlUb3RhbDUyMDBfUmV2MglUUU01MjAwX2F1dG8JXAogIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xNzcsMTAgKzE3NywxMCBAQAogCWFwOTIwdAkJYXA5MjJfWEExMAlhcDkyNmVqcwlhcDk0NmVzCQlcCiAJYXA5NjYJCWNwOTIwdAkJY3A5MjJfWEExMAljcDkyNmVqcwlcCiAJY3A5NDZlcwkJY3A5NjYJCWxwZDdhNDAwCW1wMnVzYgkJXAotCW14MWFkcwkJbXgxZnMyCQlvbWFwMTUxMGlubglvbWFwMTYxMGgyCVwKLQlvbWFwMTYxMGlubglvbWFwNzMwcDIJc2NiOTMyOAkJc21kazI0MDAJXAotCXNtZGsyNDEwCXRyYWIJCVZDTUE5CQl2ZXJzYXRpbGUJXAotCXZlcnNhdGlsZWFiCXZlcnNhdGlsZXBiCXZvaWNlYmx1ZQorCW14MWFkcwkJbXgxZnMyCQluZXRzdGFyCQlvbWFwMTUxMGlubglcCisJb21hcDE2MTBoMglvbWFwMTYxMGlubglvbWFwNzMwcDIJc2NiOTMyOAkJXAorCXNtZGsyNDAwCXNtZGsyNDEwCXRyYWIJCVZDTUE5CQlcCisJdmVyc2F0aWxlCXZlcnNhdGlsZWFiCXZlcnNhdGlsZXBiCXZvaWNlYmx1ZQogIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0yMDMsOCArMjAzLDkgQEAKIAogTElTVF9weGE9IglcCiAJYWRzdml4CQljZXJmMjUwCQljcmFkbGUJCWNzYjIyNgkJXAotCWlubm9rb20JCWx1YmJvY2sJCXB4YTI1NV9pZHAJd2VwZXAyNTAJXAotCXhhZW5pYXgJCXhtMjUwCQl4c2VuZ2luZQkJCVwKKwlkZWx0YQkJaW5ub2tvbQkJbHViYm9jawkJcHhhMjU1X2lkcAlcCisJd2VwZXAyNTAJeGFlbmlheAkJeG0yNTAJCXhzZW5naW5lCVwKKwl6eWxvbml0ZQkJCQkJCQlcCiAiCiAKIExJU1RfaXhwPSJpeGRwNDI1IgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCA5MzA1Y2FiLi42NWM0NTdlIDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtMSw1ICsxLDUgQEAKICMKLSMgKEMpIENvcHlyaWdodCAyMDAwLTIwMDUKKyMgKEMpIENvcHlyaWdodCAyMDAwLTIwMDYKICMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICMKICMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKQEAgLTIxLDYgKzIxLDEzIEBACiAjIE1BIDAyMTExLTEzMDcgVVNBCiAjCiAKK1ZFUlNJT04gPSAxCitQQVRDSExFVkVMID0gMQorU1VCTEVWRUwgPSA0CitFWFRSQVZFUlNJT04gPQorVV9CT09UX1ZFUlNJT04gPSAkKFZFUlNJT04pLiQoUEFUQ0hMRVZFTCkuJChTVUJMRVZFTCkkKEVYVFJBVkVSU0lPTikKK1ZFUlNJT05fRklMRSA9IGluY2x1ZGUvdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmgKKwogSE9TVEFSQ0ggOj0gJChzaGVsbCB1bmFtZSAtbSB8IFwKIAlzZWQgLWUgcy9pLjg2L2kzODYvIFwKIAkgICAgLWUgcy9zdW40dS9zcGFyYzY0LyBcCkBAIC00Niw5ICs1Myw2IEBACiAjIGxvYWQgQVJDSCwgQk9BUkQsIGFuZCBDUFUgY29uZmlndXJhdGlvbgogaW5jbHVkZSBpbmNsdWRlL2NvbmZpZy5tawogZXhwb3J0CUFSQ0ggQ1BVIEJPQVJEIFZFTkRPUiBTT0MKLSMgbG9hZCBvdGhlciBjb25maWd1cmF0aW9uCi1pbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKLQogaWZuZGVmIENST1NTX0NPTVBJTEUKIGlmZXEgKCQoSE9TVEFSQ0gpLHBwYykKIENST1NTX0NPTVBJTEUgPQpAQCAtODEsMTEgKzg1LDE4IEBACiBpZmVxICgkKEFSQ0gpLG1pY3JvYmxhemUpCiBDUk9TU19DT01QSUxFID0gbWItCiBlbmRpZgoraWZlcSAoJChBUkNIKSxibGFja2ZpbikKK0NST1NTX0NPTVBJTEUgPSBiZmluLWVsZi0KK2VuZGlmCiBlbmRpZgogZW5kaWYKIAogZXhwb3J0CUNST1NTX0NPTVBJTEUKIAorIyBsb2FkIG90aGVyIGNvbmZpZ3VyYXRpb24KK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVS1Cb290IG9iamVjdHMuLi4ub3JkZXIgaXMgaW1wb3J0YW50IChpLmUuIHN0YXJ0IG11c3QgYmUgZmlyc3QpCiAKQEAgLTEwMyw2ICsxMTQsMTAgQEAKIGlmZXEgKCQoQ1BVKSxtcGM4NXh4KQogT0JKUyArPSBjcHUvJChDUFUpL3Jlc2V0dmVjLm8KIGVuZGlmCitpZmVxICgkKENQVSksYmY1MzMpCitPQkpTICs9IGNwdS8kKENQVSkvc3RhcnQxLm8JY3B1LyQoQ1BVKS9pbnRlcnJ1cHQubwljcHUvJChDUFUpL2NhY2hlLm8KK09CSlMgKz0gY3B1LyQoQ1BVKS9jcGxiaGRsci5vCWNwdS8kKENQVSkvY3BsYm1nci5vCWNwdS8kKENQVSkvZmx1c2gubworZW5kaWYKIAogTElCUyAgPSBsaWJfZ2VuZXJpYy9saWJnZW5lcmljLmEKIExJQlMgKz0gYm9hcmQvJChCT0FSRERJUikvbGliJChCT0FSRCkuYQpAQCAtMTIxLDYgKzEzNiw3IEBACiBMSUJTICs9IGRyaXZlcnMvc2s5OGxpbi9saWJzazk4bGluLmEKIExJQlMgKz0gcG9zdC9saWJwb3N0LmEgcG9zdC9jcHUvbGliY3B1LmEKIExJQlMgKz0gY29tbW9uL2xpYmNvbW1vbi5hCitMSUJTICs9ICQoQk9BUkRMSUJTKQogLlBIT05ZIDogJChMSUJTKQogCiAjIEFkZCBHQ0MgbGliCkBAIC0xNTQsMTQgKzE3MCwxNCBAQAogdS1ib290LmltZzoJdS1ib290LmJpbgogCQkuL3Rvb2xzL21raW1hZ2UgLUEgJChBUkNIKSAtVCBmaXJtd2FyZSAtQyBub25lIFwKIAkJLWEgJChURVhUX0JBU0UpIC1lIDAgXAotCQktbiAkKHNoZWxsIHNlZCAtbiAtZSAncy8uKlVfQk9PVF9WRVJTSU9OLy9wJyBpbmNsdWRlL3ZlcnNpb24uaCB8IFwKKwkJLW4gJChzaGVsbCBzZWQgLW4gLWUgJ3MvLipVX0JPT1RfVkVSU0lPTi8vcCcgJChWRVJTSU9OX0ZJTEUpIHwgXAogCQkJc2VkIC1lICdzLyJbCSBdKiQkLyBmb3IgJChCT0FSRCkgYm9hcmQiLycpIFwKIAkJLWQgJDwgJEAKIAogdS1ib290LmRpczoJdS1ib290CiAJCSQoT0JKRFVNUCkgLWQgJDwgPiAkQAogCi11LWJvb3Q6CQlkZXBlbmQgJChTVUJESVJTKSAkKE9CSlMpICQoTElCUykgJChMRFNDUklQVCkKK3UtYm9vdDoJCWRlcGVuZCB2ZXJzaW9uICQoU1VCRElSUykgJChPQkpTKSAkKExJQlMpICQoTERTQ1JJUFQpCiAJCVVOREVGX1NZTT1gJChPQkpEVU1QKSAteCAkKExJQlMpIHxzZWQgIC1uIC1lICdzLy4qXChfX3VfYm9vdF9jbWRfLipcKS8tdVwxL3AnfHNvcnR8dW5pcWA7XAogCQkkKExEKSAkKExERkxBR1MpICQkVU5ERUZfU1lNICQoT0JKUykgXAogCQkJLS1zdGFydC1ncm91cCAkKExJQlMpIC0tZW5kLWdyb3VwICQoUExBVEZPUk1fTElCUykgXApAQCAtMTczLDYgKzE4OSwxMyBAQAogJChTVUJESVJTKToKIAkJJChNQUtFKSAtQyAkQCBhbGwKIAordmVyc2lvbjoKKwkJQGVjaG8gLW4gIiNkZWZpbmUgVV9CT09UX1ZFUlNJT04gXCJVLUJvb3QgIiA+ICQoVkVSU0lPTl9GSUxFKTsgXAorCQllY2hvIC1uICIkKFVfQk9PVF9WRVJTSU9OKSIgPj4gJChWRVJTSU9OX0ZJTEUpOyBcCisJCWVjaG8gLW4gJChzaGVsbCAkKENPTkZJR19TSEVMTCkgJChUT1BESVIpL3Rvb2xzL3NldGxvY2FsdmVyc2lvbiBcCisJCQkgJChUT1BESVIpKSA+PiAkKFZFUlNJT05fRklMRSk7IFwKKwkJZWNobyAiXCIiID4+ICQoVkVSU0lPTl9GSUxFKQorCiBnZGJ0b29sczoKIAkJJChNQUtFKSAtQyB0b29scy9nZGIgfHwgZXhpdCAxCiAKQEAgLTI3NywxNCArMzAwLDIzIEBACiAJCX0KIAlALi9ta2NvbmZpZyAtYSBJY2VDdWJlIHBwYyBtcGM1eHh4IGljZWN1YmUKIAotaW5rYTR4MF9jb25maWc6CQl1bmNvbmZpZworaW5rYTR4MF9jb25maWc6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgaW5rYTR4MCBwcGMgbXBjNXh4eCBpbmthNHgwCiAKK21jYzIwMF9jb25maWcJXAorbWNjMjAwX2xvd2Jvb3RfY29uZmlnOgl1bmNvbmZpZworCUAgPmluY2x1ZGUvY29uZmlnLmgKKwlAWyAteiAiJChmaW5kc3RyaW5nIGxvd2Jvb3RfLCRAKSIgXSB8fCBcCisJCXsgZWNobyAiVEVYVF9CQVNFID0gMHhGRTAwMDAwMCIgPmJvYXJkL21jYzIwMC9jb25maWcudG1wIDsgXAorCQkgIGVjaG8gIi4uLiB3aXRoIGxvd2Jvb3QgY29uZmlndXJhdGlvbiIgOyBcCisJCX0KKwlALi9ta2NvbmZpZyBtY2MyMDAgcHBjIG1wYzV4eHggbWNjMjAwCisKIG8yZG50X2NvbmZpZzoKLQlALi9ta2NvbmZpZyAtYSBvMmRudCBwcGMgbXBjNXh4eCBvMmRudAorCUAuL21rY29uZmlnIG8yZG50IHBwYyBtcGM1eHh4IG8yZG50CiAKIHBmNTIwMF9jb25maWc6ICB1bmNvbmZpZwotCUAuL21rY29uZmlnIC1hIHBmNTIwMCAgcHBjIG1wYzV4eHggcGY1MjAwIGVzZAorCUAuL21rY29uZmlnIHBmNTIwMCAgcHBjIG1wYzV4eHggcGY1MjAwIGVzZAogCiBQTTUyMF9jb25maWcgXAogUE01MjBfRERSX2NvbmZpZyBcCkBAIC0zMDEsNiArMzMzLDE0IEBACiAJCX0KIAlALi9ta2NvbmZpZyAtYSBQTTUyMCBwcGMgbXBjNXh4eCBwbTUyMAogCitzbW1hY280X2NvbmZpZzogdW5jb25maWcKKwlALi9ta2NvbmZpZyAtYSBzbW1hY280IHBwYyBtcGM1eHh4IHRxbTUyMDAKKworc3BpZXZhbF9jb25maWc6CXVuY29uZmlnCisJZWNobyAiI2RlZmluZSBDT05GSUdfQ1NfQVVUT0NPTkYiPj5pbmNsdWRlL2NvbmZpZy5oCisJZWNobyAiLi4uIHdpdGggYXV0b21hdGljIENTIGNvbmZpZ3VyYXRpb24iCisJQC4vbWtjb25maWcgLWEgc3BpZXZhbCBwcGMgbXBjNXh4eCB0cW01MjAwCisKIE1JTkk1MjAwX2NvbmZpZwlcCiBFVkFMNTIwMF9jb25maWcJXAogVE9QNTIwMF9jb25maWc6CXVuY29uZmlnCkBAIC0zNjYsMTEgKzQwNiw2IEBACiAJCX0KIAlALi9ta2NvbmZpZyAtYSBUUU01MjAwIHBwYyBtcGM1eHh4IHRxbTUyMDAKIAotc3BpZXZhbF9jb25maWc6CXVuY29uZmlnCi0JZWNobyAiI2RlZmluZSBDT05GSUdfQ1NfQVVUT0NPTkYiPj5pbmNsdWRlL2NvbmZpZy5oCi0JZWNobyAiLi4uIHdpdGggYXV0b21hdGljIENTIGNvbmZpZ3VyYXRpb24iCi0JQC4vbWtjb25maWcgLWEgc3BpZXZhbCBwcGMgbXBjNXh4eCB0cW01MjAwCi0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIE1QQzh4eCBTeXN0ZW1zCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xMTgxLDE4ICsxMjE2LDIwIEBACiBUUU04MjYwX0FGX2NvbmZpZyBcCiBUUU04MjYwX0FHX2NvbmZpZyBcCiBUUU04MjYwX0FIX2NvbmZpZyBcCitUUU04MjYwX0FJX2NvbmZpZyBcCiBUUU04MjY1X0FBX2NvbmZpZzogIHVuY29uZmlnCiAJQGNhc2UgIiRAIiBpbiBcCi0JVFFNODI1NV9BQV9jb25maWcpIENUWVBFPU1QQzgyNTU7IENGUkVRPTMwMDsgQ0FDSEU9bm87ICBCTU9ERT04MjYwOzsgIFwKLQlUUU04MjYwX0FBX2NvbmZpZykgQ1RZUEU9TVBDODI2MDsgQ0ZSRVE9MjAwOyBDQUNIRT1ubzsgIEJNT0RFPTgyNjA7OyBcCi0JVFFNODI2MF9BQl9jb25maWcpIENUWVBFPU1QQzgyNjA7IENGUkVRPTIwMDsgQ0FDSEU9eWVzOyBCTU9ERT02MHg7OyAgXAotCVRRTTgyNjBfQUNfY29uZmlnKSBDVFlQRT1NUEM4MjYwOyBDRlJFUT0yMDA7IENBQ0hFPXllczsgQk1PREU9NjB4OzsgIFwKLQlUUU04MjYwX0FEX2NvbmZpZykgQ1RZUEU9TVBDODI2MDsgQ0ZSRVE9MzAwOyBDQUNIRT1ubzsgIEJNT0RFPTYweDs7ICBcCi0JVFFNODI2MF9BRV9jb25maWcpIENUWVBFPU1QQzgyNjA7IENGUkVRPTI2NjsgQ0FDSEU9bm87ICBCTU9ERT04MjYwOzsgXAotCVRRTTgyNjBfQUZfY29uZmlnKSBDVFlQRT1NUEM4MjYwOyBDRlJFUT0zMDA7IENBQ0hFPW5vOyAgQk1PREU9NjB4OzsgIFwKLQlUUU04MjYwX0FHX2NvbmZpZykgQ1RZUEU9TVBDODI2MDsgQ0ZSRVE9MzAwOyBDQUNIRT1ubzsgIEJNT0RFPTgyNjA7OyBcCi0JVFFNODI2MF9BSF9jb25maWcpIENUWVBFPU1QQzgyNjA7IENGUkVRPTMwMDsgQ0FDSEU9eWVzOyBCTU9ERT02MHg7OyAgXAotCVRRTTgyNjVfQUFfY29uZmlnKSBDVFlQRT1NUEM4MjY1OyBDRlJFUT0zMDA7IENBQ0hFPW5vOyAgQk1PREU9NjB4OzsgIFwKKwlUUU04MjU1X0FBX2NvbmZpZykgQ1RZUEU9TVBDODI1NTsgQ0ZSRVE9MzAwOyBDQUNIRT1ubzsJQk1PREU9ODI2MDs7ICBcCisJVFFNODI2MF9BQV9jb25maWcpIENUWVBFPU1QQzgyNjA7IENGUkVRPTIwMDsgQ0FDSEU9bm87CUJNT0RFPTgyNjA7OyBcCisJVFFNODI2MF9BQl9jb25maWcpIENUWVBFPU1QQzgyNjA7IENGUkVRPTIwMDsgQ0FDSEU9eWVzOwlCTU9ERT02MHg7OyAgXAorCVRRTTgyNjBfQUNfY29uZmlnKSBDVFlQRT1NUEM4MjYwOyBDRlJFUT0yMDA7IENBQ0hFPXllczsJQk1PREU9NjB4OzsgIFwKKwlUUU04MjYwX0FEX2NvbmZpZykgQ1RZUEU9TVBDODI2MDsgQ0ZSRVE9MzAwOyBDQUNIRT1ubzsJQk1PREU9NjB4OzsgIFwKKwlUUU04MjYwX0FFX2NvbmZpZykgQ1RZUEU9TVBDODI2MDsgQ0ZSRVE9MjY2OyBDQUNIRT1ubzsJQk1PREU9ODI2MDs7IFwKKwlUUU04MjYwX0FGX2NvbmZpZykgQ1RZUEU9TVBDODI2MDsgQ0ZSRVE9MzAwOyBDQUNIRT1ubzsJQk1PREU9NjB4OzsgIFwKKwlUUU04MjYwX0FHX2NvbmZpZykgQ1RZUEU9TVBDODI2MDsgQ0ZSRVE9MzAwOyBDQUNIRT1ubzsJQk1PREU9ODI2MDs7IFwKKwlUUU04MjYwX0FIX2NvbmZpZykgQ1RZUEU9TVBDODI2MDsgQ0ZSRVE9MzAwOyBDQUNIRT15ZXM7CUJNT0RFPTYweDs7ICBcCisJVFFNODI2MF9BSV9jb25maWcpIENUWVBFPU1QQzgyNjA7IENGUkVRPTMwMDsgQ0FDSEU9bm87CUJNT0RFPTYweDs7ICBcCisJVFFNODI2NV9BQV9jb25maWcpIENUWVBFPU1QQzgyNjU7IENGUkVRPTMwMDsgQ0FDSEU9bm87CUJNT0RFPTYweDs7ICBcCiAJZXNhYzsgXAogCT5pbmNsdWRlL2NvbmZpZy5oIDsgXAogCWlmIFsgIiQke0NUWVBFfSIgIT0gIk1QQzgyNjAiIF0gOyB0aGVuIFwKQEAgLTE0NTksNiArMTQ5NiwxNyBAQAogbXgxZnMyX2NvbmZpZwk6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gYXJtOTIwdCBteDFmczIgTlVMTCBpbXgKIAorbmV0c3Rhcl8zMl9jb25maWcJXAorbmV0c3Rhcl9jb25maWc6CQl1bmNvbmZpZworCUBpZiBbICIkKGZpbmRzdHJpbmcgXzMyXywkQCkiIF0gOyB0aGVuIFwKKwkJZWNobyAiLi4uIDMyTUIgU0RSQU0iIDsgXAorCQllY2hvICIjZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFIFNaXzMyTSIgPj5pbmNsdWRlL2NvbmZpZy5oIDsgXAorCWVsc2UgXAorCQllY2hvICIuLi4gNjRNQiBTRFJBTSIgOyBcCisJCWVjaG8gIiNkZWZpbmUgUEhZU19TRFJBTV8xX1NJWkUgU1pfNjRNIiA+PmluY2x1ZGUvY29uZmlnLmggOyBcCisJZmkKKwlALi9ta2NvbmZpZyAtYSBuZXRzdGFyIGFybSBhcm05MjV0IG5ldHN0YXIKKwogb21hcDE1MTBpbm5fY29uZmlnIDoJdW5jb25maWcKIAlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBhcm05MjV0IG9tYXAxNTEwaW5uCiAKQEAgLTE2MDYsNiArMTY1NCw5IEBACiBjc2IyMjZfY29uZmlnCToJdW5jb25maWcKIAlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBweGEgY3NiMjI2CiAKK2RlbHRhX2NvbmZpZyA6CisJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gcHhhIGRlbHRhCisKIGlubm9rb21fY29uZmlnCToJdW5jb25maWcKIAlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBweGEgaW5ub2tvbQogCkBAIC0xNjMzLDYgKzE2ODQsOSBAQAogeHNlbmdpbmVfY29uZmlnIDoJdW5jb25maWcKIAlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBweGEgeHNlbmdpbmUKIAorenlsb25pdGVfY29uZmlnIDoKKwlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGFybSBweGEgenlsb25pdGUKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMgQVJNMTEzNiBTeXN0ZW1zCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xODEzLDYgKzE4NjcsMTkgQEAKIAlALi9ta2NvbmZpZyAtYSAkKEA6X2NvbmZpZz0pIG1pY3JvYmxhemUgbWljcm9ibGF6ZSBzdXpha3UgQXRtYXJrVGVjaG5vCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIEJsYWNrZmluCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitlemtpdDUzM19jb25maWcJOgl1bmNvbmZpZworCUAuL21rY29uZmlnICQoQDpfY29uZmlnPSkgYmxhY2tmaW4gYmY1MzMgZXpraXQ1MzMKKworc3RhbXBfY29uZmlnCToJdW5jb25maWcKKwlALi9ta2NvbmZpZyAkKEA6X2NvbmZpZz0pIGJsYWNrZmluIGJmNTMzIHN0YW1wCisKK2RzcHN0YW1wX2NvbmZpZwk6CXVuY29uZmlnCisJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBibGFja2ZpbiBiZjUzMyBkc3Bfc3RhbXAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjbGVhbjoKQEAgLTE4MjMsNiArMTg5MCw3IEBACiAJcm0gLWYgZXhhbXBsZXMvaGVsbG9fd29ybGQgZXhhbXBsZXMvdGltZXIgXAogCSAgICAgIGV4YW1wbGVzL2VlcHJvMTAwX2VlcHJvbSBleGFtcGxlcy9zY2hlZCBcCiAJICAgICAgZXhhbXBsZXMvbWVtX3RvX21lbV9pZG1hMmludHIgZXhhbXBsZXMvODI1NTlfZWVwcm9tIFwKKwkgICAgICBleGFtcGxlcy9zbWM5MTExMV9lZXByb20gXAogCSAgICAgIGV4YW1wbGVzL3Rlc3RfYnVyc3QKIAlybSAtZiB0b29scy9pbWcyc3JlYyB0b29scy9ta2ltYWdlIHRvb2xzL2VudmNyYyB0b29scy9nZW5fZXRoX2FkZHIKIAlybSAtZiB0b29scy9tcGM4NnhfY2xrIHRvb2xzL25jYgpAQCAtMTgzMCw2ICsxODk4LDggQEAKIAlybSAtZiB0b29scy9nZGIvYXN0ZXN0IHRvb2xzL2dkYi9nZGJjb250IHRvb2xzL2dkYi9nZGJzZW5kCiAJcm0gLWYgdG9vbHMvZW52L2Z3X3ByaW50ZW52IHRvb2xzL2Vudi9md19zZXRlbnYKIAlybSAtZiBib2FyZC9jcmF5L0wxL2Jvb3RzY3JpcHQuYyBib2FyZC9jcmF5L0wxL2Jvb3RzY3JpcHQuaW1hZ2UKKwlybSAtZiBib2FyZC9uZXRzdGFyL2VlcHJvbSBib2FyZC9uZXRzdGFyL2NyY2VrCisJcm0gLWYgYm9hcmQvbmV0c3Rhci8qLnNyZWMgYm9hcmQvbmV0c3Rhci8qLmJpbgogCXJtIC1mIGJvYXJkL3RyYWIvdHJhYl9ma3QgYm9hcmQvdm9pY2VibHVlL2VlcHJvbQogCXJtIC1mIGJvYXJkL2ludGVncmF0b3JhcC91LWJvb3QubGRzIGJvYXJkL2ludGVncmF0b3JjcC91LWJvb3QubGRzCiAKQEAgLTE4MzgsNyArMTkwOCw3IEBACiAJCS1vIC1uYW1lICcqLnNyZWMnIC1vIC1uYW1lICcqLmJpbicgLW8gLW5hbWUgdS1ib290LmltZyBcKSBcCiAJCS1wcmludDAgXAogCQl8IHhhcmdzIC0wIHJtIC1mCi0Jcm0gLWYgJChPQkpTKSAqLmJhayB0YWdzIFRBR1MKKwlybSAtZiAkKE9CSlMpICouYmFrIHRhZ3MgVEFHUyBpbmNsdWRlL3ZlcnNpb25fYXV0b2dlbmVyYXRlZC5oCiAJcm0gLWZyICouKn4KIAlybSAtZiB1LWJvb3QgdS1ib290Lm1hcCB1LWJvb3QuaGV4ICQoQUxMKQogCXJtIC1mIHRvb2xzL2NyYzMyLmMgdG9vbHMvZW52aXJvbm1lbnQuYyB0b29scy9lbnYvY3JjMzIuYwpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDZmNjEwMDguLmM4MDU0MzcgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTQxMSw3ICs0MTEsMjQgQEAKIAkJVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgY29uc3RydWN0ZWQgT0YgdHJlZS4KIAogCQlPRl9DUFUgLSBUaGUgcHJvcGVyIG5hbWUgb2YgdGhlIGNwdXMgbm9kZS4KKwkJT0ZfU09DIC0gVGhlIHByb3BlciBuYW1lIG9mIHRoZSBzb2Mgbm9kZS4KIAkJT0ZfVEJDTEsgLSBUaGUgdGltZWJhc2UgZnJlcXVlbmN5LgorCQlPRl9TVERPVVRfUEFUSCAtIFRoZSBwYXRoIHRvIHRoZSBjb25zb2xlIGRldmljZQorCisJCUNPTkZJR19PRl9IQVNfQkRfVAorCisJCVRoZSByZXN1bHRpbmcgZmxhdCBkZXZpY2UgdHJlZSB3aWxsIGhhdmUgYSBjb3B5IG9mIHRoZSBiZF90LgorCQlTcGFjZSBzaG91bGQgYmUgcHJlLWFsbG9jYXRlZCBpbiB0aGUgZHRzIGZvciB0aGUgYmRfdC4KKworCQlDT05GSUdfT0ZfSEFTX1VCT09UX0VOVgorCQkKKwkJVGhlIHJlc3VsdGluZyBmbGF0IGRldmljZSB0cmVlIHdpbGwgaGF2ZSBhIGNvcHkgb2YgdS1ib290J3MKKwkJZW52aXJvbm1lbnQgdmFyaWFibGVzCisKKwkJQ09ORklHX09GX0JPQVJEX1NFVFVQCisKKwkJQm9hcmQgY29kZSBoYXMgYWRkaXRpb24gbW9kaWZpY2F0aW9uIHRoYXQgaXQgd2FudHMgdG8gbWFrZQorCQl0byB0aGUgZmxhdCBkZXZpY2UgdHJlZSBiZWZvcmUgaGFuZGluZyBpdCBvZmYgdG8gdGhlIGtlcm5lbAogCiAtIFNlcmlhbCBQb3J0czoKIAkJQ0ZHX1BMMDEwX1NFUklBTApAQCAtNjA2LDcgKzYyMyw3IEBACiAJCUNGR19DTURfRElBRwkqIERpYWdub3N0aWNzCiAJCUNGR19DTURfRE9DCSogRGlzay1Pbi1DaGlwIFN1cHBvcnQKIAkJQ0ZHX0NNRF9EVFQJKiBEaWdpdGFsIFRoZXJtIGFuZCBUaGVybW9zdGF0Ci0JCUNGR19DTURfRUNITwkqIGVjaG8gYXJndW1lbnRzCisJCUNGR19DTURfRUNITwkgIGVjaG8gYXJndW1lbnRzCiAJCUNGR19DTURfRUVQUk9NCSogRUVQUk9NIHJlYWQvd3JpdGUgc3VwcG9ydAogCQlDRkdfQ01EX0VMRgkqIGJvb3RlbGYsIGJvb3R2eAogCQlDRkdfQ01EX0VOVgkgIHNhdmVlbnYKZGlmZiAtLWdpdCBhL2JsYWNrZmluX2NvbmZpZy5tayBiL2JsYWNrZmluX2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjc0N2FhCi0tLSAvZGV2L251bGwKKysrIGIvYmxhY2tmaW5fY29uZmlnLm1rCkBAIC0wLDAgKzEsMjQgQEAKKyMKKyMgKEMpIENvcHlyaWdodCAyMDAwLTIwMDIKKyMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyMKKyMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyMgcHJvamVjdC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfQkxBQ0tGSU4gLURfX2JsYWNrZmluX18KZGlmZiAtLWdpdCBhL2JvYXJkL2FkZGVyL2FkZGVyLmMgYi9ib2FyZC9hZGRlci9hZGRlci5jCmluZGV4IGNhYjZlMmYuLmFhNzgxNTg0IDEwMDY0NAotLS0gYS9ib2FyZC9hZGRlci9hZGRlci5jCisrKyBiL2JvYXJkL2FkZGVyL2FkZGVyLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0IEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA1IEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KICAqIFl1bGkgQmFyY29oZW4gPHl1bGlAYXJhYmVsbGFzdy5jb20+CiAgKgogICogU3VwcG9ydCBmb3IgQW5hbG9ndWUmTWljcm8gQWRkZXIgYm9hcmRzIGZhbWlseS4KQEAgLTI4LDcgKzI4LDggQEAKICNpbmNsdWRlIDxtcGM4eHguaD4KIAogLyoKLSAqIFNEUkFNIGlzIHNpbmdsZSBTYW1zdW5nIEs0UzY0MzIzMkYtVDcwIGNoaXAuCisgKiBTRFJBTSBpcyBzaW5nbGUgU2Ftc3VuZyBLNFM2NDMyMzJGLVQ3MCAgIGNoaXAgKDhNQikKKyAqICAgICAgIG9yIHNpbmdsZSBNaWNyb24gIE1UNDhMQzRNMzJCMlRHLTcgY2hpcCAoMTZNQikuCiAgKiBNaW5pbWFsIENQVSBmcmVxdWVuY3kgaXMgNDBNSHouCiAgKi8KIHN0YXRpYyB1aW50IHNkcmFtX3RhYmxlW10gPSB7CkBAIC01Myw3ICs1NCw3IEBACiAJMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwKIAogCS8qIFJlZnJlc2gJKG9mZnNldCAweDMwIGluIFVQTSBSQU0pICovCi0JMHgxZmY1ZmNhNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwKKwkweDFmZjVmYzg0LCAweGZmZmZmYzA0LCAweGZmZmZmYzA0LCAweGZmZmZmYzA0LAogCTB4ZmZmZmZjODQsIDB4ZmZmZmZjMDcsIDB4ZmZmZmZjMDQsIDB4ZmZmZmZjMDQsCiAJMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwgMHhmZmZmZmMwNCwKIApAQCAtNjMsNyArNjQsNyBAQAogCiBsb25nIGludCBpbml0ZHJhbSAoaW50IGJvYXJkX3R5cGUpCiB7Ci0JbG9uZyBpbnQgbXNpemUgPSBDRkdfU0RSQU1fU0laRTsKKwlsb25nIGludCBtc2l6ZTsKIAl2b2xhdGlsZSBpbW1hcF90ICAgICAqaW1tYXAgID0gKHZvbGF0aWxlIGltbWFwX3QgKilDRkdfSU1NUjsKIAl2b2xhdGlsZSBtZW1jdGw4eHhfdCAqbWVtY3RsID0gJmltbWFwLT5pbV9tZW1jdGw7CiAKQEAgLTcyLDExICs3MywxMSBAQAogCS8qIENvbmZpZ3VyZSBTRFJBTSByZWZyZXNoICovCiAJbWVtY3RsLT5tZW1jX21wdHByID0gTVBUUFJfUFRQX0RJVjMyOyAvKiBCUkdDTEsvMzIgKi8KIAotCW1lbWN0bC0+bWVtY19tYW1yID0gKDk0IDw8IDI0KSB8IENGR19NQU1SOwotCW1lbWN0bC0+bWVtY19tYXIgID0gMHgwOworCW1lbWN0bC0+bWVtY19tYW1yID0gKDk0IDw8IDI0KSB8IENGR19NQU1SOyAvKiBObyByZWZyZXNoICovCiAJdWRlbGF5KDIwMCk7CiAKIAkvKiBSdW4gcHJlY2hhcmdlIGZyb20gbG9jYXRpb24gMHgxNSAqLworCW1lbWN0bC0+bWVtY19tYXIgPSAweDA7CiAJbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDIxMTU7CiAJdWRlbGF5KDIwMCk7CiAKQEAgLTg0LDEzICs4NSwxOCBAQAogCW1lbWN0bC0+bWVtY19tY3IgPSAweDgwMDAyODMwOwogCXVkZWxheSgyMDApOwogCi0JbWVtY3RsLT5tZW1jX21hciA9IDB4ODg7Ci0JdWRlbGF5KDIwMCk7Ci0KIAkvKiBSdW4gTVJTIHBhdHRlcm4gZnJvbSBsb2NhdGlvbiAweDE2ICovCisJbWVtY3RsLT5tZW1jX21hciA9IDB4ODg7CiAJbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDIxMTY7CiAJdWRlbGF5KDIwMCk7CiAKKwltZW1jdGwtPm1lbWNfbWFtciB8PSAgTUFNUl9QVEFFOyAvKiBFbmFibGUgcmVmcmVzaCAqLworCW1lbWN0bC0+bWVtY19vcjEgICA9IH4oQ0ZHX1NEUkFNX01BWF9TSVpFIC0gMSkgfCBPUl9DU05UX1NBTTsKKwltZW1jdGwtPm1lbWNfYnIxICAgPSAgQ0ZHX1NEUkFNX0JBU0UgfCBCUl9QU18zMiB8IEJSX01TX1VQTUEgfCBCUl9WOworCisJbXNpemUgPSBnZXRfcmFtX3NpemUoQ0ZHX1NEUkFNX0JBU0UsIENGR19TRFJBTV9NQVhfU0laRSk7CisJbWVtY3RsLT5tZW1jX29yMSAgfD0gfihtc2l6ZSAtIDEpOworCiAJcmV0dXJuIG1zaXplOwogfQogCmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL2JhbWJvby9iYW1ib28uYyBiL2JvYXJkL2FtY2MvYmFtYm9vL2JhbWJvby5jCmluZGV4IDgwMzk5NWEuLjdjOTg5MjAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MvYmFtYm9vL2JhbWJvby5jCisrKyBiL2JvYXJkL2FtY2MvYmFtYm9vL2JhbWJvby5jCkBAIC0yNzcsNyArMjc3LDcgQEAKIH0KIAogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCi0jaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZF9sZWdhY3kuaD4KIGV4dGVybiBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbQ0ZHX01BWF9OQU5EX0RFVklDRV07CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2MvYmFtYm9vL2NvbmZpZy5tayBiL2JvYXJkL2FtY2MvYmFtYm9vL2NvbmZpZy5tawppbmRleCAzNWNiNjU1Li40MzM0MjliIDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL2JhbWJvby9jb25maWcubWsKKysrIGIvYm9hcmQvYW1jYy9iYW1ib28vY29uZmlnLm1rCkBAIC0zMiwzICszMiw2IEBACiBpZmVxICgkKGRiY3IpLDEpCiBQTEFURk9STV9DUFBGTEFHUyArPSAtRENGR19JTklUX0RCQ1I9MHg4Y2ZmMDAwMAogZW5kaWYKKworIyBsZWdhY3kgbmFuZCBzdXBwb3J0CitCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKZGlmZiAtLWdpdCBhL2JvYXJkL2FtaXJpeC9hcDEwMDAvYXAxMDAwLmMgYi9ib2FyZC9hbWlyaXgvYXAxMDAwL2FwMTAwMC5jCmluZGV4IGRkODM2Y2UuLjdkMTFiMjkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtaXJpeC9hcDEwMDAvYXAxMDAwLmMKKysrIGIvYm9hcmQvYW1pcml4L2FwMTAwMC9hcDEwMDAuYwpAQCAtMzYsOCArMzYsOCBAQAogLyoqIHNlcmlhbCBudW1iZXIgYW5kIHBsYXRmb3JtIGRpc3BsYXkgYXQgc3RhcnR1cCAqLwogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7Ci0JdW5zaWduZWQgY2hhciAqcyA9IGdldGVudiAoInNlcmlhbCMiKTsKLQl1bnNpZ25lZCBjaGFyICplOworCWNoYXIgKnMgPSBnZXRlbnYgKCJzZXJpYWwjIik7CisJY2hhciAqZTsKIAogCS8qIEFmdGVyIGEgbG9hZGFjZSBjb21tYW5kLCB0aGUgU3lzdGVtQWNlIGNvbnRyb2wgcmVnaXN0ZXIgaXMgbGVmdCBpbiBhIHdvbmt5IHN0YXRlLiAqLwogCS8qIHRoaXMgY29kZSBkaWQgbm90IHdvcmsgaW4gYm9hcmRfcHJlX2luaXQgKi8KQEAgLTEzNSwxMyArMTM1LDEzIEBACiAKIGxvbmcgaW50IGluaXRkcmFtIChpbnQgYm9hcmRfdHlwZSkKIHsKLQl1bnNpZ25lZCBjaGFyICpzID0gZ2V0ZW52ICgiZHJhbXNpemUiKTsKKwljaGFyICpzID0gZ2V0ZW52ICgiZHJhbXNpemUiKTsKIAogCWlmIChzICE9IE5VTEwpIHsKIAkJaWYgKChzWzBdID09ICcwJykgJiYgKChzWzFdID09ICd4JykgfHwgKHNbMV0gPT0gJ1gnKSkpIHsKIAkJCXMgKz0gMjsKIAkJfQotCQlyZXR1cm4gc2ltcGxlX3N0cnRvdWwgKHMsIE5VTEwsIDE2KTsKKwkJcmV0dXJuIChsb25nIGludClzaW1wbGVfc3RydG91bCAocywgTlVMTCwgMTYpOwogCX0gZWxzZSB7CiAJCS8qIGdpdmUgYWxsIDY0IE1CICovCiAJCXJldHVybiA2NCAqIDEwMjQgKiAxMDI0OwpAQCAtMjkzLDcgKzI5Myw3IEBACiAKIAlwcmludGYgKCJXcml0aW5nIHRvIEZsYXNoLi4uICIpOwogCXdyaXRlX3Jlc3VsdCA9Ci0JCWZsYXNoX3dyaXRlIChzZWN0b3JfYnVmZmVyLCBTV19CWVRFX1NFQ1RPUl9BRERSLAorCQlmbGFzaF93cml0ZSAoKGNoYXIgKilzZWN0b3JfYnVmZmVyLCBTV19CWVRFX1NFQ1RPUl9BRERSLAogCQkJICAgICBTV19CWVRFX1NFQ1RPUl9TSVpFKTsKIAlpZiAod3JpdGVfcmVzdWx0ICE9IDApIHsKIAkJZmxhc2hfcGVycm9yICh3cml0ZV9yZXN1bHQpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvYXQ5MXJtOTIwMGRrL2F0NDUuYyBiL2JvYXJkL2F0OTFybTkyMDBkay9hdDQ1LmMKaW5kZXggM2MwMDEzMi4uZjg4NmZlNCAxMDA2NDQKLS0tIGEvYm9hcmQvYXQ5MXJtOTIwMGRrL2F0NDUuYworKysgYi9ib2FyZC9hdDkxcm05MjAwZGsvYXQ0NS5jCkBAIC01OTMsNyArNTkzLDcgQEAKIAkJaWYgKEFUOTFGX0RhdGFGbGFzaFdhaXRSZWFkeShwRGF0YUZsYXNoLT5wRGF0YUZsYXNoRGVzYywgQVQ5MUNfVElNRU9VVF9XUkRZKSAhPSBEQVRBRkxBU0hfT0spCiAJCQlyZXR1cm4gLTE7CiAKLQkJaWYgKEFUOTFGX0RhdGFGbGFzaENvbnRpbnVvdXNSZWFkIChwRGF0YUZsYXNoLCBhZGRyLCBidWZmZXIsIFNpemVUb1JlYWQpICE9IERBVEFGTEFTSF9PSykKKwkJaWYgKEFUOTFGX0RhdGFGbGFzaENvbnRpbnVvdXNSZWFkIChwRGF0YUZsYXNoLCBhZGRyLCAodWNoYXIgKilidWZmZXIsIFNpemVUb1JlYWQpICE9IERBVEFGTEFTSF9PSykKIAkJCXJldHVybiAtMTsKIAogCQlzaXplIC09IFNpemVUb1JlYWQ7CmRpZmYgLS1naXQgYS9ib2FyZC9hdDkxcm05MjAwZGsvZmxhc2guYyBiL2JvYXJkL2F0OTFybTkyMDBkay9mbGFzaC5jCmluZGV4IGY2MjI4ZWYuLjA1MTNkNjEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2F0OTFybTkyMDBkay9mbGFzaC5jCisrKyBiL2JvYXJkL2F0OTFybTkyMDBkay9mbGFzaC5jCkBAIC0zOTMsOCArMzkzLDcgQEAKICAqIENvcHkgbWVtb3J5IHRvIGZsYXNoCiAgKi8KIAotdm9sYXRpbGUgc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LAotCQkJCQkJCQl1bG9uZyBkYXRhKQorc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1bG9uZyBkYXRhKQogewogCXZvbGF0aWxlIHUxNiAqYWRkciA9ICh2b2xhdGlsZSB1MTYgKikgZGVzdDsKIAl1bG9uZyByZXN1bHQ7CkBAIC00MDksNyArNDA4LDYgQEAKIAlpZiAoKHJlc3VsdCAmIGRhdGEpICE9IGRhdGEpCiAJCXJldHVybiBFUlJfTk9UX0VSQVNFRDsKIAotCiAJLyoKIAkgKiBEaXNhYmxlIGludGVycnVwdHMgd2hpY2ggbWlnaHQgY2F1c2UgYSB0aW1lb3V0CiAJICogaGVyZS4gUmVtZW1iZXIgdGhhdCBvdXIgZXhjZXB0aW9uIHZlY3RvcnMgYXJlCmRpZmYgLS1naXQgYS9ib2FyZC9jbWNfcHUyL2xvYWRfc2VybnVtX2V0aGFkZHIuYyBiL2JvYXJkL2NtY19wdTIvbG9hZF9zZXJudW1fZXRoYWRkci5jCmluZGV4IDk0YWEzMGQuLjM1NDU2NmMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2NtY19wdTIvbG9hZF9zZXJudW1fZXRoYWRkci5jCisrKyBiL2JvYXJkL2NtY19wdTIvbG9hZF9zZXJudW1fZXRoYWRkci5jCkBAIC02OSw4ICs2OSw4IEBACiB2b2lkIGxvYWRfc2VybnVtX2V0aGFkZHIgKHZvaWQpCiB7CiAJc3RydWN0IG1hbnVmYWN0dXJlcl9kYXRhIGRhdGE7Ci0JdW5zaWduZWQgY2hhciAgc2VyaWFsIFs5XTsKLQl1bnNpZ25lZCBjaGFyICBldGhhZGRyWzE4XTsKKwljaGFyICBldGhhZGRyWzE4XTsKKwljaGFyICBzZXJpYWwgWzldOwogCXVuc2lnbmVkIHNob3J0IGNoa3N1bTsKIAl1bnNpZ25lZCBjaGFyICpwOwogCXVuc2lnbmVkIHNob3J0IGksIGlzLCBpZDsKZGlmZiAtLWdpdCBhL2JvYXJkL2NvYnJhNTI3Mi9mbGFzaC5jIGIvYm9hcmQvY29icmE1MjcyL2ZsYXNoLmMKaW5kZXggNmY1ODc0YS4uNzNjYzJmMiAxMDA2NDQKLS0tIGEvYm9hcmQvY29icmE1MjcyL2ZsYXNoLmMKKysrIGIvYm9hcmQvY29icmE1MjcyL2ZsYXNoLmMKQEAgLTI1Niw4ICsyNTYsNyBAQAogCXJldHVybiByYzsKIH0KIAotCi12b2xhdGlsZSBzdGF0aWMgaW50IHdyaXRlX3dvcmQgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGRlc3QsIHVsb25nIGRhdGEpCitzdGF0aWMgaW50IHdyaXRlX3dvcmQgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGRlc3QsIHVsb25nIGRhdGEpCiB7CiAJdm9sYXRpbGUgdTE2ICphZGRyID0gKHZvbGF0aWxlIHUxNiAqKSBkZXN0OwogCXVsb25nIHJlc3VsdDsKZGlmZiAtLWdpdCBhL2JvYXJkL2RhdmUvUFBDaGFtZWxlb25FVkIvTWFrZWZpbGUgYi9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL01ha2VmaWxlCmluZGV4IDM5ZDJmZWMuLjU4MWE1ODAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2RhdmUvUFBDaGFtZWxlb25FVkIvTWFrZWZpbGUKKysrIGIvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9NYWtlZmlsZQpAQCAtMjUsNyArMjUsNyBAQAogCiBMSUIJPSBsaWIkKEJPQVJEKS5hCiAKLU9CSlMJPSAkKEJPQVJEKS5vIGZsYXNoLm8KK09CSlMJPSAkKEJPQVJEKS5vIGZsYXNoLm8gbmFuZC5vCiAKICQoTElCKToJJChPQkpTKSAkKFNPQkpTKQogCSQoQVIpIGNydiAkQCAkXgpkaWZmIC0tZ2l0IGEvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9QUENoYW1lbGVvbkVWQi5jIGIvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9QUENoYW1lbGVvbkVWQi5jCmluZGV4IDVmMmM3MDUuLjUyMDU1YjggMTAwNjQ0Ci0tLSBhL2JvYXJkL2RhdmUvUFBDaGFtZWxlb25FVkIvUFBDaGFtZWxlb25FVkIuYworKysgYi9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL1BQQ2hhbWVsZW9uRVZCLmMKQEAgLTIzOCwzMyArMjM4LDYgQEAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0jaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKLWV4dGVybiB1bG9uZwotbmFuZF9wcm9iZSh1bG9uZyBwaHlzYWRyKTsKLQotdm9pZAotbmFuZF9pbml0KHZvaWQpCi17Ci0JdWxvbmcgdG90bGVuID0gMDsKLQotLyoKLQlUaGUgSEkgbW9kZWwgaXMgZXF1aXBwZWQgd2l0aCBhIGxhcmdlIGJsb2NrIE5BTkQgY2hpcCBub3Qgc3VwcG9ydGVkIHlldAotCWJ5IFUtQm9vdAotICAgIChDT05GSUdfUFBDSEFNRUxFT05fTU9EVUxFX01PREVMID09IENPTkZJR19QUENIQU1FTEVPTl9NT0RVTEVfSEkpCi0qLwotCi0jaWYgKENPTkZJR19QUENIQU1FTEVPTl9NT0RVTEVfTU9ERUwgPT0gQ09ORklHX1BQQ0hBTUVMRU9OX01PRFVMRV9NRSkKLQlkZWJ1ZyAoIlByb2JpbmcgYXQgMHglLjh4XG4iLCBDRkdfTkFORDBfQkFTRSk7Ci0JdG90bGVuICs9IG5hbmRfcHJvYmUgKENGR19OQU5EMF9CQVNFKTsKLSNlbmRpZgkvKiBDT05GSUdfUFBDSEFNRUxFT05fTU9EVUxFX01FLCBDT05GSUdfUFBDSEFNRUxFT05fTU9EVUxFX0hJICovCi0KLQlkZWJ1ZyAoIlByb2JpbmcgYXQgMHglLjh4XG4iLCBDRkdfTkFORDFfQkFTRSk7Ci0JdG90bGVuICs9IG5hbmRfcHJvYmUgKENGR19OQU5EMV9CQVNFKTsKLQotCXByaW50ZiAoIiUzbHUgTUJcbiIsIHRvdGxlbiA+PjIwKTsKLX0KLSNlbmRpZgotCiAjaWZkZWYgQ09ORklHX0NGQl9DT05TT0xFCiAjIGlmZGVmIENPTkZJR19DT05TT0xFX0VYVFJBX0lORk8KICMgaW5jbHVkZSA8dmlkZW9fZmIuaD4KZGlmZiAtLWdpdCBhL2JvYXJkL2RhdmUvUFBDaGFtZWxlb25FVkIvY29uZmlnLm1rIGIvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9jb25maWcubWsKaW5kZXggNTg1NmFlYy4uMWRjNjM1ZiAxMDA2NDQKLS0tIGEvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9jb25maWcubWsKKysrIGIvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9jb25maWcubWsKQEAgLTEsNSArMSw1IEBACiAjCi0jIChDKSBDb3B5cmlnaHQgMjAwMAorIyAoQykgQ29weXJpZ2h0IDIwMDAsIDIwMDYKICMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICMKICMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKQEAgLTIyLDcgKzIyLDEzIEBACiAjCiAKICMgUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IKLVRFWFRfQkFTRSA9IDB4RkZGQzAwMDAKKyNURVhUX0JBU0UgPSAweEZGRkMwMDAwCiAKICMgUmVzZXJ2ZSAzMjAga0IgZm9yIE1vbml0b3IKLSNURVhUX0JBU0UgPSAweEZGRkIwMDAwCitURVhUX0JBU0UgPSAweEZGRkIwMDAwCisKKyMgQ29tcGlsZSB0aGUgbmV3IE5BTkQgY29kZSAoQ0ZHX05BTkRfTEVHQUNZIG11c3RuJ3QgYmUgZGVmaW5lZCkKK0JPQVJETElCUyA9IGRyaXZlcnMvbmFuZC9saWJuYW5kLmEKKworIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQorI0JPQVJETElCUyA9IGRyaXZlcnMvbmFuZF9sZWdhY3kvbGlibmFuZF9sZWdhY3kuYQpkaWZmIC0tZ2l0IGEvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9uYW5kLmMgYi9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL25hbmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGE4MjdjCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9uYW5kLmMKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDYgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKKworI2luY2x1ZGUgPG5hbmQuaD4KKworLyoKKyAqIGhhcmR3YXJlIHNwZWNpZmljIGFjY2VzcyB0byBjb250cm9sLWxpbmVzCisgKiBmdW5jdGlvbiBib3Jyb3dlZCBmcm9tIExpbnV4IDIuNiAoZHJpdmVycy9tdGQvbmFuZC9wcGNoYW1lbGVvbmV2Yi5jKQorICovCitzdGF0aWMgdm9pZCBwcGNoYW1lbGVvbmV2Yl9od2NvbnRyb2woc3RydWN0IG10ZF9pbmZvICptdGRpbmZvLCBpbnQgY21kKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGRpbmZvLT5wcml2OworCXVsb25nIGJhc2UgPSAodWxvbmcpIHRoaXMtPklPX0FERFJfVzsKKworCXN3aXRjaChjbWQpIHsKKwljYXNlIE5BTkRfQ1RMX1NFVENMRToKKwkJTUFDUk9fTkFORF9DVExfU0VUQ0xFKCh1bnNpZ25lZCBsb25nKWJhc2UpOworCQlicmVhazsKKwljYXNlIE5BTkRfQ1RMX0NMUkNMRToKKwkJTUFDUk9fTkFORF9DVExfQ0xSQ0xFKCh1bnNpZ25lZCBsb25nKWJhc2UpOworCQlicmVhazsKKwljYXNlIE5BTkRfQ1RMX1NFVEFMRToKKwkJTUFDUk9fTkFORF9DVExfU0VUQUxFKCh1bnNpZ25lZCBsb25nKWJhc2UpOworCQlicmVhazsKKwljYXNlIE5BTkRfQ1RMX0NMUkFMRToKKwkJTUFDUk9fTkFORF9DVExfQ0xSQUxFKCh1bnNpZ25lZCBsb25nKWJhc2UpOworCQlicmVhazsKKwljYXNlIE5BTkRfQ1RMX1NFVE5DRToKKwkJTUFDUk9fTkFORF9FTkFCTEVfQ0UoKHVuc2lnbmVkIGxvbmcpYmFzZSk7CisJCWJyZWFrOworCWNhc2UgTkFORF9DVExfQ0xSTkNFOgorCQlNQUNST19OQU5EX0RJU0FCTEVfQ0UoKHVuc2lnbmVkIGxvbmcpYmFzZSk7CisJCWJyZWFrOworCX0KK30KKworCisvKgorICogcmVhZCBkZXZpY2UgcmVhZHkgcGluCisgKiBmdW5jdGlvbiArLy0gYm9ycm93ZWQgZnJvbSBMaW51eCAyLjYgKGRyaXZlcnMvbXRkL25hbmQvcHBjaGFtZWxlb25ldmIuYykKKyAqLworc3RhdGljIGludCBwcGNoYW1lbGVvbmV2Yl9kZXZpY2VfcmVhZHkoc3RydWN0IG10ZF9pbmZvICptdGRpbmZvKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGRpbmZvLT5wcml2OworCXVsb25nIHJiX2dwaW9fcGluOworCisJLyogdXNlIHRoZSBiYXNlIGFkZHIgdG8gZmluZCBvdXQgd2hpY2ggY2hpcCBhcmUgd2UgZGVhbGluZyB3aXRoICovCisJc3dpdGNoKCh1bG9uZykgdGhpcy0+SU9fQUREUl9XKSB7CisJY2FzZSBDRkdfTkFORDBfQkFTRToKKwkJcmJfZ3Bpb19waW4gPSBDRkdfTkFORDBfUkRZOworCQlicmVhazsKKwljYXNlIENGR19OQU5EMV9CQVNFOgorCQlyYl9ncGlvX3BpbiA9IENGR19OQU5EMV9SRFk7CisJCWJyZWFrOworCWRlZmF1bHQ6IC8qIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiAqLworCQlyZXR1cm4gMDsKKwkJYnJlYWs7CisJfQorCisJaWYgKGluMzIoR1BJTzBfSVIpICYgcmJfZ3Bpb19waW4pCisJCXJldHVybiAxOworCXJldHVybiAwOworfQorCisKKy8qCisgKiBCb2FyZC1zcGVjaWZpYyBOQU5EIGluaXRpYWxpemF0aW9uLiBUaGUgZm9sbG93aW5nIG1lbWJlcnMgb2YgdGhlCisgKiBhcmd1bWVudCBhcmUgYm9hcmQtc3BlY2lmaWMgKHBlciBpbmNsdWRlL2xpbnV4L210ZC9uYW5kLmgpOgorICogLSBJT19BRERSX1I/OiBhZGRyZXNzIHRvIHJlYWQgdGhlIDggSS9PIGxpbmVzIG9mIHRoZSBmbGFzaCBkZXZpY2UKKyAqIC0gSU9fQUREUl9XPzogYWRkcmVzcyB0byB3cml0ZSB0aGUgOCBJL08gbGluZXMgb2YgdGhlIGZsYXNoIGRldmljZQorICogLSBod2NvbnRyb2w6IGhhcmR3YXJlc3BlY2lmaWMgZnVuY3Rpb24gZm9yIGFjY2VzaW5nIGNvbnRyb2wtbGluZXMKKyAqIC0gZGV2X3JlYWR5OiBoYXJkd2FyZXNwZWNpZmljIGZ1bmN0aW9uIGZvciAgYWNjZXNpbmcgZGV2aWNlIHJlYWR5L2J1c3kgbGluZQorICogLSBlbmFibGVfaHdlY2M/OiBmdW5jdGlvbiB0byBlbmFibGUgKHJlc2V0KSAgaGFyZHdhcmUgZWNjIGdlbmVyYXRvci4gTXVzdAorICogICBvbmx5IGJlIHByb3ZpZGVkIGlmIGEgaGFyZHdhcmUgRUNDIGlzIGF2YWlsYWJsZQorICogLSBlY2Ntb2RlOiBtb2RlIG9mIGVjYywgc2VlIGRlZmluZXMKKyAqIC0gY2hpcF9kZWxheTogY2hpcCBkZXBlbmRlbnQgZGVsYXkgZm9yIHRyYW5zZmVyaW5nIGRhdGEgZnJvbSBhcnJheSB0bworICogICByZWFkIHJlZ3MgKHRSKQorICogLSBvcHRpb25zOiB2YXJpb3VzIGNoaXAgb3B0aW9ucy4gVGhleSBjYW4gcGFydGx5IGJlIHNldCB0byBpbmZvcm0KKyAqICAgbmFuZF9zY2FuIGFib3V0IHNwZWNpYWwgZnVuY3Rpb25hbGl0eS4gU2VlIHRoZSBkZWZpbmVzIGZvciBmdXJ0aGVyCisgKiAgIGV4cGxhbmF0aW9uCisgKiBNZW1iZXJzIHdpdGggYSAiPyIgd2VyZSBub3Qgc2V0IGluIHRoZSBtZXJnZWQgdGVzdGluZy1OQU5EIGJyYW5jaCwKKyAqIHNvIHRoZXkgYXJlIG5vdCBzZXQgaGVyZSBlaXRoZXIuCisgKi8KK3ZvaWQgYm9hcmRfbmFuZF9pbml0KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCit7CisKKwluYW5kLT5od2NvbnRyb2wgPSBwcGNoYW1lbGVvbmV2Yl9od2NvbnRyb2w7CisJbmFuZC0+ZGV2X3JlYWR5ID0gcHBjaGFtZWxlb25ldmJfZGV2aWNlX3JlYWR5OworCW5hbmQtPmVjY21vZGUgPSBOQU5EX0VDQ19TT0ZUOworCW5hbmQtPmNoaXBfZGVsYXkgPSBOQU5EX0JJR19ERUxBWV9VUzsKKwluYW5kLT5vcHRpb25zID0gTkFORF9TQU1TVU5HX0xQX09QVElPTlM7Cit9CisjZW5kaWYgLyogKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2RlbHRhL01ha2VmaWxlIGIvYm9hcmQvZGVsdGEvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc0NGVlYwotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2RlbHRhL01ha2VmaWxlCkBAIC0wLDAgKzEsNDggQEAKKworIworIyAoQykgQ29weXJpZ2h0IDIwMDAKKyMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyMKKyMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyMgcHJvamVjdC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCisKK0xJQgk9IGxpYiQoQk9BUkQpLmEKKworT0JKUwk6PSBkZWx0YS5vIG5hbmQubworU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vCisKKyQoTElCKToJJChPQkpTKSAkKFNPQkpTKQorCSQoQVIpIGNydiAkQCAkKE9CSlMpICQoU09CSlMpCisKK2NsZWFuOgorCXJtIC1mICQoU09CSlMpICQoT0JKUykKKworZGlzdGNsZWFuOgljbGVhbgorCXJtIC1mICQoTElCKSBjb3JlICouYmFrIC5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisuZGVwZW5kOglNYWtlZmlsZSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpCisJCSQoQ0MpIC1NICQoQ1BQRkxBR1MpICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykgPiAkQAorCistaW5jbHVkZSAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2JvYXJkL2RlbHRhL2NvbmZpZy5tayBiL2JvYXJkL2RlbHRhL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTY0NjI1Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZGVsdGEvY29uZmlnLm1rCkBAIC0wLDAgKzEsOCBAQAorI1RFWFRfQkFTRSA9IDB4MAorI1RFWFRfQkFTRSA9IDB4YTE3MDAwMDAKKyNURVhUX0JBU0UgPSAweGEzMDgwMDAwCisjVEVYVF9CQVNFID0gMHg5ZmZlMDAwMAorVEVYVF9CQVNFID0gMHhhMzAwODAwMAorCisjIENvbXBpbGUgdGhlIG5ldyBOQU5EIGNvZGUgKG5lZWRlZCBpZmYgI2lmZGVmIENPTkZJR19ORVdfTkFORF9DT0RFKQorQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kL2xpYm5hbmQuYQpkaWZmIC0tZ2l0IGEvYm9hcmQvZGVsdGEvZGVsdGEuYyBiL2JvYXJkL2RlbHRhL2RlbHRhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZmY2MyYQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2RlbHRhL2RlbHRhLmMKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogS3lsZSBIYXJyaXMsIE5leHVzIFRlY2hub2xvZ2llcywgSW5jLiBraGFycmlzQG5leHVzLXRlY2gubmV0CisgKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxpbm9zLmNvbT4KKyAqIE1hcml1cyBHcm9lZ2VyIDxtZ3JvZWdlckBzeXNnby5kZT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCisvKgorICogTWlzY2VsYW5lb3VzIHBsYXRmb3JtIGRlcGVuZGVudCBpbml0aWFsaXNhdGlvbnMKKyAqLworCitpbnQgYm9hcmRfaW5pdCAodm9pZCkKK3sKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLworCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCisKKwkvKiBhcmNoIG51bWJlciBvZiBMdWJib2NrLUJvYXJkIG1rQHRiZDogZml4IHRoaXMhICovCisJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IE1BQ0hfVFlQRV9MVUJCT0NLOworCisJLyogYWRyZXNzIG9mIGJvb3QgcGFyYW1ldGVycyAqLworCWdkLT5iZC0+YmlfYm9vdF9wYXJhbXMgPSAweGEwMDAwMTAwOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBib2FyZF9sYXRlX2luaXQodm9pZCkKK3sKKwlzZXRlbnYoInN0ZG91dCIsICJzZXJpYWwiKTsKKwlzZXRlbnYoInN0ZGVyciIsICJzZXJpYWwiKTsKKwlyZXR1cm4gMDsKK30KKworCitpbnQgZHJhbV9pbml0ICh2b2lkKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJZ2QtPmJkLT5iaV9kcmFtWzBdLnN0YXJ0ID0gUEhZU19TRFJBTV8xOworCWdkLT5iZC0+YmlfZHJhbVswXS5zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7CisJZ2QtPmJkLT5iaV9kcmFtWzFdLnN0YXJ0ID0gUEhZU19TRFJBTV8yOworCWdkLT5iZC0+YmlfZHJhbVsxXS5zaXplID0gUEhZU19TRFJBTV8yX1NJWkU7CisJZ2QtPmJkLT5iaV9kcmFtWzJdLnN0YXJ0ID0gUEhZU19TRFJBTV8zOworCWdkLT5iZC0+YmlfZHJhbVsyXS5zaXplID0gUEhZU19TRFJBTV8zX1NJWkU7CisJZ2QtPmJkLT5iaV9kcmFtWzNdLnN0YXJ0ID0gUEhZU19TRFJBTV80OworCWdkLT5iZC0+YmlfZHJhbVszXS5zaXplID0gUEhZU19TRFJBTV80X1NJWkU7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL2RlbHRhL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL2RlbHRhL2xvd2xldmVsX2luaXQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OThjZjdmCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZGVsdGEvbG93bGV2ZWxfaW5pdC5TCkBAIC0wLDAgKzEsMzg1IEBACisvKgorICogTW9zdCBvZiB0aGlzIHRha2VuIGZyb20gUmVkYm9vdCBoYWxfcGxhdGZvcm1fc2V0dXAuaCB3aXRoIGNsZWFudXAKKyAqCisgKiBOT1RFOiBJIGhhdmVuJ3QgY2xlYW4gdGhpcyB1cCBjb25zaWRlcmFibHksIGp1c3QgZW5vdWdoIHRvIGdldCBpdAorICogcnVubmluZy4gU2VlIGhhbF9wbGF0Zm9ybV9zZXR1cC5oIGZvciB0aGUgc291cmNlLiBTZWUKKyAqIGJvYXJkL2NyYWRsZS9sb3dsZXZlbF9pbml0LlMgZm9yIGFub3RoZXIgUFhBMjUwIHNldHVwIHRoYXQgaXMKKyAqIG11Y2ggY2xlYW5lci4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSA8dmVyc2lvbi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+CisKK0RSQU1fU0laRTogIC5sb25nICAgQ0ZHX0RSQU1fU0laRQorCisvKiB3YWl0IGZvciBjb3Byb2Nlc3NvciB3cml0ZSBjb21wbGV0ZSAqLworLm1hY3JvIENQV0FJVCByZWcKKwltcmMJcDE1LDAsXHJlZyxjMixjMCwwCisJbW92CVxyZWcsXHJlZworCXN1YglwYyxwYywjNAorLmVuZG0KKworCisubWFjcm8gd2FpdCB0aW1lCisJbGRyCQlyMiwgPU9TQ1IKKwltb3YJCXIzLCAjMAorCXN0cgkJcjMsIFtyMl0KKzA6CisJbGRyCQlyMywgW3IyXQorCWNtcAkJcjMsIFx0aW1lCisJYmxzCQkwYgorLmVuZG0KKworLyoKKyAqCU1lbW9yeSBzZXR1cAorICovCisKKy5nbG9ibCBsb3dsZXZlbF9pbml0Citsb3dsZXZlbF9pbml0OgorCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwltb3YJIHIxMCwgbHIKKworCS8qICBDb25maWd1cmUgR1BJTyAgUGlucyA5NywgOTggVUFSVDEgLyBhbHRlcm4uIEZrdC4gMSAqLworCWxkcgkJcjAsID1HUElPOTcKKwlsZHIJCXIxLCA9MHg4MDEKKwlzdHIJCXIxLCBbcjBdCisKKwlsZHIJCXIwLCA9R1BJTzk4CisJbGRyCQlyMSwgPTB4ODAxCisJc3RyCQlyMSwgW3IwXQorCisJLyogdGVicmFuZHQgLSBBU0NSLCBjbGVhciB0aGUgUkRIIGJpdCAqLworCWxkcgkJcjAsID1BU0NSCisJbGRyCQlyMSwgW3IwXQorCWJpYwkJcjEsIHIxLCAjMHg4MDAwMDAwMAorCXN0cgkJcjEsIFtyMF0KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBFbmFibGUgbWVtb3J5IGludGVyZmFjZQkJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbAkgICAgKi8KKwkvKgkgICBjbG9ja3MgdG8gc2V0dGxlLiBPbmx5IG5lY2Vzc2FyeSBhZnRlciBoYXJkIHJlc2V0Li4uCSAgICAqLworCS8qCSAgIEZJWE1FOiBjYW4gYmUgb3B0aW1pemVkIGxhdGVyCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworOwl3YWl0ICMzMDAKKworbWVtX2luaXQ6CisKKyNkZWZpbmUgTkVXX1NEUkFNX0lOSVQgMQorI2lmZGVmIE5FV19TRFJBTV9JTklUCisKKwkvKiBDb25maWd1cmUgQUNDUiBSZWdpc3RlciAtIGVuYWJsZSBETUVNQyBDbG9jayBhdCAyNjAgLyAyIE1IeiAqLworCWxkcgkJcjAsID1BQ0NSCisJbGRyCQlyMSwgW3IwXQorCW9ycgkJcjEsIHIxLCAjMHgzMDAwCisJc3RyCQlyMSwgW3IwXQorCWxkcgkJcjEsIFtyMF0KKworCS8qIDIuIFByb2dyYW1tIE1EQ05GRywgbGVhdmluZyBETUNFTiBkZS1hc3NlcnRlZCAqLworCWxkcgkJcjAsID1NRENORkcKKwlsZHIJCXIxLCA9KE1EQ05GR19ETUFQIHwgTURDTkZHX0RUWVBFIHwgTURDTkZHX0RUQ18yIHwgTURDTkZHX0RDU0UwIHwgTURDTkZHX0RSQUNfMTMpCisJLyoJbGRyCQlyMSwgPTB4ODAwMDA0MDMgKi8KKwlzdHIJCXIxLCBbcjBdCisJbGRyCQlyMSwgW3IwXQkvKiBkZWxheSB1bnRpbCB3cml0dGVuICovCisKKwkvKiAzLiB3YWl0IG5vcCBwb3dlciB1cCB3YWl0aW5nIHBlcmlvZCAoMjAwbXMpCisJICogb3B0aW1pemF0aW9uOiBTdGVwcyA0KzYgY2FuIGJlIGRvbmUgZHVyaW5nIHRoaXMKKwkgKi8KKwl3YWl0ICMzMDAKKworCS8qIDQuIFBlcmZvcm0gYW4gaW5pdGlhbCBSY29tcC1jYWxpYnJhdGlvbiBjeWNsZSAqLworCWxkcgkJcjAsID1SQ09NUAorCWxkcgkJcjEsID0weDgwMDAwMDAwCisJc3RyCQlyMSwgW3IwXQorCWxkcgkJcjEsIFtyMF0JLyogZGVsYXkgdW50aWwgd3JpdHRlbiAqLworCS8qIG1pc3Npbmc6IHByb2dyYW0gZm9yIGF1dG9tYXRpYyByY29tcCBldmFsdWF0aW9uIGN5Y2xlcyAqLworCisJLyogNS4gRERSIERSQU0gc3Ryb2JlIGRlbGF5IGNhbGlicmF0aW9uICovCisJbGRyCQlyMCwgPUREUl9IQ0FMCisJbGRyCQlyMSwgPTB4ODgwMDAwMDcKKwlzdHIJCXIxLCBbcjBdCisJd2FpdAkJIzUKKwlsZHIJCXIxLCBbcjBdCS8qIGRlbGF5IHVudGlsIHdyaXR0ZW4gKi8KKworCS8qIFNldCBNRE1SUyAqLworCWxkcgkJcjAsID1NRE1SUworCWxkcgkJcjEsID0weDYwMDAwMDMzCisJc3RyCQlyMSwgW3IwXQorCXdhaXQJIzMwMAorCisJLyogQ29uZmlndXJlIE1EUkVGUiAqLworCWxkcgkJcjAsID1NRFJFRlIKKwlsZHIJCXIxLCA9MHgwMDAwMDAwNgorCXN0cgkJcjEsIFtyMF0KKwlsZHIJCXIxLCBbcjBdCisKKwkvKiBFbmFibGUgdGhlIGR5bmFtaWMgbWVtb3J5IGNvbnRyb2xsZXIgKi8KKwlsZHIJCXIwLCA9TURDTkZHCisJbGRyCQlyMSwgW3IwXQorCW9ycgkJcjEsIHIxLCAjTURDTkZHX0RNQ0VOCisJc3RyCQlyMSwgW3IwXQorCisKKyNlbHNlIC8qIE5FV19TRFJBTV9JTklUICovCisKKwkvKiBjb25maWd1cmUgdGhlIE1FTUNMS0NGRyByZWdpc3RlciAqLworCWxkcgkJcjEsID1NRU1DTEtDRkcKKwlsZHIJCXIyLCA9MHgwMDAxMDAwMQorCXN0cgkJcjIsIFtyMV0JICAgICBAIFdSSVRFCisJbGRyCQlyMiwgW3IxXQkgICAgIEAgREVMQVkgVU5USUwgV1JJVFRFTgorCisJLyogc2V0IENTQURSQ0ZHWzBdIHRvIGRhdGEgZmxhc2ggU1JBTSBtb2RlICovCisJbGRyCQlyMSwgPUNTQURSQ0ZHMAorCWxkcgkJcjIsID0weDAwMzIwODA5CisJc3RyCQlyMiwgW3IxXQkgICAgIEAgV1JJVEUKKwlsZHIJCXIyLCBbcjFdCSAgICAgQCBERUxBWSBVTlRJTCBXUklUVEVOCisKKwkvKiBzZXQgQ1NBRFJDRkdbMV0gdG8gZGF0YSBmbGFzaCBTUkFNIG1vZGUgKi8KKwlsZHIJCXIxLCA9Q1NBRFJDRkcxCisJbGRyCQlyMiwgPTB4MDAzMjA4MDkKKwlzdHIJCXIyLCBbcjFdCSAgICAgQCBXUklURQorCWxkcgkJcjIsIFtyMV0JICAgICBAIERFTEFZIFVOVElMIFdSSVRURU4KKworCS8qIHNldCBNU0MgMCByZWdpc3RlciBmb3IgU1JBTSBtZW1vcnkgKi8KKwlsZHIJCXIxLCA9TVNDMAorCWxkcgkJcjIsID0weDExMTkxMTE5CisJc3RyCQlyMiwgW3IxXQkgICAgIEAgV1JJVEUKKwlsZHIJCXIyLCBbcjFdCSAgICAgQCBERUxBWSBVTlRJTCBXUklUVEVOCisKKwkvKiBzZXQgQ1NBRFJDRkdbMl0gdG8gZGF0YSBmbGFzaCBTUkFNIG1vZGUgKi8KKwlsZHIJCXIxLCA9Q1NBRFJDRkcyCisJbGRyCQlyMiwgPTB4MDAzMjA4MDkKKwlzdHIJCXIyLCBbcjFdCSAgICAgQCBXUklURQorCWxkcgkJcjIsIFtyMV0JICAgICBAIERFTEFZIFVOVElMIFdSSVRURU4KKworCS8qIHNldCBDU0FEUkNGR1szXSB0byBWTElPIG1vZGUgKi8KKwlsZHIJCXIxLCA9Q1NBRFJDRkczCisJbGRyCQlyMiwgPTB4MDAzMjA4MEIKKwlzdHIJCXIyLCBbcjFdCSAgICAgQCBXUklURQorCWxkcgkJcjIsIFtyMV0JICAgICBAIERFTEFZIFVOVElMIFdSSVRURU4KKworCS8qIHNldCBNU0MgMSByZWdpc3RlciBmb3IgVkxJTyBtZW1vcnkgKi8KKwlsZHIJCXIxLCA9TVNDMQorCWxkcgkJcjIsID0weDEyM0MxMTE5CisJc3RyCQlyMiwgW3IxXQkgICAgIEAgV1JJVEUKKwlsZHIJCXIyLCBbcjFdCSAgICAgQCBERUxBWSBVTlRJTCBXUklUVEVOCisKKyNpZiAwCisJLyogVGhpcyBkb2VzIG5vdCB3b3JrIGluIFp5bG9uaXRlLiAtU0MgKi8KKwlsZHIJCXIwLCA9MHgxNWZmZmZmMAorCWxkcgkJcjEsID0weGIxMGIKKwlzdHIJCXIxLCBbcjBdCisJc3RyCQlyMSwgW3IwLCAjNF0KKyNlbmRpZgorCisJLyogQ29uZmlndXJlIEFDQ1IgUmVnaXN0ZXIgKi8KKwlsZHIJCXIwLCA9QUNDUgkJQCBBQ0NSCisJbGRyCQlyMSwgPTB4MDE4MGIxMDgKKwlzdHIJCXIxLCBbcjBdCisJbGRyCQlyMSwgW3IwXQorCisJLyogQ29uZmlndXJlIE1EQ05GRyBSZWdpc3RlciAqLworCWxkcgkJcjAsID1NRENORkcJCUAgTURDTkZHCisJbGRyCQlyMSwgPTB4NDAzCisJc3RyCQlyMSwgW3IwXQorCWxkcgkJcjEsIFtyMF0KKworCS8qIFBlcmZvcm0gUmVzaXN0aXZlIENvbXBlbnNhdGlvbiBieSBjb25maWd1cmluZyBSQ09NUCByZWdpc3RlciAqLworCWxkcgkJcjEsID1SQ09NUAkJQCBSQ09NUAorCWxkcgkJcjIsID0weDAwMDAwMGZmCisJc3RyCQlyMiwgW3IxXQorCWxkcgkJcjIsIFtyMV0KKworCS8qIENvbmZpZ3VyZSBNRE1SUyBSZWdpc3RlciBmb3IgU0RDUzAgKi8KKwlsZHIJCXIxLCA9TURNUlMJCUAgTURNUlMKKwlsZHIJCXIyLCA9MHg2MDAwMDAyMworCWxkcgkJcjMsIFtyMV0KKwlvcnIJCXIyLCByMiwgcjMKKwlzdHIJCXIyLCBbcjFdCisJbGRyCQlyMiwgW3IxXQorCisJLyogQ29uZmlndXJlIE1ETVJTIFJlZ2lzdGVyIGZvciBTRENTMSAqLworCWxkcgkJcjEsID1NRE1SUwkJQCBNRE1SUworCWxkcgkJcjIsID0weGEwMDAwMDIzCisJbGRyCQlyMywgW3IxXQorCW9ycgkJcjIsIHIyLCByMworCXN0cgkJcjIsIFtyMV0KKwlsZHIJCXIyLCBbcjFdCisKKwkvKiBDb25maWd1cmUgTURSRUZSICovCisJbGRyCQlyMSwgPU1EUkVGUgkJQCBNRFJFRlIKKwlsZHIJCXIyLCA9MHgwMDAwMDAwNgorCXN0cgkJcjIsIFtyMV0KKwlsZHIJCXIyLCBbcjFdCisKKwkvKiBDb25maWd1cmUgRU1QSSAqLworCWxkcgkJcjEsID1FTVBJCQlAIEVNUEkKKwlsZHIJCXIyLCA9MHg4MDAwMDAwMAorCXN0cgkJcjIsIFtyMV0KKwlsZHIJCXIyLCBbcjFdCisKKwkvKiBIYXJkd2FyZSBERFIgUmVhZC1TdHJvYmUgRGVsYXkgQ2FsaWJyYXRpb24gKi8KKwlsZHIJCXIwLCA9RERSX0hDQUwJCUAgRERSX0hDQUwKKwlsZHIJCXIxLCA9MHg4MDNmZmMwNwkgICAgQCB0aGUgb2Zmc2V0IGlzIGNvcnJlY3Q/IC1TQworCXN0cgkJcjEsIFtyMF0KKwl3YWl0CQkjNQorCWxkcgkJcjEsIFtyMF0KKworCS8qIEhlcmUgd2UgYXNzdW1lIHRoZSBoYXJkd2FyZSBjYWxpYnJhdGlvbiBhbHdhc3kgYmUgc3VjY2Vzc2Z1bC4gLVNDICovCisJLyogU2V0IERNQ0VOIGJpdCBpbiBNRENORkcgUmVnaXN0ZXIgKi8KKwlsZHIJCXIwLCA9TURDTkZHCQlAIE1EQ05GRworCWxkcgkJcjEsIFtyMF0KKwlvcnIJCXIxLCByMSwgIzB4NDAwMDAwMDAJQCBlbmFibGUgU0RSQU0gZm9yIE5vcm1hbCBBY2Nlc3MKKwlzdHIJCXIxLCBbcjBdCisKKyNlbmRpZiAvKiBORVdfU0RSQU1fSU5JVCAqLworCisjaWZuZGVmIENGR19TS0lQX0RSQU1fU0NSVUIKKwkvKiBzY3J1Yi9pbml0IFNEUkFNIGlmIGVuYWJsZWQvcHJlc2VudCAqLworCWxkcglyOCwgPUNGR19EUkFNX0JBU0UJLyogYmFzZSBhZGRyZXNzIG9mIFNEUkFNIChDRkdfRFJBTV9CQVNFKSAqLworCWxkcglyOSwgPUNGR19EUkFNX1NJWkUJLyogc2l6ZSBvZiBtZW1vcnkgdG8gc2NydWIgKENGR19EUkFNX1NJWkUpICovCisJbW92CXIwLCAjMAkJCS8qIHNjcnViIHdpdGggMHgwMDAwOjAwMDAgKi8KKwltb3YJcjEsICMwCisJbW92CXIyLCAjMAorCW1vdglyMywgIzAKKwltb3YJcjQsICMwCisJbW92CXI1LCAjMAorCW1vdglyNiwgIzAKKwltb3YJcjcsICMwCisxMDoJLyogZmFzdFNjcnViTG9vcCAqLworCXN1YnMJcjksIHI5LCAjMzIJLyogOCB3b3Jkcy9saW5lICovCisJc3RtaWEJcjghLCB7cjAtcjd9CisJYmVxCTE1ZgorCWIJMTBiCisjZW5kaWYgLyogQ0ZHX1NLSVBfRFJBTV9TQ1JVQiAqLworCisxNToKKwkvKiBNYXNrIGFsbCBpbnRlcnJ1cHRzICovCisJbW92CXIxLCAjMAorCW1jcglwNiwgMCwgcjEsIGMxLCBjMCwgMAlAIElDTVIKKworCS8qIERpc2FibGUgc29mdHdhcmUgYW5kIGRhdGEgYnJlYWtwb2ludHMgKi8KKwltb3YJcjAsICMwCisJbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLworCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KKwltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCisKKwkvKiBFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KKwltb3YJcjAsIzB4ODAwMDAwMDAKKwltY3IJcDE0LDAscjAsYzEwLGMwLDAgIC8qIGRjc3IgKi8KKworZW5kbG93bGV2ZWxfaW5pdDoKKworCW1vdglwYywgbHIKKworCisvKgorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitAIEREUiBjYWxpYnJhdGlvbgorQAorQCAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNhbGlicmF0ZSBEUVMgZGVsYXkgbGluZXMuCitAIE1vbmFoYW5zIHN1cHBvcnRzIHRocmVlIHdheXMgdG8gZG8gaXQuIE9uZSBpcyBzb2Z0d2FyZQorQCBjYWxpYnJhdGlvbi4gVHdvIGlzIGhhcmR3YXJlIGNhbGlicmF0aW9uLiBUaHJlZSBpcyBoeWJyaWQKK0AgY2FsaWJyYXRpb24uCitACitAIFRCRAorQCAtU0MKK2Rkcl9jYWxpYnJhdGlvbjoKKworCUAgQ2FzZSAxOglXcml0ZSB0aGUgY29ycmVjdCBkZWxheSB2YWx1ZSBvbmNlCisJQCBDb25maWd1cmUgRERSX1NDQUwgUmVnaXN0ZXIKKwlsZHIJCXIwLCA9RERSX1NDQUwJCUAgRERSX1NDQUwKK3EJbGRyCQlyMSwgPTB4YWYyZjJmMmYKKwlzdHIJCXIxLCBbcjBdCisJbGRyCQlyMSwgW3IwXQorKi8KKy8qCUAgQ2FzZSAyOglTb2Z0d2FyZSBDYWxpYnJhdGlvbgorCUAgV3JpdGUgdGVzdCBwYXR0ZXJuIHRvIG1lbW9yeQorCWxkcgkJcjUsID0weDBmYWYwZmFmCQlAIERhdGEgUGF0dGVybgorCWxkcgkJcjQsID0weGEwMDAwMDAwCQlAIEREUiByYW0KKwlzdHIJCXI1LCBbcjRdCisKKwltb3YJCXIxLCA9MHgwCQlAIGRlbGF5IGNvdW50CisJbW92CQlyNiwgPTB4MAorCW1vdgkJcjcsID0weDAKK2Rkcl9sb29wMToKKwlhZGQJCXIxLCByMSwgPTB4MQorCWNtcAkJcjEsID0weGYKKwlibGUJCWVuZF9sb29wCisJbW92CQlyMywgcjEKKwltb3YJCXIwLCByMSwgbHNsICMzMAorCW9ycgkJcjMsIHIzLCByMAorCW1vdgkJcjAsIHIxLCBsc2wgIzIyCisJb3JyCQlyMywgcjMsIHIwCisJbW92CQlyMCwgcjEsIGxzbCAjMTQKKwlvcnIJCXIzLCByMywgcjAKKwlvcnIJCXIzLCByMywgPTB4ODAwMDAwMDAKKwlsZHIJCXIyLCA9RERSX1NDQUwKKwlzdHIJCXIzLCBbcjJdCisKKwlsZHIJCXIyLCBbcjRdCisJY21wCQlyMiwgcjUKKwlibmUJCWRkcl9sb29wMQorCW1vdgkJcjYsIHIxCitkZHJfbG9vcDI6CisJYWRkCQlyMSwgcjEsID0weDEKKwljbXAJCXIxLCA9MHhmCisJYmxlCQllbmRfbG9vcAorCW1vdgkJcjMsIHIxCisJbW92CQlyMCwgcjEsIGxzbCAjMzAKKwlvcnIJCXIzLCByMywgcjAKKwltb3YJCXIwLCByMSwgbHNsICMyMgorCW9ycgkJcjMsIHIzLCByMAorCW1vdgkJcjAsIHIxLCBsc2wgIzE0CisJb3JyCQlyMywgcjMsIHIwCisJb3JyCQlyMywgcjMsID0weDgwMDAwMDAwCisJbGRyCQlyMiwgPUREUl9TQ0FMCisJc3RyCQlyMywgW3IyXQorCisJbGRyCQlyMiwgW3I0XQorCWNtcAkJcjIsIHI1CisJYmUJCWRkcl9sb29wMgorCW1vdgkJcjcsIHIyCisKKwlhZGQJCXIzLCByNiwgcjcKKwlsc3IJCXIzLCByMywgPTB4MQorCW1vdgkJcjAsIHIxLCBsc2wgIzMwCisJb3JyCQlyMywgcjMsIHIwCisJbW92CQlyMCwgcjEsIGxzbCAjMjIKKwlvcnIJCXIzLCByMywgcjAKKwltb3YJCXIwLCByMSwgbHNsICMxNAorCW9ycgkJcjMsIHIzLCByMAorCW9ycgkJcjMsIHIzLCA9MHg4MDAwMDAwMAorCWxkcgkJcjIsID1ERFJfU0NBTAorCitlbmRfbG9vcDoKKworCUAgQ2FzZSAzOglIYXJkd2FyZSBDYWxpYnJhdG9pbgorCWxkcgkJcjAsID1ERFJfSENBTAkJQCBERFJfSENBTAorCWxkcgkJcjEsID0weDgwM2ZmYzA3CSAgICBAIHRoZSBvZmZzZXQgaXMgY29ycmVjdD8gLVNDCisJc3RyCQlyMSwgW3IwXQorCXdhaXQJCSM1CisJbGRyCQlyMSwgW3IwXQorCW1vdgkJcGMsIGxyCisqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvZGVsdGEvbmFuZC5jIGIvYm9hcmQvZGVsdGEvbmFuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZGY2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9kZWx0YS9uYW5kLmMKQEAgLTAsMCArMSw1OTAgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDYgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCisjaWZkZWYgQ09ORklHX05FV19OQU5EX0NPREUKKworI2luY2x1ZGUgPG5hbmQuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorCisjaWZkZWYgQ0ZHX0RGQ19ERUJVRzEKKyMgZGVmaW5lIERGQ19ERUJVRzEoZm10LCBhcmdzLi4uKSBwcmludGYoZm10LCAjI2FyZ3MpCisjZWxzZQorIyBkZWZpbmUgREZDX0RFQlVHMShmbXQsIGFyZ3MuLi4pCisjZW5kaWYKKworI2lmZGVmIENGR19ERkNfREVCVUcyCisjIGRlZmluZSBERkNfREVCVUcyKGZtdCwgYXJncy4uLikgcHJpbnRmKGZtdCwgIyNhcmdzKQorI2Vsc2UKKyMgZGVmaW5lIERGQ19ERUJVRzIoZm10LCBhcmdzLi4uKQorI2VuZGlmCisKKyNpZmRlZiBDRkdfREZDX0RFQlVHMworIyBkZWZpbmUgREZDX0RFQlVHMyhmbXQsIGFyZ3MuLi4pIHByaW50ZihmbXQsICMjYXJncykKKyNlbHNlCisjIGRlZmluZSBERkNfREVCVUczKGZtdCwgYXJncy4uLikKKyNlbmRpZgorCisjZGVmaW5lIE1JTih4LCB5KQkJKCh4IDwgeSkgPyB4IDogeSkKKworLyogVGhlc2UgcmVhbGx5IGRvbid0IGJlbG9uZyBoZXJlLCBhcyB0aGV5IGFyZSBzcGVjaWZpYyB0byB0aGUgTkFORCBNb2RlbCAqLworc3RhdGljIHVpbnQ4X3Qgc2Nhbl9mZl9wYXR0ZXJuW10gPSB7IDB4ZmYsIDB4ZmYgfTsKKworc3RhdGljIHN0cnVjdCBuYW5kX2JidF9kZXNjciBkZWx0YV9iYnRfZGVzY3IgPSB7CisJLm9wdGlvbnMgPSAwLAorCS5vZmZzID0gMCwKKwkubGVuID0gMiwKKwkucGF0dGVybiA9IHNjYW5fZmZfcGF0dGVybgorfTsKKworc3RhdGljIHN0cnVjdCBuYW5kX29vYmluZm8gZGVsdGFfb29iID0geworCS51c2VlY2MgPSBNVERfTkFOREVDQ19BVVRPUExfVVNSLCAvKiBNVERfTkFOREVDQ19QTEFDRU9OTFksICovCisJLmVjY2J5dGVzID0gNiwKKwkuZWNjcG9zID0gezIsIDMsIDQsIDUsIDYsIDd9LAorCS5vb2JmcmVlID0geyB7OCwgMn0sIHsxMiwgNH0gfQorfTsKKworCisvKgorICogbm90IHJlcXVpcmVkIGZvciBNb25haGFucyBERkMKKyAqLworc3RhdGljIHZvaWQgZGZjX2h3Y29udHJvbChzdHJ1Y3QgbXRkX2luZm8gKm10ZGluZm8sIGludCBjbWQpCit7CisJcmV0dXJuOworfQorCisjaWYgMAorLyogcmVhZCBkZXZpY2UgcmVhZHkgcGluICovCitzdGF0aWMgaW50IGRmY19kZXZpY2VfcmVhZHkoc3RydWN0IG10ZF9pbmZvICptdGRpbmZvKQoreworCWlmKE5EU1IgJiBORFNSX1JEWSkKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCisvKgorICogV3JpdGUgYnVmIHRvIHRoZSBERkMgQ29udHJvbGxlciBEYXRhIEJ1ZmZlcgorICovCitzdGF0aWMgdm9pZCBkZmNfd3JpdGVfYnVmKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCB1X2NoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwl1bnNpZ25lZCBsb25nIGJ5dGVzX211bHRpID0gbGVuICYgMHhmZmZmZmZmYzsKKwl1bnNpZ25lZCBsb25nIHJlc3QgPSBsZW4gJiAweDM7CisJdW5zaWduZWQgbG9uZyAqbG9uZ19idWY7CisJaW50IGk7CisKKwlERkNfREVCVUcyKCJkZmNfd3JpdGVfYnVmOiB3cml0aW5nICVkIGJ5dGVzIHN0YXJ0aW5nIHdpdGggMHgleC5cbiIsIGxlbiwgKigodW5zaWduZWQgbG9uZyopIGJ1ZikpOworCWlmKGJ5dGVzX211bHRpKSB7CisJCWZvcihpPTA7IGk8Ynl0ZXNfbXVsdGk7IGkrPTQpIHsKKwkJCWxvbmdfYnVmID0gKHVuc2lnbmVkIGxvbmcqKSAmYnVmW2ldOworCQkJTkREQiA9ICpsb25nX2J1ZjsKKwkJfQorCX0KKwlpZihyZXN0KSB7CisJCXByaW50ZigiZGZjX3dyaXRlX2J1ZjogRVJST1IsIHdyaXRpbmcgbm9uIDQtYnl0ZSBhbGlnbmVkIGRhdGEuXG4iKTsKKwl9CisJcmV0dXJuOworfQorCisKKy8qCisgKiBUaGVzZSBmdW5jdGlvbnMgYXJlIHF1aXRlIHByb2JsZW1hdGljIGZvciB0aGUgREZDLiBMdWNraWx5IHRoZXkgYXJlCisgKiBub3QgdXNlZCBpbiB0aGUgY3VycmVudCBuYW5kIGNvZGUsIGV4Y2VwdCBmb3IgbmFuZF9jb21tYW5kLCB3aGljaAorICogd2UndmUgZGVmaW5lZCBvdXIgb3duIGFueXdheS4gVGhlIHByb2JsZW0gaXMsIHRoYXQgd2UgYWx3YXlzIG5lZWQKKyAqIHRvIHdyaXRlIDQgYnl0ZXMgdG8gdGhlIERGQyBEYXRhIEJ1ZmZlciwgYnV0IGluIHRoZXNlIGZ1bmN0aW9ucyB3ZQorICogZG9uJ3Qga25vdyBpZiB0byBidWZmZXIgdGhlIGJ5dGVzL2hhbGYgd29yZHMgdW50aWwgd2UndmUgZ2F0aGVyZWQgNAorICogYnl0ZXMgb3IgaWYgdG8gc2VuZCB0aGVtIHN0cmFpZ2h0IGF3YXkuCisgKgorICogU29sdXRpb246IERvbid0IHVzZSB0aGVzZSB3aXRoIE1vbmEncyBERkMgYW5kIGNvbXBsYWluIGxvdWRseS4KKyAqLworc3RhdGljIHZvaWQgZGZjX3dyaXRlX3dvcmQoc3RydWN0IG10ZF9pbmZvICptdGQsIHUxNiB3b3JkKQoreworCXByaW50ZigiZGZjX3dyaXRlX3dvcmQ6IFdBUk5JTkcsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd29yayB3aXRoIHRoZSBNb25haGFucyBERkMhXG4iKTsKK30KK3N0YXRpYyB2b2lkIGRmY193cml0ZV9ieXRlKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1X2NoYXIgYnl0ZSkKK3sKKwlwcmludGYoImRmY193cml0ZV9ieXRlOiBXQVJOSU5HLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgd2l0aCB0aGUgTW9uYWhhbnMgREZDIVxuIik7Cit9CisKKy8qIFRoZSBvcmlnaW5hbDoKKyAqIHN0YXRpYyB2b2lkIGRmY19yZWFkX2J1ZihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgY29uc3QgdV9jaGFyICpidWYsIGludCBsZW4pCisgKgorICogU2hvdWxkbid0IHRoaXMgYmUgInVfY2hhciAqIGNvbnN0IGJ1ZiIgPworICovCitzdGF0aWMgdm9pZCBkZmNfcmVhZF9idWYoc3RydWN0IG10ZF9pbmZvICptdGQsIHVfY2hhciogY29uc3QgYnVmLCBpbnQgbGVuKQoreworCWludCBpPTAsIGo7CisKKwkvKiB3ZSBoYXZlIHRvIGJlIGNhcmVmdWxsIG5vdCB0byBvdmVyZmxvdyB0aGUgYnVmZmVyIGlmIGxlbiBpcworCSAqIG5vdCBhIG11bHRpcGxlIG9mIDQgKi8KKwl1bnNpZ25lZCBsb25nIGJ5dGVzX211bHRpID0gbGVuICYgMHhmZmZmZmZmYzsKKwl1bnNpZ25lZCBsb25nIHJlc3QgPSBsZW4gJiAweDM7CisJdW5zaWduZWQgbG9uZyAqbG9uZ19idWY7CisKKwlERkNfREVCVUczKCJkZmNfcmVhZF9idWY6IHJlYWRpbmcgJWQgYnl0ZXMuXG4iLCBsZW4pOworCS8qIGlmIHRoZXJlIGFyZSBhbnksIGZpcnN0IGNvcHkgbXVsdGlwbGUgb2YgNCBieXRlcyAqLworCWlmKGJ5dGVzX211bHRpKSB7CisJCWZvcihpPTA7IGk8Ynl0ZXNfbXVsdGk7IGkrPTQpIHsKKwkJCWxvbmdfYnVmID0gKHVuc2lnbmVkIGxvbmcqKSAmYnVmW2ldOworCQkJKmxvbmdfYnVmID0gTkREQjsKKwkJfQorCX0KKworCS8qIC4uLnRoZW4gdGhlIHJlc3QgKi8KKwlpZihyZXN0KSB7CisJCXVuc2lnbmVkIGxvbmcgcmVzdF9kYXRhID0gTkREQjsKKwkJZm9yKGo9MDtqPHJlc3Q7IGorKykKKwkJCWJ1ZltpK2pdID0gKHVfY2hhcikgKChyZXN0X2RhdGE+PmopICYgMHhmZik7CisJfQorCisJcmV0dXJuOworfQorCisvKgorICogcmVhZCBhIHdvcmQuIE5vdCBpbXBsZW1lbnRlZCBhcyBub3QgdXNlZCBpbiBOQU5EIGNvZGUuCisgKi8KK3N0YXRpYyB1MTYgZGZjX3JlYWRfd29yZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwlwcmludGYoImRmY193cml0ZV9ieXRlOiBVTklNUExFTUVOVEVELlxuIik7CisJcmV0dXJuIDA7Cit9CisKKy8qIGdsb2JhbCB2YXIsIHRvbyBiYWQ6IG1rQHRiZDogbW92ZSB0byAtPnByaXYgcG9pbnRlciAqLworc3RhdGljIHVuc2lnbmVkIGxvbmcgcmVhZF9idWYgPSAwOworc3RhdGljIGludCBieXRlc19yZWFkID0gLTE7CisKKy8qCisgKiByZWFkIGEgYnl0ZSBmcm9tIE5EREIgQmVjYXVzZSB3ZSBjYW4gb25seSByZWFkIDQgYnl0ZXMgZnJvbSBORERCIGF0CisgKiBhIHRpbWUsIHdlIGJ1ZmZlciB0aGUgcmVtYWluaW5nIGJ5dGVzLiBUaGUgYnVmZmVyIGlzIHJlc2V0IHdoZW4gYQorICogbmV3IGNvbW1hbmQgaXMgc2VudCB0byB0aGUgY2hpcC4KKyAqCisgKiBXQVJOSU5HOgorICogVGhpcyBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIHJlYWQgc3RhdHVzIGFuZCBpZAorICogYnl0ZXMuIEZvciB0aGVzZSBjb21tYW5kcyBhbHdheXMgOCBieXRlcyBuZWVkIHRvIGJlIHJlYWQgZnJvbQorICogTkREQi4gU28gd2UgcmVhZCBhbmQgZGlzY2FyZCB0aGVzZSBieXRlcyByaWdodCBub3cuIEluIGNhc2UgdGhpcworICogZnVuY3Rpb24gaXMgdXNlZCBmb3IgYW55dGhpbmcgZWxzZSBpbiB0aGUgZnV0dXJlLCB3ZSBtdXN0IGNoZWNrCisgKiB3aGF0IHdhcyB0aGUgbGFzdCBjb21tYW5kIGlzc3VlZCBhbmQgcmVhZCB0aGUgYXBwcm9wcmlhdGUgYW1vdW50IG9mCisgKiBieXRlcyByZXNwZWN0aXZlbHkuCisgKi8KK3N0YXRpYyB1X2NoYXIgZGZjX3JlYWRfYnl0ZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwl1bnNpZ25lZCBjaGFyIGJ5dGU7CisJdW5zaWduZWQgbG9uZyBkdW1teTsKKworCWlmKGJ5dGVzX3JlYWQgPCAwKSB7CisJCXJlYWRfYnVmID0gTkREQjsKKwkJZHVtbXkgPSBORERCOworCQlieXRlc19yZWFkID0gMDsKKwl9CisJYnl0ZSA9ICh1bnNpZ25lZCBjaGFyKSAocmVhZF9idWY+Pig4ICogYnl0ZXNfcmVhZCsrKSk7CisJaWYoYnl0ZXNfcmVhZCA+PSA0KQorCQlieXRlc19yZWFkID0gLTE7CisKKwlERkNfREVCVUcyKCJkZmNfcmVhZF9ieXRlOiBieXRlICV1OiAweCV4IG9mICgweCV4KS5cbiIsIGJ5dGVzX3JlYWQgLSAxLCBieXRlLCByZWFkX2J1Zik7CisJcmV0dXJuIGJ5dGU7Cit9CisKKy8qIGNhbGN1bGF0ZSBkZWx0YSBiZXR3ZWVuIE9TQ1IgdmFsdWVzIHN0YXJ0IGFuZCBub3cgICovCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfZGVsdGEodW5zaWduZWQgbG9uZyBzdGFydCkKK3sKKwl1bnNpZ25lZCBsb25nIGN1ciA9IE9TQ1I7CisKKwlpZihjdXIgPCBzdGFydCkgLyogT1NDUiBvdmVyZmxvd2VkICovCisJCXJldHVybiAoY3VyICsgKHN0YXJ0XjB4ZmZmZmZmZmYpKTsKKwllbHNlCisJCXJldHVybiAoY3VyIC0gc3RhcnQpOworfQorCisvKiBkZWxheSBmdW5jdGlvbiwgdGhpcyBkb2Vzbid0IGJlbG9uZyBoZXJlICovCitzdGF0aWMgdm9pZCB3YWl0X3VzKHVuc2lnbmVkIGxvbmcgdXMpCit7CisJdW5zaWduZWQgbG9uZyBzdGFydCA9IE9TQ1I7CisJdXMgKj0gT1NDUl9DTEtfRlJFUTsKKworCXdoaWxlIChnZXRfZGVsdGEoc3RhcnQpIDwgdXMpIHsKKwkJLyogZG8gbm90aGluZyAqLworCX0KK30KKworc3RhdGljIHZvaWQgZGZjX2NsZWFyX25kZGIodm9pZCkKK3sKKwlORENSICY9IH5ORENSX05EX1JVTjsKKwl3YWl0X3VzKENGR19OQU5EX09USEVSX1RPKTsKK30KKworLyogd2FpdF9ldmVudCB3aXRoIHRpbWVvdXQgKi8KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGRmY193YWl0X2V2ZW50KHVuc2lnbmVkIGxvbmcgZXZlbnQpCit7CisJdW5zaWduZWQgbG9uZyBuZHNyLCB0aW1lb3V0LCBzdGFydCA9IE9TQ1I7CisKKwlpZighZXZlbnQpCisJCXJldHVybiAweGZmMDAwMDAwOworCWVsc2UgaWYoZXZlbnQgJiAoTkRTUl9DUzBfQ01ERCB8IE5EU1JfQ1MwX0JCRCkpCisJCXRpbWVvdXQgPSBDRkdfTkFORF9QUk9HX0VSQVNFX1RPICogT1NDUl9DTEtfRlJFUTsKKwllbHNlCisJCXRpbWVvdXQgPSBDRkdfTkFORF9PVEhFUl9UTyAqIE9TQ1JfQ0xLX0ZSRVE7CisKKwl3aGlsZSgxKSB7CisJCW5kc3IgPSBORFNSOworCQlpZihuZHNyICYgZXZlbnQpIHsKKwkJCU5EU1IgfD0gZXZlbnQ7CisJCQlicmVhazsKKwkJfQorCQlpZihnZXRfZGVsdGEoc3RhcnQpID4gdGltZW91dCkgeworCQkJREZDX0RFQlVHMSgiZGZjX3dhaXRfZXZlbnQ6IFRJTUVPVVQgd2FpdGluZyBmb3IgZXZlbnQ6IDB4JXguXG4iLCBldmVudCk7CisJCQlyZXR1cm4gMHhmZjAwMDAwMDsKKwkJfQorCisJfQorCXJldHVybiBuZHNyOworfQorCisvKiB3ZSBkb24ndCBhbHdheXMgd2FuJ3QgdG8gZG8gdGhpcyAqLworc3RhdGljIHZvaWQgZGZjX25ld19jbWQodm9pZCkKK3sKKwlpbnQgcmV0cnkgPSAwOworCXVuc2lnbmVkIGxvbmcgc3RhdHVzOworCisJd2hpbGUocmV0cnkrKyA8PSBDRkdfTkFORF9TRU5EQ01EX1JFVFJZKSB7CisJCS8qIENsZWFyIE5EU1IgKi8KKwkJTkRTUiA9IDB4RkZGOworCisJCS8qIHNldCBORENSW05EUlVOXSAqLworCQlpZighKE5EQ1IgJiBORENSX05EX1JVTikpCisJCQlORENSIHw9IE5EQ1JfTkRfUlVOOworCisJCXN0YXR1cyA9IGRmY193YWl0X2V2ZW50KE5EU1JfV1JDTURSRVEpOworCisJCWlmKHN0YXR1cyAmIE5EU1JfV1JDTURSRVEpCisJCQlyZXR1cm47CisKKwkJREZDX0RFQlVHMigiZGZjX25ld19jbWQ6IEZBSUxFRCB0byBnZXQgV1JJVEVDTURSRVEsIHJldHJ5OiAlZC5cbiIsIHJldHJ5KTsKKwkJZGZjX2NsZWFyX25kZGIoKTsKKwl9CisJREZDX0RFQlVHMSgiZGZjX25ld19jbWQ6IGdpdmluZyB1cCBhZnRlciAlZCByZXRyaWVzLlxuIiwgcmV0cnkpOworfQorCisvKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciBQcm9ncmFtbSBhbmQgRXJhc2UgT3BlcmF0aW9ucyB0bworICogY2hlY2sgZm9yIHN1Y2Nlc3Mgb3IgZmFpbHVyZSAqLworc3RhdGljIGludCBkZmNfd2FpdChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqdGhpcywgaW50IHN0YXRlKQoreworCXVuc2lnbmVkIGxvbmcgbmRzcj0wLCBldmVudD0wOworCisJLyogbWtAdGJkIHNldCBhcHByb3ByaWF0ZSB0aW1lb3V0cyAqLworCS8qIAlpZiAoc3RhdGUgPT0gRkxfRVJBU0lORykgKi8KKwkvKiAJCXRpbWVvID0gQ0ZHX0haICogNDAwOyAqLworCS8qIAllbHNlICovCisJLyogCQl0aW1lbyA9IENGR19IWiAqIDIwOyAqLworCWlmKHN0YXRlID09IEZMX1dSSVRJTkcpIHsKKwkJZXZlbnQgPSBORFNSX0NTMF9DTUREIHwgTkRTUl9DUzBfQkJEOworCX0gZWxzZSBpZihzdGF0ZSA9PSBGTF9FUkFTSU5HKSB7CisJCWV2ZW50ID0gTkRTUl9DUzBfQ01ERCB8IE5EU1JfQ1MwX0JCRDsKKwl9CisKKwluZHNyID0gZGZjX3dhaXRfZXZlbnQoZXZlbnQpOworCisJaWYoKG5kc3IgJiBORFNSX0NTMF9CQkQpIHx8IChuZHNyICYgMHhmZjAwMDAwMCkpCisJCXJldHVybigweDEpOyAvKiBTdGF0dXMgUmVhZCBlcnJvciAqLworCXJldHVybiAwOworfQorCisvKiBjbWRmdW5jIHNlbmQgY29tbWFuZHMgdG8gdGhlIERGQyAqLworc3RhdGljIHZvaWQgZGZjX2NtZGZ1bmMoc3RydWN0IG10ZF9pbmZvICptdGQsIHVuc2lnbmVkIGNvbW1hbmQsCisJCQlpbnQgY29sdW1uLCBpbnQgcGFnZV9hZGRyKQoreworCS8qIHJlZ2lzdGVyIHN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7ICovCisJdW5zaWduZWQgbG9uZyBuZGNiMD0wLCBuZGNiMT0wLCBuZGNiMj0wLCBldmVudD0wOworCisJLyogY2xlYXIgdGhlIHVnbHkgYnl0ZSByZWFkIGJ1ZmZlciAqLworCWJ5dGVzX3JlYWQgPSAtMTsKKwlyZWFkX2J1ZiA9IDA7CisKKwlzd2l0Y2ggKGNvbW1hbmQpIHsKKwljYXNlIE5BTkRfQ01EX1JFQUQwOgorCQlERkNfREVCVUczKCJkZmNfY21kZnVuYzogTkFORF9DTURfUkVBRDAsIHBhZ2VfYWRkcjogMHgleCwgY29sdW1uOiAweCV4LlxuIiwgcGFnZV9hZGRyLCAoY29sdW1uPj4xKSk7CisJCWRmY19uZXdfY21kKCk7CisJCW5kY2IwID0gKE5BTkRfQ01EX1JFQUQwIHwgKDQ8PDE2KSk7CisJCWNvbHVtbiA+Pj0gMTsgLyogYWRqdXN0IGZvciAxNiBiaXQgYnVzICovCisJCW5kY2IxID0gKCgoY29sdW1uPj4xKSAmIDB4ZmYpIHwKKwkJCSAoKHBhZ2VfYWRkcjw8OCkgJiAweGZmMDApIHwKKwkJCSAoKHBhZ2VfYWRkcjw8OCkgJiAweGZmMDAwMCkgfAorCQkJICgocGFnZV9hZGRyPDw4KSAmIDB4ZmYwMDAwMDApKTsgLyogbWFrZSB0aGlzIDB4MDEwMDAwMDAgPyAqLworCQlldmVudCA9IE5EU1JfUkREUkVROworCQlnb3RvIHdyaXRlX2NtZDsKKwljYXNlIE5BTkRfQ01EX1JFQUQxOgorCQlERkNfREVCVUcyKCJkZmNfY21kZnVuYzogTkFORF9DTURfUkVBRDEgdW5pbXBsZW1lbnRlZCFcbiIpOworCQlnb3RvIGVuZDsKKwljYXNlIE5BTkRfQ01EX1JFQURPT0I6CisJCURGQ19ERUJVRzEoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9SRUFET09CIHVuaW1wbGVtZW50ZWQhXG4iKTsKKwkJZ290byBlbmQ7CisJY2FzZSBOQU5EX0NNRF9SRUFESUQ6CisJCWRmY19uZXdfY21kKCk7CisJCURGQ19ERUJVRzIoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9SRUFESUQuXG4iKTsKKwkJbmRjYjAgPSAoTkFORF9DTURfUkVBRElEIHwgKDMgPDwgMjEpIHwgKDEgPDwgMTYpKTsgLyogYWRkciBjeWNsZXMqLworCQlldmVudCA9IE5EU1JfUkREUkVROworCQlnb3RvIHdyaXRlX2NtZDsKKwljYXNlIE5BTkRfQ01EX1BBR0VQUk9HOgorCQkvKiBzZW50IGFzIGEgbXVsdGljb21tYW5kIGluIE5BTkRfQ01EX1NFUUlOICovCisJCURGQ19ERUJVRzIoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9QQUdFUFJPRyBlbXB0eSBkdWUgdG8gbXVsdGljbWQuXG4iKTsKKwkJZ290byBlbmQ7CisJY2FzZSBOQU5EX0NNRF9FUkFTRTE6CisJCURGQ19ERUJVRzIoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9FUkFTRTEsICBwYWdlX2FkZHI6IDB4JXgsIGNvbHVtbjogMHgleC5cbiIsIHBhZ2VfYWRkciwgKGNvbHVtbj4+MSkpOworCQlkZmNfbmV3X2NtZCgpOworCQluZGNiMCA9ICgweGQwNjAgfCAoMTw8MjUpIHwgKDI8PDIxKSB8ICgxPDwxOSkgfCAoMzw8MTYpKTsKKwkJbmRjYjEgPSAocGFnZV9hZGRyICYgMHgwMGZmZmZmZik7CisJCWdvdG8gd3JpdGVfY21kOworCWNhc2UgTkFORF9DTURfRVJBU0UyOgorCQlERkNfREVCVUcyKCJkZmNfY21kZnVuYzogTkFORF9DTURfRVJBU0UyIGVtcHR5IGR1ZSB0byBtdWx0aWNtZC5cbiIpOworCQlnb3RvIGVuZDsKKwljYXNlIE5BTkRfQ01EX1NFUUlOOgorCQkvKiBzZW5kIFBBR0VfUFJPRyBjb21tYW5kKDB4MTA4MCkgKi8KKwkJZGZjX25ld19jbWQoKTsKKwkJREZDX0RFQlVHMigiZGZjX2NtZGZ1bmM6IE5BTkRfQ01EX1NFUUlOL1BBR0VfUFJPRywgIHBhZ2VfYWRkcjogMHgleCwgY29sdW1uOiAweCV4LlxuIiwgcGFnZV9hZGRyLCAoY29sdW1uPj4xKSk7CisJCW5kY2IwID0gKDB4MTA4MCB8ICgxPDwyNSkgfCAoMTw8MjEpIHwgKDE8PDE5KSB8ICg0PDwxNikpOworCQljb2x1bW4gPj49IDE7IC8qIGFkanVzdCBmb3IgMTYgYml0IGJ1cyAqLworCQluZGNiMSA9ICgoKGNvbHVtbj4+MSkgJiAweGZmKSB8CisJCQkgKChwYWdlX2FkZHI8PDgpICYgMHhmZjAwKSB8CisJCQkgKChwYWdlX2FkZHI8PDgpICYgMHhmZjAwMDApIHwKKwkJCSAoKHBhZ2VfYWRkcjw8OCkgJiAweGZmMDAwMDAwKSk7IC8qIG1ha2UgdGhpcyAweDAxMDAwMDAwID8gKi8KKwkJZXZlbnQgPSBORFNSX1dSRFJFUTsKKwkJZ290byB3cml0ZV9jbWQ7CisJY2FzZSBOQU5EX0NNRF9TVEFUVVM6CisJCURGQ19ERUJVRzIoImRmY19jbWRmdW5jOiBOQU5EX0NNRF9TVEFUVVMuXG4iKTsKKwkJZGZjX25ld19jbWQoKTsKKwkJbmRjYjAgPSBOQU5EX0NNRF9TVEFUVVMgfCAoNDw8MjEpOworCQlldmVudCA9IE5EU1JfUkREUkVROworCQlnb3RvIHdyaXRlX2NtZDsKKwljYXNlIE5BTkRfQ01EX1JFU0VUOgorCQlERkNfREVCVUcyKCJkZmNfY21kZnVuYzogTkFORF9DTURfUkVTRVQuXG4iKTsKKwkJbmRjYjAgPSBOQU5EX0NNRF9SRVNFVCB8ICg1PDwyMSk7CisJCWV2ZW50ID0gTkRTUl9DUzBfQ01ERDsKKwkJZ290byB3cml0ZV9jbWQ7CisJZGVmYXVsdDoKKwkJcHJpbnRrKCJkZmNfY21kZnVuYzogZXJyb3IsIHVuc3VwcG9ydGVkIGNvbW1hbmQuXG4iKTsKKwkJZ290byBlbmQ7CisJfQorCisgd3JpdGVfY21kOgorCU5EQ0IwID0gbmRjYjA7CisJTkRDQjAgPSBuZGNiMTsKKwlORENCMCA9IG5kY2IyOworCisJLyogIHdhaXRfZXZlbnQ6ICovCisJZGZjX3dhaXRfZXZlbnQoZXZlbnQpOworIGVuZDoKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGRmY19ncGlvX2luaXQodm9pZCkKK3sKKwlERkNfREVCVUcyKCJTZXR0aW5nIHVwIERGQyBHUElPJ3MuXG4iKTsKKworCS8qIG5vIGlkZWEgd2hhdCBpcyBkb25lIGhlcmUsIHNlZSB6eWxvbml0ZS5jICovCisJR1BJTzQgPSAweDE7CisKKwlERl9BTEVfV0UxID0gMHgwMDAwMDAwMTsKKwlERl9BTEVfV0UyID0gMHgwMDAwMDAwMTsKKwlERl9uQ1MwID0gMHgwMDAwMDAwMTsKKwlERl9uQ1MxID0gMHgwMDAwMDAwMTsKKwlERl9uV0UgPSAweDAwMDAwMDAxOworCURGX25SRSA9IDB4MDAwMDAwMDE7CisJREZfSU8wID0gMHgwMDAwMDAwMTsKKwlERl9JTzggPSAweDAwMDAwMDAxOworCURGX0lPMSA9IDB4MDAwMDAwMDE7CisJREZfSU85ID0gMHgwMDAwMDAwMTsKKwlERl9JTzIgPSAweDAwMDAwMDAxOworCURGX0lPMTAgPSAweDAwMDAwMDAxOworCURGX0lPMyA9IDB4MDAwMDAwMDE7CisJREZfSU8xMSA9IDB4MDAwMDAwMDE7CisJREZfSU80ID0gMHgwMDAwMDAwMTsKKwlERl9JTzEyID0gMHgwMDAwMDAwMTsKKwlERl9JTzUgPSAweDAwMDAwMDAxOworCURGX0lPMTMgPSAweDAwMDAwMDAxOworCURGX0lPNiA9IDB4MDAwMDAwMDE7CisJREZfSU8xNCA9IDB4MDAwMDAwMDE7CisJREZfSU83ID0gMHgwMDAwMDAwMTsKKwlERl9JTzE1ID0gMHgwMDAwMDAwMTsKKworCURGX25XRSA9IDB4MTkwMTsKKwlERl9uUkUgPSAweDE5MDE7CisJREZfQ0xFX05PRSA9IDB4MTkwMDsKKwlERl9BTEVfV0UxID0gMHgxOTAxOworCURGX0lOVF9SbkIgPSAweDE5MDA7Cit9CisKKy8qCisgKiBCb2FyZC1zcGVjaWZpYyBOQU5EIGluaXRpYWxpemF0aW9uLiBUaGUgZm9sbG93aW5nIG1lbWJlcnMgb2YgdGhlCisgKiBhcmd1bWVudCBhcmUgYm9hcmQtc3BlY2lmaWMgKHBlciBpbmNsdWRlL2xpbnV4L210ZC9uYW5kX25ldy5oKToKKyAqIC0gSU9fQUREUl9SPzogYWRkcmVzcyB0byByZWFkIHRoZSA4IEkvTyBsaW5lcyBvZiB0aGUgZmxhc2ggZGV2aWNlCisgKiAtIElPX0FERFJfVz86IGFkZHJlc3MgdG8gd3JpdGUgdGhlIDggSS9PIGxpbmVzIG9mIHRoZSBmbGFzaCBkZXZpY2UKKyAqIC0gaHdjb250cm9sOiBoYXJkd2FyZXNwZWNpZmljIGZ1bmN0aW9uIGZvciBhY2Nlc2luZyBjb250cm9sLWxpbmVzCisgKiAtIGRldl9yZWFkeTogaGFyZHdhcmVzcGVjaWZpYyBmdW5jdGlvbiBmb3IgIGFjY2VzaW5nIGRldmljZSByZWFkeS9idXN5IGxpbmUKKyAqIC0gZW5hYmxlX2h3ZWNjPzogZnVuY3Rpb24gdG8gZW5hYmxlIChyZXNldCkgIGhhcmR3YXJlIGVjYyBnZW5lcmF0b3IuIE11c3QKKyAqICAgb25seSBiZSBwcm92aWRlZCBpZiBhIGhhcmR3YXJlIEVDQyBpcyBhdmFpbGFibGUKKyAqIC0gZWNjbW9kZTogbW9kZSBvZiBlY2MsIHNlZSBkZWZpbmVzCisgKiAtIGNoaXBfZGVsYXk6IGNoaXAgZGVwZW5kZW50IGRlbGF5IGZvciB0cmFuc2ZlcmluZyBkYXRhIGZyb20gYXJyYXkgdG8KKyAqICAgcmVhZCByZWdzICh0UikKKyAqIC0gb3B0aW9uczogdmFyaW91cyBjaGlwIG9wdGlvbnMuIFRoZXkgY2FuIHBhcnRseSBiZSBzZXQgdG8gaW5mb3JtCisgKiAgIG5hbmRfc2NhbiBhYm91dCBzcGVjaWFsIGZ1bmN0aW9uYWxpdHkuIFNlZSB0aGUgZGVmaW5lcyBmb3IgZnVydGhlcgorICogICBleHBsYW5hdGlvbgorICogTWVtYmVycyB3aXRoIGEgIj8iIHdlcmUgbm90IHNldCBpbiB0aGUgbWVyZ2VkIHRlc3RpbmctTkFORCBicmFuY2gsCisgKiBzbyB0aGV5IGFyZSBub3Qgc2V0IGhlcmUgZWl0aGVyLgorICovCit2b2lkIGJvYXJkX25hbmRfaW5pdChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKQoreworCXVuc2lnbmVkIGxvbmcgdENILCB0Q1MsIHRXSCwgdFdQLCB0UkgsIHRSUCwgdFJQX2hpZ2gsIHRSLCB0V0hSLCB0QVI7CisKKwkvKiBzZXQgdXAgR1BJTyBDb250cm9sIFJlZ2lzdGVycyAqLworCWRmY19ncGlvX2luaXQoKTsKKworCS8qIHR1cm4gb24gdGhlIE5BTkQgQ29udHJvbGxlciBDbG9jayAoMTA0IE1IeiBAIEQwKSAqLworCUNLRU5BIHw9IChDS0VOQV80X05BTkQgfCBDS0VOQV85X1NNQyk7CisKKyN1bmRlZiBDRkdfVElNSU5HX1RJR0hUCisjaWZuZGVmIENGR19USU1JTkdfVElHSFQKKwl0Q0ggPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdENIICogREZDX0NMS19QRVJfVVMpICsgMSksCisJCSAgREZDX01BWF90Q0gpOworCXRDUyA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190Q1MgKiBERkNfQ0xLX1BFUl9VUykgKyAxKSwKKwkJICBERkNfTUFYX3RDUyk7CisJdFdIID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RXSCAqIERGQ19DTEtfUEVSX1VTKSArIDEpLAorCQkgIERGQ19NQVhfdFdIKTsKKwl0V1AgPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdFdQICogREZDX0NMS19QRVJfVVMpICsgMSksCisJCSAgREZDX01BWF90V1ApOworCXRSSCA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190UkggKiBERkNfQ0xLX1BFUl9VUykgKyAxKSwKKwkJICBERkNfTUFYX3RSSCk7CisJdFJQID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RSUCAqIERGQ19DTEtfUEVSX1VTKSArIDEpLAorCQkgIERGQ19NQVhfdFJQKTsKKwl0UiA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190UiAqIERGQ19DTEtfUEVSX1VTKSArIDEpLAorCQkgREZDX01BWF90Uik7CisJdFdIUiA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190V0hSICogREZDX0NMS19QRVJfVVMpICsgMSksCisJCSAgIERGQ19NQVhfdFdIUik7CisJdEFSID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RBUiAqIERGQ19DTEtfUEVSX1VTKSArIDEpLAorCQkgIERGQ19NQVhfdEFSKTsKKyNlbHNlIC8qIHRoaXMgaXMgdGhlIHRpZ2h0IHRpbWluZyAqLworCisJdENIID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RDSCAqIERGQ19DTEtfUEVSX1VTKSksCisJCSAgREZDX01BWF90Q0gpOworCXRDUyA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190Q1MgKiBERkNfQ0xLX1BFUl9VUykpLAorCQkgIERGQ19NQVhfdENTKTsKKwl0V0ggPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdFdIICogREZDX0NMS19QRVJfVVMpKSwKKwkJICBERkNfTUFYX3RXSCk7CisJdFdQID0gTUlOKCgodW5zaWduZWQgbG9uZykgKE5BTkRfVElNSU5HX3RXUCAqIERGQ19DTEtfUEVSX1VTKSksCisJCSAgREZDX01BWF90V1ApOworCXRSSCA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190UkggKiBERkNfQ0xLX1BFUl9VUykpLAorCQkgIERGQ19NQVhfdFJIKTsKKwl0UlAgPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdFJQICogREZDX0NMS19QRVJfVVMpKSwKKwkJICBERkNfTUFYX3RSUCk7CisJdFIgPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdFIgKiBERkNfQ0xLX1BFUl9VUykgLSB0Q0ggLSAyKSwKKwkJIERGQ19NQVhfdFIpOworCXRXSFIgPSBNSU4oKCh1bnNpZ25lZCBsb25nKSAoTkFORF9USU1JTkdfdFdIUiAqIERGQ19DTEtfUEVSX1VTKSAtIHRDSCAtIDIpLAorCQkgICBERkNfTUFYX3RXSFIpOworCXRBUiA9IE1JTigoKHVuc2lnbmVkIGxvbmcpIChOQU5EX1RJTUlOR190QVIgKiBERkNfQ0xLX1BFUl9VUykgLSAyKSwKKwkJICBERkNfTUFYX3RBUik7CisjZW5kaWYgLyogQ0ZHX1RJTUlOR19USUdIVCAqLworCisKKwlERkNfREVCVUcyKCJ0Q0g9JXUsIHRDUz0ldSwgdFdIPSV1LCB0V1A9JXUsIHRSSD0ldSwgdFJQPSV1LCB0Uj0ldSwgdFdIUj0ldSwgdEFSPSV1LlxuIiwgdENILCB0Q1MsIHRXSCwgdFdQLCB0UkgsIHRSUCwgdFIsIHRXSFIsIHRBUik7CisKKwkvKiB0UlAgdmFsdWUgaXMgc3BsaXQgaW4gdGhlIHJlZ2lzdGVyICovCisJaWYodFJQICYgKDEgPDwgNCkpIHsKKwkJdFJQX2hpZ2ggPSAxOworCQl0UlAgJj0gfigxIDw8IDQpOworCX0gZWxzZSB7CisJCXRSUF9oaWdoID0gMDsKKwl9CisKKwlORFRSMENTMCA9ICh0Q0ggPDwgMTkpIHwKKwkJKHRDUyA8PCAxNikgfAorCQkodFdIIDw8IDExKSB8CisJCSh0V1AgPDwgOCkgfAorCQkodFJQX2hpZ2ggPDwgNikgfAorCQkodFJIIDw8IDMpIHwKKwkJKHRSUCA8PCAwKTsKKworCU5EVFIxQ1MwID0gKHRSIDw8IDE2KSB8CisJCSh0V0hSIDw8IDQpIHwKKwkJKHRBUiA8PCAwKTsKKworCS8qIElmIGl0IGRvZXNuJ3Qgd29yayAodW5saWtlbHkpIHRoaW5rIGFib3V0OgorCSAqICAtIGVjYyBlbmFibGUKKwkgKiAgLSBjaGlwIHNlbGVjdCBkb24ndCBjYXJlCisJICogIC0gcmVhZCBpZCBieXRlIGNvdW50CisJICoKKwkgKiBJbnRlbnRpb25hbGx5IGVuYWJsZWQgYnkgbm90IHNldHRpbmcgYml0czoKKwkgKiAgLSBkbWEgKERNQV9FTikKKwkgKiAgLSBwYWdlIHNpemUgPSA1MTIKKwkgKiAgLSBjcyBkb24ndCBjYXJlLCBzZWUgaWYgd2UgY2FuIGVuYWJsZSBsYXRlciEKKwkgKiAgLSByb3cgYWRkcmVzcyBzdGFydCBwb3NpdGlvbiAoYWZ0ZXIgc2Vjb25kIGN5Y2xlKQorCSAqICAtIHBhZ2VzIHBlciBibG9jayA9IDMyCisJICogIC0gTkRfUkRZIDogY2xlYXJzIGNvbW1hbmQgYnVmZmVyCisJICovCisJLyogTkRDUl9OQ1NYIHwJCS9cKiBDaGlwIHNlbGVjdCBidXN5IGRvbid0IGNhcmUgKlwvICovCisKKwlORENSID0gKE5EQ1JfU1BBUkVfRU4gfAkJLyogdXNlIHRoZSBzcGFyZSBhcmVhICovCisJCU5EQ1JfRFdJRFRIX0MgfAkJLyogMTZiaXQgREZDIGRhdGEgYnVzIHdpZHRoICAqLworCQlORENSX0RXSURUSF9NIHwJCS8qIDE2IGJpdCBGbGFzaCBkZXZpY2UgZGF0YSBidXMgd2lkdGggKi8KKwkJKDIgPDwgMTYpIHwJCS8qIHJlYWQgaWQgY291bnQgPSA3ID8/Pz8gbWtAdGJkICovCisJCU5EQ1JfTkRfQVJCX0VOIHwJLyogZW5hYmxlIGJ1cyBhcmJpdGVyICovCisJCU5EQ1JfUkRZTSB8CQkvKiBmbGFzaCBkZXZpY2UgcmVhZHkgaXIgbWFza2VkICovCisJCU5EQ1JfQ1MwX1BBR0VETSB8CS8qIE5EX25DU3ggcGFnZSBkb25lIGlyIG1hc2tlZCAqLworCQlORENSX0NTMV9QQUdFRE0gfAorCQlORENSX0NTMF9DTURETSB8CS8qIE5EX0NTeCBjb21tYW5kIGRvbmUgaXIgbWFza2VkICovCisJCU5EQ1JfQ1MxX0NNRERNIHwKKwkJTkRDUl9DUzBfQkJETSB8CQkvKiBORF9DU3ggYmFkIGJsb2NrIGRldGVjdCBpciBtYXNrZWQgKi8KKwkJTkRDUl9DUzFfQkJETSB8CisJCU5EQ1JfREJFUlJNIHwJCS8qIGRvdWJsZSBiaXQgZXJyb3IgaXIgbWFza2VkICovCisJCU5EQ1JfU0JFUlJNIHwJCS8qIHNpbmdsZSBiaXQgZXJyb3IgaXIgbWFza2VkICovCisJCU5EQ1JfV1JEUkVRTSB8CQkvKiB3cml0ZSBkYXRhIHJlcXVlc3QgaXIgbWFza2VkICovCisJCU5EQ1JfUkREUkVRTSB8CQkvKiByZWFkIGRhdGEgcmVxdWVzdCBpciBtYXNrZWQgKi8KKwkJTkRDUl9XUkNNRFJFUU0pOwkvKiB3cml0ZSBjb21tYW5kIHJlcXVlc3QgaXIgbWFza2VkICovCisKKworCS8qIHdhaXQgMTAgdXMgZHVlIHRvIGNtZCBidWZmZXIgY2xlYXIgcmVzZXQgKi8KKwkvKiAJd2FpdCgxMCk7ICovCisKKworCW5hbmQtPmh3Y29udHJvbCA9IGRmY19od2NvbnRyb2w7CisvKiAJbmFuZC0+ZGV2X3JlYWR5ID0gZGZjX2RldmljZV9yZWFkeTsgKi8KKwluYW5kLT5lY2Ntb2RlID0gTkFORF9FQ0NfU09GVDsKKwluYW5kLT5jaGlwX2RlbGF5ID0gTkFORF9ERUxBWV9VUzsKKwluYW5kLT5vcHRpb25zID0gTkFORF9CVVNXSURUSF8xNjsKKwluYW5kLT53YWl0ZnVuYyA9IGRmY193YWl0OworCW5hbmQtPnJlYWRfYnl0ZSA9IGRmY19yZWFkX2J5dGU7CisJbmFuZC0+d3JpdGVfYnl0ZSA9IGRmY193cml0ZV9ieXRlOworCW5hbmQtPnJlYWRfd29yZCA9IGRmY19yZWFkX3dvcmQ7CisJbmFuZC0+d3JpdGVfd29yZCA9IGRmY193cml0ZV93b3JkOworCW5hbmQtPnJlYWRfYnVmID0gZGZjX3JlYWRfYnVmOworCW5hbmQtPndyaXRlX2J1ZiA9IGRmY193cml0ZV9idWY7CisKKwluYW5kLT5jbWRmdW5jID0gZGZjX2NtZGZ1bmM7CisJbmFuZC0+YXV0b29vYiA9ICZkZWx0YV9vb2I7CisJbmFuZC0+YmFkYmxvY2tfcGF0dGVybiA9ICZkZWx0YV9iYnRfZGVzY3I7Cit9CisKKyNlbHNlCisgI2Vycm9yICJVLUJvb3QgbGVnYWN5IE5BTkQgc3VwcG9ydCBub3QgYXZhaWxhYmxlIGZvciBNb25haGFucyBERkMuIgorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL2RlbHRhL3UtYm9vdC5sZHMgYi9ib2FyZC9kZWx0YS91LWJvb3QubGRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMTAyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9kZWx0YS91LWJvb3QubGRzCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDAKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworT1VUUFVUX0ZPUk1BVCgiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1saXR0bGVhcm0iKQorT1VUUFVUX0FSQ0goYXJtKQorRU5UUlkoX3N0YXJ0KQorU0VDVElPTlMKK3sKKwkuID0gMHgwMDAwMDAwMDsKKworCS4gPSBBTElHTig0KTsKKwkudGV4dCAgICAgIDoKKwl7CisJICBjcHUvcHhhL3N0YXJ0Lm8JKC50ZXh0KQorCSAgKigudGV4dCkKKwl9CisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9kYXRhKSB9CisKKwkuID0gQUxJR04oNCk7CisJLmRhdGEgOiB7ICooLmRhdGEpIH0KKworCS4gPSBBTElHTig0KTsKKwkuZ290IDogeyAqKC5nb3QpIH0KKworCS4gPSAuOworCV9fdV9ib290X2NtZF9zdGFydCA9IC47CisJLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KKwlfX3VfYm9vdF9jbWRfZW5kID0gLjsKKworCS4gPSBBTElHTig0KTsKKwlfX2Jzc19zdGFydCA9IC47CisJLmJzcyA6IHsgKiguYnNzKSB9CisJX2VuZCA9IC47Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvYXNoNDA1L2FzaDQwNS5jIGIvYm9hcmQvZXNkL2FzaDQwNS9hc2g0MDUuYwppbmRleCAwM2FlN2ZkLi44NGZjM2EwIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvYXNoNDA1L2FzaDQwNS5jCisrKyBiL2JvYXJkL2VzZC9hc2g0MDUvYXNoNDA1LmMKQEAgLTIzOSw3ICsyMzksNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKLSNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgogZXh0ZXJuIHN0cnVjdCBuYW5kX2NoaXAgbmFuZF9kZXZfZGVzY1tDRkdfTUFYX05BTkRfREVWSUNFXTsKIAogdm9pZCBuYW5kX2luaXQodm9pZCkKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9hc2g0MDUvY29uZmlnLm1rIGIvYm9hcmQvZXNkL2FzaDQwNS9jb25maWcubWsKaW5kZXggMWQ3NDNhOS4uM2NmNWRkOCAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2FzaDQwNS9jb25maWcubWsKKysrIGIvYm9hcmQvZXNkL2FzaDQwNS9jb25maWcubWsKQEAgLTI2LDMgKzI2LDYgQEAKICMKIAogVEVYVF9CQVNFID0gMHhGRkZDMDAwMAorCisjIENvbXBpbGUgdGhlIGxlZ2FjeSBOQU5EIGNvZGUgKENGR19OQU5EX0xFR0FDWSBtdXN0IGJlIGRlZmluZWQpCitCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jbXM3MDAvY21zNzAwLmMgYi9ib2FyZC9lc2QvY21zNzAwL2NtczcwMC5jCmluZGV4IDY0OTYxOWQuLmUyODNhOTIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jbXM3MDAvY21zNzAwLmMKKysrIGIvYm9hcmQvZXNkL2NtczcwMC9jbXM3MDAuYwpAQCAtMTE0LDcgKzExNCw3IEBACiAKIGludCBjaGVja2JvYXJkICh2b2lkKQogewotCXVuc2lnbmVkIGNoYXIgc3RyWzY0XTsKKwljaGFyIHN0cls2NF07CiAJaW50IGZsYXNoY250OwogCWludCBkZWxheTsKIAl2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICpsZWRfcmVnID0gKHVuc2lnbmVkIGNoYXIgKikoKHVsb25nKUNGR19QTERfQkFTRSArIDB4MTAwMCk7CkBAIC0yMzgsNyArMjM4LDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCi0jaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZF9sZWdhY3kuaD4KIGV4dGVybiBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbQ0ZHX01BWF9OQU5EX0RFVklDRV07CiAKIHZvaWQgbmFuZF9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY21zNzAwL2NvbmZpZy5tayBiL2JvYXJkL2VzZC9jbXM3MDAvY29uZmlnLm1rCmluZGV4IDVjM2MwMWMuLjBjNTZjNDAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jbXM3MDAvY29uZmlnLm1rCisrKyBiL2JvYXJkL2VzZC9jbXM3MDAvY29uZmlnLm1rCkBAIC0yNiwzICsyNiw2IEBACiAjCiAKIFRFWFRfQkFTRSA9IDB4RkZGQzAwMDAKKworIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQorQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY29tbW9uL2F1dG9fdXBkYXRlLmMgYi9ib2FyZC9lc2QvY29tbW9uL2F1dG9fdXBkYXRlLmMKaW5kZXggZDQ4ZTk3Mi4uY2FkODIxMSAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NvbW1vbi9hdXRvX3VwZGF0ZS5jCisrKyBiL2JvYXJkL2VzZC9jb21tb24vYXV0b191cGRhdGUuYwpAQCAtMjMsMTAgKzIzLDE1IEBACiAgKi8KIAogI2luY2x1ZGUgPGNvbW1vbi5oPgorCisjaWZuZGVmIENGR19OQU5EX0xFR0FDWQorI2Vycm9yIENGR19OQU5EX0xFR0FDWSBub3QgZGVmaW5lZCBpbiBhIGZpbGUgdXNpbmcgdGhlIGxlZ2FjeSBOQU5EIHN1cHBvcnQhCisjZW5kaWYKKwogI2luY2x1ZGUgPGNvbW1hbmQuaD4KICNpbmNsdWRlIDxpbWFnZS5oPgogI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgogI2luY2x1ZGUgPGZhdC5oPgogCiAjaW5jbHVkZSAiYXV0b191cGRhdGUuaCIKQEAgLTc2LDkgKzgxLDkgQEAKICNkZWZpbmUgTkFORFJXX0pGRlMyCTB4MDIKICNkZWZpbmUgTkFORFJXX0pGRlMyX1NLSVAJMHgwNAogZXh0ZXJuIHN0cnVjdCBuYW5kX2NoaXAgbmFuZF9kZXZfZGVzY1tdOwotZXh0ZXJuIGludCBuYW5kX3J3KHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIGludCBjbWQsIHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbiwKK2V4dGVybiBpbnQgbmFuZF9sZWdhY3lfcncoc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgaW50IGNtZCwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuLAogCQkgICBzaXplX3QgKiByZXRsZW4sIHVfY2hhciAqIGJ1Zik7Ci1leHRlcm4gaW50IG5hbmRfZXJhc2Uoc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgc2l6ZV90IG9mcywgc2l6ZV90IGxlbiwgaW50IGNsZWFuKTsKK2V4dGVybiBpbnQgbmFuZF9sZWdhY3lfZXJhc2Uoc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgc2l6ZV90IG9mcywgc2l6ZV90IGxlbiwgaW50IGNsZWFuKTsKICNlbmRpZiAvKiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKSAqLwogCiBleHRlcm4gYmxvY2tfZGV2X2Rlc2NfdCBpZGVfZGV2X2Rlc2NbQ0ZHX0lERV9NQVhERVZJQ0VdOwpAQCAtMjU5LDkgKzI2NCw5IEBACiAJCX0gZWxzZSB7CiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKIAkJCXByaW50ZigiVXBkYXRpbmcgTkFORCBGTEFTSCB3aXRoIGltYWdlICVzXG4iLCBhdV9pbWFnZVtpXS5uYW1lKTsKLQkJCWRlYnVnICgibmFuZF9lcmFzZSglbHgsICVseCk7XG4iLCBzdGFydCwgZW5kKTsKLQkJCXJjID0gbmFuZF9lcmFzZSAobmFuZF9kZXZfZGVzYywgc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSwgMCk7Ci0JCQlkZWJ1ZyAoIm5hbmRfZXJhc2UgcmV0dXJuZWQgJXhcbiIsIHJjKTsKKwkJCWRlYnVnICgibmFuZF9sZWdhY3lfZXJhc2UoJWx4LCAlbHgpO1xuIiwgc3RhcnQsIGVuZCk7CisJCQlyYyA9IG5hbmRfbGVnYWN5X2VyYXNlIChuYW5kX2Rldl9kZXNjLCBzdGFydCwgZW5kIC0gc3RhcnQgKyAxLCAwKTsKKwkJCWRlYnVnICgibmFuZF9sZWdhY3lfZXJhc2UgcmV0dXJuZWQgJXhcbiIsIHJjKTsKICNlbmRpZgogCQl9CiAKQEAgLTI4MywxMyArMjg4LDEzIEBACiAJCSAqLwogCQlpZiAoYXVfaW1hZ2VbaV0udHlwZSAhPSBBVV9OQU5EKSB7CiAJCQlkZWJ1ZyAoImZsYXNoX3dyaXRlKCVwLCAlbHggJXgpXG4iLCBhZGRyLCBzdGFydCwgbmJ5dGVzKTsKLQkJCXJjID0gZmxhc2hfd3JpdGUoKHVjaGFyICopYWRkciwgc3RhcnQsIG5ieXRlcyk7CisJCQlyYyA9IGZsYXNoX3dyaXRlKChjaGFyICopYWRkciwgc3RhcnQsIG5ieXRlcyk7CiAJCX0gZWxzZSB7CiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKLQkJCWRlYnVnICgibmFuZF9ydyglcCwgJWx4ICV4KVxuIiwgYWRkciwgc3RhcnQsIG5ieXRlcyk7Ci0JCQlyYyA9IG5hbmRfcncobmFuZF9kZXZfZGVzYywgTkFORFJXX1dSSVRFIHwgTkFORFJXX0pGRlMyLAorCQkJZGVidWcgKCJuYW5kX2xlZ2FjeV9ydyglcCwgJWx4ICV4KVxuIiwgYWRkciwgc3RhcnQsIG5ieXRlcyk7CisJCQlyYyA9IG5hbmRfbGVnYWN5X3J3KG5hbmRfZGV2X2Rlc2MsIE5BTkRSV19XUklURSB8IE5BTkRSV19KRkZTMiwKIAkJCQkgICAgIHN0YXJ0LCBuYnl0ZXMsIChzaXplX3QgKikmdG90YWwsICh1Y2hhciAqKWFkZHIpOwotCQkJZGVidWcgKCJuYW5kX3J3OiByZXQ9JXggdG90YWw9JWQgbmJ5dGVzPSVkXG4iLCByYywgdG90YWwsIG5ieXRlcyk7CisJCQlkZWJ1ZyAoIm5hbmRfbGVnYWN5X3J3OiByZXQ9JXggdG90YWw9JWQgbmJ5dGVzPSVkXG4iLCByYywgdG90YWwsIG5ieXRlcyk7CiAjZW5kaWYKIAkJfQogCQlpZiAocmMgIT0gMCkgewpAQCAtMzA0LDcgKzMwOSw3IEBACiAJCQlyYyA9IGNyYzMyICgwLCAodWNoYXIgKikoc3RhcnQgKyBvZmYpLCBudG9obChoZHItPmloX3NpemUpKTsKIAkJfSBlbHNlIHsKICNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQotCQkJcmMgPSBuYW5kX3J3KG5hbmRfZGV2X2Rlc2MsIE5BTkRSV19SRUFEIHwgTkFORFJXX0pGRlMyIHwgTkFORFJXX0pGRlMyX1NLSVAsCisJCQlyYyA9IG5hbmRfbGVnYWN5X3J3KG5hbmRfZGV2X2Rlc2MsIE5BTkRSV19SRUFEIHwgTkFORFJXX0pGRlMyIHwgTkFORFJXX0pGRlMyX1NLSVAsCiAJCQkJICAgICBzdGFydCwgbmJ5dGVzLCAoc2l6ZV90ICopJnRvdGFsLCAodWNoYXIgKilhZGRyKTsKIAkJCXJjID0gY3JjMzIgKDAsICh1Y2hhciAqKShhZGRyICsgb2ZmKSwgbnRvaGwoaGRyLT5paF9zaXplKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jb21tb24vY21kX2xvYWRwY2kuYyBiL2JvYXJkL2VzZC9jb21tb24vY21kX2xvYWRwY2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjc5NmZmCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZXNkL2NvbW1vbi9jbWRfbG9hZHBjaS5jCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1CisgKiBNYXR0aGlhcyBGdWNocywgZXNkIEdtYkggR2VybWFueSwgbWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbQorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9CU1ApCisKK2V4dGVybiBpbnQgZG9fYm9vdG0gKGNtZF90YmxfdCAqLCBpbnQsIGludCwgY2hhciAqW10pOworZXh0ZXJuIGludCBkb19hdXRvc2NyaXB0IChjbWRfdGJsX3QgKiwgaW50LCBpbnQsIGNoYXIgKltdKTsKKworI2RlZmluZSBBRERSTUFTSyAweGZmZmZmMDAwCisKKy8qCisgKiBDb21tYW5kIGxvYWRwY2k6IHdhaXQgZm9yIHNpZ25hbCBmcm9tIGhvc3QgYW5kIGJvb3QgaW1hZ2UuCisgKi8KK2ludCBkb19sb2FkcGNpKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXVuc2lnbmVkIGludCAqcHRyID0gMDsKKwlpbnQgY291bnQgPSAwOworCWludCBjb3VudDIgPSAwOworCWNoYXIgYWRkclsxNl07CisJY2hhciBzdHJbXSA9ICJcXHwvLSI7CisJY2hhciAqbG9jYWxfYXJnc1syXTsKKworCXdoaWxlKDEpIHsKKwkJLyoKKwkJICogTWFyayBzeW5jIGFkZHJlc3MKKwkJICovCisJCXB0ciA9IDA7CisJCW1lbXNldChwdHIsIDAsIDB4MjApOworCisJCSpwdHIgPSAweGZmZmZmZmZmOworCQlwdXRzKCJcbldhaXRpbmcgZm9yIGFjdGlvbiBmcm9tIHBjaSBob3N0IC0iKTsKKworCQkvKgorCQkgKiBXYWl0IGZvciBob3N0IHRvIHdyaXRlIHRoZSBzdGFydCBhZGRyZXNzCisJCSAqLworCQl3aGlsZSAoKnB0ciA9PSAweGZmZmZmZmZmKSB7CisJCQljb3VudCsrOworCQkJaWYgKCEoY291bnQgJSAxMDApKSB7CisJCQkJY291bnQyKys7CisJCQkJcHV0YygweDA4KTsgLyogYmFja3NwYWNlICovCisJCQkJcHV0YyhzdHJbY291bnQyICUgNF0pOworCQkJfQorCisJCQkvKiBBYm9ydCBpZiBjdHJsLWMgd2FzIHByZXNzZWQgKi8KKwkJCWlmIChjdHJsYygpKSB7CisJCQkJcHV0cygiXG5BYm9ydFxuIik7CisJCQkJcmV0dXJuIDA7CisJCQl9CisKKwkJCXVkZWxheSgxMDAwKTsKKwkJfQorCisJCXByaW50ZigiXG5Hb3QgYm9vdGNvZGUgJTA4eDogIiwgKnB0cik7CisJCXNwcmludGYoYWRkciwgIiUwOHgiLCAqcHRyICYgQUREUk1BU0spOworCisJCXN3aXRjaCAoKnB0ciAmIH5BRERSTUFTSykgeworCQljYXNlIDA6CisJCQkvKgorCQkJICogQm9vdCBpbWFnZSB2aWEgYm9vdG0KKwkJCSAqLworCQkJcHJpbnRmKCJib290aW5nIGltYWdlIGF0IGFkZHIgMHglcyAuLi5cbiIsIGFkZHIpOworCQkJc2V0ZW52KCJsb2FkYWRkciIsIGFkZHIpOworCisJCQlkb19ib290bSAoY21kdHAsIDAsIDAsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSAxOgorCQkJLyoKKwkJCSAqIEJvb3QgaW1hZ2UgdmlhIGF1dG9zY3IKKwkJCSAqLworCQkJcHJpbnRmKCJleGVjdXRpbmcgc2NyaXB0IGF0IGFkZHIgMHglcyAuLi5cbiIsIGFkZHIpOworCisJCQlsb2NhbF9hcmdzWzBdID0gYWRkcjsKKwkJCWxvY2FsX2FyZ3NbMV0gPSBOVUxMOworCQkJZG9fYXV0b3NjcmlwdChjbWR0cCwgMCwgMSwgbG9jYWxfYXJncyk7CisJCQlicmVhazsKKworCQljYXNlIDI6CisJCQkvKgorCQkJICogQ2FsbCBydW5fY21kCisJCQkgKi8KKwkJCXByaW50ZigicnVubmluZyBjb21tYW5kIGF0IGFkZHIgMHglcyAuLi5cbiIsIGFkZHIpOworCQkJcnVuX2NvbW1hbmQgKChjaGFyKikoKnB0ciAmIEFERFJNQVNLKSwgMCk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJcHJpbnRmKCJ1bmhhbmRsZWQgYm9vdCBtZXRob2RcbiIpOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK1VfQk9PVF9DTUQoCisJbG9hZHBjaSwJMSwJMSwJZG9fbG9hZHBjaSwKKwkibG9hZHBjaSAtIFdhaXQgZm9yIHBjaSBib290Y21kIGFuZCBib290IGl0XG4iLAorCU5VTEwKKwkpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jb21tb24vbGNkLmMgYi9ib2FyZC9lc2QvY29tbW9uL2xjZC5jCmluZGV4IDBlZGMwODMuLjE5NjE3MWMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jb21tb24vbGNkLmMKKysrIGIvYm9hcmQvZXNkL2NvbW1vbi9sY2QuYwpAQCAtMjI5LDYgKzIyOSw5IEBACiAJLyoKIAkgKiBEZXRlY3QgZXBzb24KIAkgKi8KKwlsY2RfcmVnWzBdID0gMHgwMDsKKwlsY2RfcmVnWzFdID0gMHgwMDsKKwogCWlmIChsY2RfcmVnWzBdID09IDB4MWMpIHsKIAkJLyoKIAkJICogQmlnIGVwc29uIGRldGVjdGVkCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTJkcC9NYWtlZmlsZSBiL2JvYXJkL2VzZC9jcGNpMmRwL01ha2VmaWxlCmluZGV4IGE2MDQ5NWEuLjg4YjBhZTMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpMmRwL01ha2VmaWxlCisrKyBiL2JvYXJkL2VzZC9jcGNpMmRwL01ha2VmaWxlCkBAIC0yNSw3ICsyNSw3IEBACiAKIExJQgk9IGxpYiQoQk9BUkQpLmEKIAotT0JKUwk9ICQoQk9BUkQpLm8gZmxhc2gubyAuLi9jb21tb24vbWlzYy5vCitPQkpTCT0gJChCT0FSRCkubyBmbGFzaC5vIC4uL2NvbW1vbi9taXNjLm8gLi4vY29tbW9uL2NtZF9sb2FkcGNpLm8KIAogJChMSUIpOgkkKE9CSlMpICQoU09CSlMpCiAJJChBUikgY3J2ICRAICQoT0JKUykKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jcGNpMmRwL2NwY2kyZHAuYyBiL2JvYXJkL2VzZC9jcGNpMmRwL2NwY2kyZHAuYwppbmRleCBkZjEwYzBlLi4xYTI3Y2EwIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY3BjaTJkcC9jcGNpMmRwLmMKKysrIGIvYm9hcmQvZXNkL2NwY2kyZHAvY3BjaTJkcC5jCkBAIC0zMSwxNyArMzEsMTUgQEAKIAl1bnNpZ25lZCBsb25nIGNudHJsMFJlZzsKIAogCS8qCi0JICogU2V0dXAgR1BJTyBwaW5zIChDUzQrQ1M3IGFzIEdQSU8pCisJICogU2V0dXAgR1BJTyBwaW5zCiAJICovCiAJY250cmwwUmVnID0gbWZkY3IoY250cmwwKTsKLQltdGRjcihjbnRybDAsIGNudHJsMFJlZyB8IDB4MDA5MDAwMDApOworCW10ZGNyKGNudHJsMCwgY250cmwwUmVnIHwgKChDRkdfRUVQUk9NX1dQIHwgQ0ZHX1BCX0xFRCB8IENGR19TRUxGX1JTVCB8IENGR19JTlRBX0ZBS0UpIDw8IDUpKTsKIAogCS8qIHNldCBvdXRwdXQgcGlucyB0byBoaWdoICovCi0Jb3V0MzIoR1BJTzBfT1IsCSBDRkdfSU5UQV9GQUtFIHwgQ0ZHX0VFUFJPTV9XUCB8IENGR19QQl9MRUQpOwotCS8qIElOVEEjIGlzIG9wZW4gZHJhaW4gKi8KLQlvdXQzMihHUElPMF9PRFIsIENGR19JTlRBX0ZBS0UpOwotCS8qIHNldHVwIGZvciBvdXRwdXQgKi8KLQlvdXQzMihHUElPMF9UQ1IsIENGR19JTlRBX0ZBS0UgfCBDRkdfRUVQUk9NX1dQKTsKKwlvdXQzMihHUElPMF9PUiwgIENGR19FRVBST01fV1ApOworCS8qIHNldHVwIGZvciBvdXRwdXQgKExFRD1vZmYpICovCisJb3V0MzIoR1BJTzBfVENSLCBDRkdfRUVQUk9NX1dQIHwgQ0ZHX1BCX0xFRCk7CiAKIAkvKgogCSAqIElSUSAwLTE1ICA0MDVHUCBpbnRlcm5hbGx5IGdlbmVyYXRlZDsgYWN0aXZlIGhpZ2g7IGxldmVsIHNlbnNpdGl2ZQpAQCAtMTMwLDE2ICsxMjgsNiBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLWludCB0ZXN0ZHJhbSAodm9pZCkKLXsKLQkvKiBUT0RPOiBYWFggWFhYIFhYWCAqLwotCXByaW50ZiAoInRlc3Q6IDY0IE1CIC0gb2tcbiIpOwotCi0JcmV0dXJuICgwKTsKLX0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCiAjaWYgZGVmaW5lZChDRkdfRUVQUk9NX1dSRU4pCiAvKiBJbnB1dDogPGRldl9hZGRyPiAgSTJDIGFkZHJlc3Mgb2YgRUVQUk9NIGRldmljZSB0byBlbmFibGUuCiAgKgkgICA8c3RhdGU+ICAgICAtMTogZGVsaXZlciBjdXJyZW50IHN0YXRlCkBAIC0yMDcsOCArMTk1LDggQEAKIH0KIAogVV9CT09UX0NNRCgKLQkgICBlZXB3cmVuLAkyLAkwLAlkb19lZXBfd3JlbiwKLQkgICAiZWVwd3JlbiAtIEVuYWJsZSAvIGRpc2FibGUgLyBxdWVyeSBFRVBST00gd3JpdGUgYWNjZXNzXG4iLAotCSAgIE5VTEwKLQkgICApOworCWVlcHdyZW4sCTIsCTAsCWRvX2VlcF93cmVuLAorCSJlZXB3cmVuIC0gRW5hYmxlIC8gZGlzYWJsZSAvIHF1ZXJ5IEVFUFJPTSB3cml0ZSBhY2Nlc3NcbiIsCisJTlVMTAorCSk7CiAjZW5kaWYgLyogI2lmIGRlZmluZWQoQ0ZHX0VFUFJPTV9XUkVOKSAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NwY2k0MDUvY29uZmlnLm1rIGIvYm9hcmQvZXNkL2NwY2k0MDUvY29uZmlnLm1rCmluZGV4IDBiZTQ1YzcuLmNlZmY0YzQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNDA1L2NvbmZpZy5taworKysgYi9ib2FyZC9lc2QvY3BjaTQwNS9jb25maWcubWsKQEAgLTM4LDMgKzM4LDYgQEAKIGVuZGlmCiBlbmRpZgogZW5kaWYKKworIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQorQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTc1MC9NYWtlZmlsZSBiL2JvYXJkL2VzZC9jcGNpNzUwL01ha2VmaWxlCmluZGV4IDA0ODY3MjkuLmNkMzhiMmQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNzUwL01ha2VmaWxlCisrKyBiL2JvYXJkL2VzZC9jcGNpNzUwL01ha2VmaWxlCkBAIC0yOSw3ICsyOSw3IEBACiAKIE9CSlMJPSAkKEJPQVJEKS5vIHNlcmlhbC5vIC4uLy4uL01hcnZlbGwvY29tbW9uL21lbW9yeS5vIHBjaS5vIFwKIAkgIG12X2V0aC5vICBtcHNjLm8gaTJjLm8gXAotCSAgc2RyYW1faW5pdC5vIHN0cmF0YWZsYXNoLm8gaWRlLm8KKwkgIHNkcmFtX2luaXQubyBpZGUubwogCiAkKExJQik6CS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQogCSQoQVIpIGNydiAkQCAkKE9CSlMpICQoU09CSlMpCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTc1MC9jcGNpNzUwLmMgYi9ib2FyZC9lc2QvY3BjaTc1MC9jcGNpNzUwLmMKaW5kZXggZTRiMDYyYi4uZGJlZDU5NyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NwY2k3NTAvY3BjaTc1MC5jCisrKyBiL2JvYXJkL2VzZC9jcGNpNzUwL2NwY2k3NTAuYwpAQCAtNTYsNiArNTYsNyBAQAogCiBleHRlcm4gdm9pZCBmbHVzaF9kYXRhX2NhY2hlICh2b2lkKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfbDFfaW5zdHJ1Y3Rpb25fY2FjaGUgKHZvaWQpOworZXh0ZXJuIGZsYXNoX2luZm9fdCBmbGFzaF9pbmZvW107CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMzYzLDYgKzM2NCwyMSBAQAogCS8qIGRpc2FibGUgdGhlIGRjYWNoZSBhbmQgTU1VICovCiAJZGNhY2hlX2xvY2sgKCk7CiAjZW5kaWYKKwlpZiAoZmxhc2hfaW5mb1szXS5zaXplIDwgQ0ZHX0ZMQVNIX0lOQ1JFTUVOVCkgeworCSAgICAgICAgdW5zaWduZWQgaW50IGZsYXNoX29mZnNldDsKKwkJdW5zaWduZWQgaW50IGw7CisKKwkJZmxhc2hfb2Zmc2V0ID0gIENGR19GTEFTSF9JTkNSRU1FTlQgLSBmbGFzaF9pbmZvWzNdLnNpemU7CisJCWZvciAobCA9IDA7IGwgPCBDRkdfTUFYX0ZMQVNIX1NFQ1Q7IGwrKykgeworCQkgICAgICAgIGlmIChmbGFzaF9pbmZvWzNdLnN0YXJ0W2xdICE9IDApIHsKKwkJCSAgICAgIGZsYXNoX2luZm9bM10uc3RhcnRbbF0gKz0gZmxhc2hfb2Zmc2V0OworCQkJfQorCQl9CisJCWZsYXNoX3Byb3RlY3QgKEZMQUdfUFJPVEVDVF9TRVQsCisJCQkgICAgICAgQ0ZHX01PTklUT1JfQkFTRSwKKwkJCSAgICAgICBDRkdfTU9OSVRPUl9CQVNFICsgbW9uaXRvcl9mbGFzaF9sZW4gIC0gMSwKKwkJCSAgICAgICAmZmxhc2hfaW5mb1szXSk7CisJfQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTc1MC9wY2kuYyBiL2JvYXJkL2VzZC9jcGNpNzUwL3BjaS5jCmluZGV4IDNlNDRmYjkuLmMzMzVlYmYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNzUwL3BjaS5jCisrKyBiL2JvYXJkL2VzZC9jcGNpNzUwL3BjaS5jCkBAIC0xMiw3ICsxMiw3IEBACiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQogICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqCiAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtNDQsNiArNDQsMTQgQEAKIAl7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMjksIDI5LCBbOSAuLi4gUENJX01BWF9ERVZJQ0VTIC0gMV0gPSAwIH0sCiB9OwogCisjaWZkZWYgQ09ORklHX1VTRV9DUENJRFZJCit0eXBlZGVmIHN0cnVjdCB7CisJdW5zaWduZWQgaW50IGJhc2U7CisJdW5zaWduZWQgaW50IGluaXQ7Cit9IEdUX0NQQ0lEVklfUk9NX1Q7CisKK3N0YXRpYyBHVF9DUENJRFZJX1JPTV9UIGd0X2NwY2lkdmlfcm9tID0gezAsIDB9OworI2VuZGlmCiAKICNpZmRlZiBERUJVRwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBwY2lfYnVzX2xpc3RbXSA9IHsgUENJXzBfTU9ERSwgUENJXzFfTU9ERSB9OwpAQCAtMTI1LDIwICsxMzMsMjAgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIHBjaVdyaXRlQ29uZmlnUmVnIC0gV3JpdGUgdG8gYSBQQ0kgY29uZmlndXJhdGlvbiByZWdpc3RlcgotKiAgICAgICAgICAgICAgICAgICAgLSBNYWtlIHN1cmUgdGhlIEdUIGlzIGNvbmZpZ3VyZWQgYXMgYSBtYXN0ZXIgYmVmb3JlIHdyaXRpbmcKLSogICAgICAgICAgICAgICAgICAgICAgdG8gYW5vdGhlciBkZXZpY2Ugb24gdGhlIFBDSS4KLSogICAgICAgICAgICAgICAgICAgIC0gVGhlIGZ1bmN0aW9uIHRha2VzIGNhcmUgb2YgQmlnL0xpdHRsZSBlbmRpYW4gY29udmVyc2lvbi4KKyoJCSAgICAtIE1ha2Ugc3VyZSB0aGUgR1QgaXMgY29uZmlndXJlZCBhcyBhIG1hc3RlciBiZWZvcmUgd3JpdGluZworKgkJICAgICAgdG8gYW5vdGhlciBkZXZpY2Ugb24gdGhlIFBDSS4KKyoJCSAgICAtIFRoZSBmdW5jdGlvbiB0YWtlcyBjYXJlIG9mIEJpZy9MaXR0bGUgZW5kaWFuIGNvbnZlcnNpb24uCiAqCiAqCiAqIElucHV0czogICB1bnNpZ25lZCBpbnQgcmVnT2Zmc2V0OiBUaGUgcmVnaXN0ZXIgb2Zmc2V0IGFzIGl0IGFwZWFycyBpbiB0aGUgR1Qgc3BlYwotKiAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFBDSSBkZXZpY2Ugc3BlYykKLSogICAgICAgICAgIHBjaURldk51bTogVGhlIGRldmljZSBudW1iZXIgbmVlZHMgdG8gYmUgYWRkcmVzc2VkLgorKgkJICAgKG9yIGFueSBvdGhlciBQQ0kgZGV2aWNlIHNwZWMpCisqCSAgICBwY2lEZXZOdW06IFRoZSBkZXZpY2UgbnVtYmVyIG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4KICoKICogIENvbmZpZ3VyYXRpb24gQWRkcmVzcyAweENGODoKICoKLSogICAgICAgMzEgMzAgICAgMjQgMjMgIDE2IDE1ICAxMSAxMCAgICAgOCA3ICAgICAgMiAgMCAgICAgPD1iaXQgTnVtYmVyCisqCTMxIDMwCSAyNCAyMwkxNiAxNSAgMTEgMTAJIDggNwkgIDIgIDAJICAgPD1iaXQgTnVtYmVyCiAqICB8Y29uZ2lmfFJlc2VydmVkfCAgQnVzIHxEZXZpY2V8RnVuY3Rpb258UmVnaXN0ZXJ8MDB8Ci0qICB8RW5hYmxlfCAgICAgICAgfE51bWJlcnxOdW1iZXJ8IE51bWJlciB8IE51bWJlciB8ICB8ICAgIDw9ZmllbGQgTmFtZQorKiAgfEVuYWJsZXwJICAgfE51bWJlcnxOdW1iZXJ8IE51bWJlciB8IE51bWJlciB8ICB8CSAgIDw9ZmllbGQgTmFtZQogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogdm9pZCBwY2lXcml0ZUNvbmZpZ1JlZyAoUENJX0hPU1QgaG9zdCwgdW5zaWduZWQgaW50IHJlZ09mZnNldCwKQEAgLTE3MiwyMCArMTgwLDIwIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lSZWFkQ29uZmlnUmVnICAtIFJlYWQgZnJvbSBhIFBDSTAgY29uZmlndXJhdGlvbiByZWdpc3RlcgotKiAgICAgICAgICAgICAgICAgICAgLSBNYWtlIHN1cmUgdGhlIEdUIGlzIGNvbmZpZ3VyZWQgYXMgYSBtYXN0ZXIgYmVmb3JlIHJlYWRpbmcKLSogICAgICAgICAgICAgICAgICAgICBmcm9tIGFub3RoZXIgZGV2aWNlIG9uIHRoZSBQQ0kuCi0qICAgICAgICAgICAgICAgICAgIC0gVGhlIGZ1bmN0aW9uIHRha2VzIGNhcmUgb2YgQmlnL0xpdHRsZSBlbmRpYW4gY29udmVyc2lvbi4KKyoJCSAgICAtIE1ha2Ugc3VyZSB0aGUgR1QgaXMgY29uZmlndXJlZCBhcyBhIG1hc3RlciBiZWZvcmUgcmVhZGluZworKgkJICAgICAgZnJvbSBhbm90aGVyIGRldmljZSBvbiB0aGUgUENJLgorKgkJICAgIC0gVGhlIGZ1bmN0aW9uIHRha2VzIGNhcmUgb2YgQmlnL0xpdHRsZSBlbmRpYW4gY29udmVyc2lvbi4KICogSU5QVVRTOiAgIHJlZ09mZnNldDogVGhlIHJlZ2lzdGVyIG9mZnNldCBhcyBpdCBhcGVhcnMgaW4gdGhlIEdUIHNwZWMgKG9yIFBDSQotKiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMpCi0qICAgICAgICAgICBwY2lEZXZOdW06IFRoZSBkZXZpY2UgbnVtYmVyIG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4KKyoJCQlzcGVjKQorKgkgICAgcGNpRGV2TnVtOiBUaGUgZGV2aWNlIG51bWJlciBuZWVkcyB0byBiZSBhZGRyZXNzZWQuCiAqIFJFVFVSTlM6IGRhdGEgLCBpZiB0aGUgZGF0YSA9PSAweGZmZmZmZmZmIGNoZWNrIHRoZSBtYXN0ZXIgYWJvcnQgYml0IGluIHRoZQotKiAgICAgICAgICAgICAgICAgY2F1c2UgcmVnaXN0ZXIgdG8gbWFrZSBzdXJlIHRoZSBkYXRhIGlzIHZhbGlkCisqCQkgIGNhdXNlIHJlZ2lzdGVyIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YSBpcyB2YWxpZAogKgogKiAgQ29uZmlndXJhdGlvbiBBZGRyZXNzIDB4Q0Y4OgogKgotKiAgICAgICAzMSAzMCAgICAyNCAyMyAgMTYgMTUgIDExIDEwICAgICA4IDcgICAgICAyICAwICAgICA8PWJpdCBOdW1iZXIKKyoJMzEgMzAJIDI0IDIzCTE2IDE1ICAxMSAxMAkgOCA3CSAgMiAgMAkgICA8PWJpdCBOdW1iZXIKICogIHxjb25naWZ8UmVzZXJ2ZWR8ICBCdXMgfERldmljZXxGdW5jdGlvbnxSZWdpc3RlcnwwMHwKLSogIHxFbmFibGV8ICAgICAgICB8TnVtYmVyfE51bWJlcnwgTnVtYmVyIHwgTnVtYmVyIHwgIHwgICAgPD1maWVsZCBOYW1lCisqICB8RW5hYmxlfAkgICB8TnVtYmVyfE51bWJlcnwgTnVtYmVyIHwgTnVtYmVyIHwgIHwJICAgPD1maWVsZCBOYW1lCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiB1bnNpZ25lZCBpbnQgcGNpUmVhZENvbmZpZ1JlZyAoUENJX0hPU1QgaG9zdCwgdW5zaWduZWQgaW50IHJlZ09mZnNldCwKQEAgLTIyMCwyMSArMjI4LDIxIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lPdmVyQnJpZGdlV3JpdGVDb25maWdSZWcgLSBXcml0ZSB0byBhIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIHdoZXJlCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhZ2VudCBpcyBwbGFjZWQgb24gYW5vdGhlciBCdXMuIEZvciBtb3JlCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIHJlYWQgUDJQIGluIHRoZSBQQ0kgc3BlYy4KKyoJCQkJdGhlIGFnZW50IGlzIHBsYWNlZCBvbiBhbm90aGVyIEJ1cy4gRm9yIG1vcmUKKyoJCQkJaW5mb3JtYXRpb24gcmVhZCBQMlAgaW4gdGhlIFBDSSBzcGVjLgogKgogKiBJbnB1dHM6ICAgdW5zaWduZWQgaW50IHJlZ09mZnNldCAtIFRoZSByZWdpc3RlciBvZmZzZXQgYXMgaXQgYXBlYXJzIGluIHRoZQotKiAgICAgICAgICAgR1Qgc3BlYyAob3IgYW55IG90aGVyIFBDSSBkZXZpY2Ugc3BlYykuCi0qICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGNpRGV2TnVtIC0gVGhlIGRldmljZSBudW1iZXIgbmVlZHMgdG8gYmUgYWRkcmVzc2VkLgotKiAgICAgICAgICAgdW5zaWduZWQgaW50IGJ1c051bSAtIE9uIHdoaWNoIGJ1cyBkb2VzIHRoZSBUYXJnZXQgYWdlbnQgY29ubmVjdAotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvLgotKiAgICAgICAgICAgdW5zaWduZWQgaW50IGRhdGEgLSBkYXRhIHRvIGJlIHdyaXR0ZW4uCisqCSAgICBHVCBzcGVjIChvciBhbnkgb3RoZXIgUENJIGRldmljZSBzcGVjKS4KKyoJICAgIHVuc2lnbmVkIGludCBwY2lEZXZOdW0gLSBUaGUgZGV2aWNlIG51bWJlciBuZWVkcyB0byBiZSBhZGRyZXNzZWQuCisqCSAgICB1bnNpZ25lZCBpbnQgYnVzTnVtIC0gT24gd2hpY2ggYnVzIGRvZXMgdGhlIFRhcmdldCBhZ2VudCBjb25uZWN0CisqCQkJCSAgdG8uCisqCSAgICB1bnNpZ25lZCBpbnQgZGF0YSAtIGRhdGEgdG8gYmUgd3JpdHRlbi4KICoKICogIENvbmZpZ3VyYXRpb24gQWRkcmVzcyAweENGODoKICoKLSogICAgICAgMzEgMzAgICAgMjQgMjMgIDE2IDE1ICAxMSAxMCAgICAgOCA3ICAgICAgMiAgMCAgICAgPD1iaXQgTnVtYmVyCisqCTMxIDMwCSAyNCAyMwkxNiAxNSAgMTEgMTAJIDggNwkgIDIgIDAJICAgPD1iaXQgTnVtYmVyCiAqICB8Y29uZ2lmfFJlc2VydmVkfCAgQnVzIHxEZXZpY2V8RnVuY3Rpb258UmVnaXN0ZXJ8MDF8Ci0qICB8RW5hYmxlfCAgICAgICAgfE51bWJlcnxOdW1iZXJ8IE51bWJlciB8IE51bWJlciB8ICB8ICAgIDw9ZmllbGQgTmFtZQorKiAgfEVuYWJsZXwJICAgfE51bWJlcnxOdW1iZXJ8IE51bWJlciB8IE51bWJlciB8ICB8CSAgIDw9ZmllbGQgTmFtZQogKgogKiAgVGhlIGNvbmZpZ3VyYXRpb24gQWRkcmVzcyBpcyBjb25maWd1cmUgYXMgdHlwZS1JIChiaXRzWzE6MF0gPSAnMDEnKSBkdWUgdG8KICogICBQQ0kgc3BlYyByZWZlcnJpbmcgdG8gUDJQLgpAQCAtMjY1LDIzICsyNzMsMjMgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIHBjaU92ZXJCcmlkZ2VSZWFkQ29uZmlnUmVnICAtIFJlYWQgZnJvbSBhIFBDSW4gY29uZmlndXJhdGlvbiByZWdpc3RlciB3aGVyZQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWdlbnQgdGFyZ2V0IGxvY2F0ZSBvbiBhbm90aGVyIFBDSSBidXMuCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE1ha2Ugc3VyZSB0aGUgR1QgaXMgY29uZmlndXJlZCBhcyBhIG1hc3RlcgotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgcmVhZGluZyBmcm9tIGFub3RoZXIgZGV2aWNlIG9uIHRoZSBQQ0kuCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoZSBmdW5jdGlvbiB0YWtlcyBjYXJlIG9mIEJpZy9MaXR0bGUgZW5kaWFuCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb24uCisqCQkJCXRoZSBhZ2VudCB0YXJnZXQgbG9jYXRlIG9uIGFub3RoZXIgUENJIGJ1cy4KKyoJCQkgICAgICAtIE1ha2Ugc3VyZSB0aGUgR1QgaXMgY29uZmlndXJlZCBhcyBhIG1hc3RlcgorKgkJCQliZWZvcmUgcmVhZGluZyBmcm9tIGFub3RoZXIgZGV2aWNlIG9uIHRoZSBQQ0kuCisqCQkJICAgICAgLSBUaGUgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBCaWcvTGl0dGxlIGVuZGlhbgorKgkJCQljb252ZXJzaW9uLgogKiBJTlBVVFM6ICAgcmVnT2Zmc2V0OiBUaGUgcmVnaXN0ZXIgb2Zmc2V0IGFzIGl0IGFwZWFycyBpbiB0aGUgR1Qgc3BlYyAob3IgUENJCi0qICAgICAgICAgICAgICAgICAgICAgICAgc3BlYykuIChjb25maWd1cmF0aW9uIHJlZ2lzdGVyIG9mZnNldC4pCi0qICAgICAgICAgICBwY2lEZXZOdW06IFRoZSBkZXZpY2UgbnVtYmVyIG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4KLSogICAgICAgICAgIGJ1c051bTogdGhlIEJ1cyBudW1iZXIgd2hlcmUgdGhlIGFnZW50IGlzIHBsYWNlLgorKgkJCSBzcGVjKS4gKGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgb2Zmc2V0LikKKyoJICAgIHBjaURldk51bTogVGhlIGRldmljZSBudW1iZXIgbmVlZHMgdG8gYmUgYWRkcmVzc2VkLgorKgkgICAgYnVzTnVtOiB0aGUgQnVzIG51bWJlciB3aGVyZSB0aGUgYWdlbnQgaXMgcGxhY2UuCiAqIFJFVFVSTlM6IGRhdGEgLCBpZiB0aGUgZGF0YSA9PSAweGZmZmZmZmZmIGNoZWNrIHRoZSBtYXN0ZXIgYWJvcnQgYml0IGluIHRoZQotKiAgICAgICAgICAgICAgICAgY2F1c2UgcmVnaXN0ZXIgdG8gbWFrZSBzdXJlIHRoZSBkYXRhIGlzIHZhbGlkCisqCQkgIGNhdXNlIHJlZ2lzdGVyIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YSBpcyB2YWxpZAogKgogKiAgQ29uZmlndXJhdGlvbiBBZGRyZXNzIDB4Q0Y4OgogKgotKiAgICAgICAzMSAzMCAgICAyNCAyMyAgMTYgMTUgIDExIDEwICAgICA4IDcgICAgICAyICAwICAgICA8PWJpdCBOdW1iZXIKKyoJMzEgMzAJIDI0IDIzCTE2IDE1ICAxMSAxMAkgOCA3CSAgMiAgMAkgICA8PWJpdCBOdW1iZXIKICogIHxjb25naWZ8UmVzZXJ2ZWR8ICBCdXMgfERldmljZXxGdW5jdGlvbnxSZWdpc3RlcnwwMXwKLSogIHxFbmFibGV8ICAgICAgICB8TnVtYmVyfE51bWJlcnwgTnVtYmVyIHwgTnVtYmVyIHwgIHwgICAgPD1maWVsZCBOYW1lCisqICB8RW5hYmxlfAkgICB8TnVtYmVyfE51bWJlcnwgTnVtYmVyIHwgTnVtYmVyIHwgIHwJICAgPD1maWVsZCBOYW1lCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiB1bnNpZ25lZCBpbnQgcGNpT3ZlckJyaWRnZVJlYWRDb25maWdSZWcgKFBDSV9IT1NUIGhvc3QsCkBAIC0zODUsNyArMzkzLDcgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIHBjaUdldEJhc2VBZGRyZXNzIC0gR2V0cyB0aGUgYmFzZSBhZGRyZXNzIG9mIGEgUENJLgotKiAgICAgICAgICAgLSBJZiB0aGUgUENJIHNpemUgaXMgMCB0aGVuIHRoaXMgYmFzZSBhZGRyZXNzIGhhcyBubyBtZWFuaW5nISEhCisqCSAgICAtIElmIHRoZSBQQ0kgc2l6ZSBpcyAwIHRoZW4gdGhpcyBiYXNlIGFkZHJlc3MgaGFzIG5vIG1lYW5pbmchISEKICoKICoKICogSU5QVVQ6ICAgQnVzLCBSZWdpb24gLSBUaGUgYnVzIGFuZCByZWdpb24gd2UgYXNrIGZvciBpdHMgYmFzZSBhZGRyZXNzLgpAQCAtNDkzLDEzICs1MDEsMTMgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIHBjaVNldFJlZ2lvbkZlYXR1cmVzIC0gVGhpcyBmdW5jdGlvbiBtb2RpZnlzIG9uZSBvZiB0aGUgOCByZWdpb25zIHdpdGgKLSogICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZSBiaXRzIGdpdmVuIGFzIGFuIGlucHV0LgotKiAgICAgICAgICAgICAgICAgICAgICAgLSBCZSBhZHZpc2VkIHRvIGNoZWNrIHRoZSBzcGVjIGJlZm9yZSBtb2RpZnlpbmcgdGhlbS4KKyoJCQkgIGZlYXR1cmUgYml0cyBnaXZlbiBhcyBhbiBpbnB1dC4KKyoJCQktIEJlIGFkdmlzZWQgdG8gY2hlY2sgdGhlIHNwZWMgYmVmb3JlIG1vZGlmeWluZyB0aGVtLgogKiBJbnB1dHM6IFBDSV9QUk9URUNUX1JFR0lPTiByZWdpb24gLSBvbmUgb2YgdGhlIGVpZ2h0IHJlZ2lvbnMuCi0qICAgICAgICAgdW5zaWduZWQgaW50IGZlYXR1cmVzIC0gU2VlIGZpbGU6IHBjaS5oIHRoZXJlIGFyZSBkZWZpbnRpb24gZm9yIHRob3NlCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uIGZlYXR1cmVzLgotKiAgICAgICAgIHVuc2lnbmVkIGludCBiYXNlQWRkcmVzcyAtIFRoZSByZWdpb24gYmFzZSBBZGRyZXNzLgotKiAgICAgICAgIHVuc2lnbmVkIGludCB0b3BBZGRyZXNzIC0gVGhlIHJlZ2lvbiB0b3AgQWRkcmVzcy4KKyoJICB1bnNpZ25lZCBpbnQgZmVhdHVyZXMgLSBTZWUgZmlsZTogcGNpLmggdGhlcmUgYXJlIGRlZmludGlvbiBmb3IgdGhvc2UKKyoJCQkJICByZWdpb24gZmVhdHVyZXMuCisqCSAgdW5zaWduZWQgaW50IGJhc2VBZGRyZXNzIC0gVGhlIHJlZ2lvbiBiYXNlIEFkZHJlc3MuCisqCSAgdW5zaWduZWQgaW50IHRvcEFkZHJlc3MgLSBUaGUgcmVnaW9uIHRvcCBBZGRyZXNzLgogKiBSZXR1cm5zOiBmYWxzZSBpZiBvbmUgb2YgdGhlIHBhcmFtZXRlcnMgaXMgZXJyb25lb3VzIHRydWUgb3RoZXJ3aXNlLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogYm9vbCBwY2lTZXRSZWdpb25GZWF0dXJlcyAoUENJX0hPU1QgaG9zdCwgUENJX0FDQ0VTU19SRUdJT05TIHJlZ2lvbiwKQEAgLTUzMyw3ICs1NDEsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogcGNpRGlzYWJsZUFjY2Vzc1JlZ2lvbiAtIERpc2FibGUgVGhlIGdpdmVuIFJlZ2lvbiBieSB3cml0aW5nIE1BWCBzaXplCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gaXRzIGxvdyBBZGRyZXNzIGFuZCBNSU4gc2l6ZSB0byBpdHMgaGlnaCBBZGRyZXNzLgorKgkJCSAgICB0byBpdHMgbG93IEFkZHJlc3MgYW5kIE1JTiBzaXplIHRvIGl0cyBoaWdoIEFkZHJlc3MuCiAqCiAqIElucHV0czogICBQQ0lfQUNDRVNTX1JFR0lPTlMgcmVnaW9uIC0gVGhlIHJlZ2lvbiB3ZSB0byBiZSBEaXNhYmxlZC4KICogUmV0dXJuczogIE4vQS4KQEAgLTU4MCwxMiArNTg4LDEyIEBACiAqIHBjaVNldEFyYml0ZXJBZ2VudHNQcmlvcml0eSAtIFByaW9yaXR5IHNldHVwIGZvciB0aGUgUENJIGFnZW50cyAoSGkgb3IgTG93KQogKgogKiBJbnB1dHM6ICAgUENJX0FHRU5UX1BSSU8gaW50ZXJuYWxBZ2VudCAtIHByaW90aXR5IGZvciBpbnRlcm5hbCBhZ2VudC4KLSogICAgICAgICAgIFBDSV9BR0VOVF9QUklPIGV4dGVybmFsQWdlbnQwIC0gcHJpb3RpdHkgZm9yIGV4dGVybmFsIzAgYWdlbnQuCi0qICAgICAgICAgICBQQ0lfQUdFTlRfUFJJTyBleHRlcm5hbEFnZW50MSAtIHByaW90aXR5IGZvciBleHRlcm5hbCMxIGFnZW50LgotKiAgICAgICAgICAgUENJX0FHRU5UX1BSSU8gZXh0ZXJuYWxBZ2VudDIgLSBwcmlvdGl0eSBmb3IgZXh0ZXJuYWwjMiBhZ2VudC4KLSogICAgICAgICAgIFBDSV9BR0VOVF9QUklPIGV4dGVybmFsQWdlbnQzIC0gcHJpb3RpdHkgZm9yIGV4dGVybmFsIzMgYWdlbnQuCi0qICAgICAgICAgICBQQ0lfQUdFTlRfUFJJTyBleHRlcm5hbEFnZW50NCAtIHByaW90aXR5IGZvciBleHRlcm5hbCM0IGFnZW50LgotKiAgICAgICAgICAgUENJX0FHRU5UX1BSSU8gZXh0ZXJuYWxBZ2VudDUgLSBwcmlvdGl0eSBmb3IgZXh0ZXJuYWwjNSBhZ2VudC4KKyoJICAgIFBDSV9BR0VOVF9QUklPIGV4dGVybmFsQWdlbnQwIC0gcHJpb3RpdHkgZm9yIGV4dGVybmFsIzAgYWdlbnQuCisqCSAgICBQQ0lfQUdFTlRfUFJJTyBleHRlcm5hbEFnZW50MSAtIHByaW90aXR5IGZvciBleHRlcm5hbCMxIGFnZW50LgorKgkgICAgUENJX0FHRU5UX1BSSU8gZXh0ZXJuYWxBZ2VudDIgLSBwcmlvdGl0eSBmb3IgZXh0ZXJuYWwjMiBhZ2VudC4KKyoJICAgIFBDSV9BR0VOVF9QUklPIGV4dGVybmFsQWdlbnQzIC0gcHJpb3RpdHkgZm9yIGV4dGVybmFsIzMgYWdlbnQuCisqCSAgICBQQ0lfQUdFTlRfUFJJTyBleHRlcm5hbEFnZW50NCAtIHByaW90aXR5IGZvciBleHRlcm5hbCM0IGFnZW50LgorKgkgICAgUENJX0FHRU5UX1BSSU8gZXh0ZXJuYWxBZ2VudDUgLSBwcmlvdGl0eSBmb3IgZXh0ZXJuYWwjNSBhZ2VudC4KICogUmV0dXJuczogIHRydWUKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIGJvb2wgcGNpU2V0QXJiaXRlckFnZW50c1ByaW9yaXR5IChQQ0lfSE9TVCBob3N0LCBQQ0lfQUdFTlRfUFJJTyBpbnRlcm5hbEFnZW50LApAQCAtNjExLDE3ICs2MTksMTcgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIHBjaVBhcmtpbmdEaXNhYmxlIC0gUGFyayBvbiBsYXN0IG9wdGlvbiBkaXNhYmxlLCB3aXRoIHRoaXMgZnVuY3Rpb24geW91IGNhbgotKiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIHRoZSBwYXJrIG9uIGxhc3QgbWVjaGFuaXNtIGZvciBlYWNoIGFnZW50LgotKiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxpbmcgdGhpcyBvcHRpb24gZm9yIGFsbCBhZ2VudHMgcmVzdWx0cyBwYXJraW5nCi0qICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBpbnRlcm5hbCBtYXN0ZXIuCisqCQkgICAgICAgZGlzYWJsZSB0aGUgcGFyayBvbiBsYXN0IG1lY2hhbmlzbSBmb3IgZWFjaCBhZ2VudC4KKyoJCSAgICAgICBkaXNhYmxpbmcgdGhpcyBvcHRpb24gZm9yIGFsbCBhZ2VudHMgcmVzdWx0cyBwYXJraW5nCisqCQkgICAgICAgb24gdGhlIGludGVybmFsIG1hc3Rlci4KICoKICogSW5wdXRzOiBQQ0lfQUdFTlRfUEFSSyBpbnRlcm5hbEFnZW50IC0gIHBhcmtpbmcgRGlzYWJsZSBmb3IgaW50ZXJuYWwgYWdlbnQuCi0qICAgICAgICAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDAgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzAgYWdlbnQuCi0qICAgICAgICAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDEgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzEgYWdlbnQuCi0qICAgICAgICAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDIgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzIgYWdlbnQuCi0qICAgICAgICAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDMgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzMgYWdlbnQuCi0qICAgICAgICAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDQgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzQgYWdlbnQuCi0qICAgICAgICAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDUgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzUgYWdlbnQuCisqCSAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDAgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzAgYWdlbnQuCisqCSAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDEgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzEgYWdlbnQuCisqCSAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDIgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzIgYWdlbnQuCisqCSAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDMgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzMgYWdlbnQuCisqCSAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDQgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzQgYWdlbnQuCisqCSAgUENJX0FHRU5UX1BBUksgZXh0ZXJuYWxBZ2VudDUgLSBwYXJraW5nIERpc2FibGUgZm9yIGV4dGVybmFsIzUgYWdlbnQuCiAqIFJldHVybnM6ICB0cnVlCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBib29sIHBjaVBhcmtpbmdEaXNhYmxlIChQQ0lfSE9TVCBob3N0LCBQQ0lfQUdFTlRfUEFSSyBpbnRlcm5hbEFnZW50LApAQCAtNjQ3LDExICs2NTUsMTEgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIHBjaUVuYWJsZUJyb2tlbkFnZW50RGV0ZWN0aW9uIC0gQSBtYXN0ZXIgaXMgc2FpZCB0byBiZSBicm9rZW4gaWYgaXQgZmFpbHMgdG8KLSogICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbmQgdG8gZ3JhbnQgYXNzZXJ0aW9uIHdpdGhpbiBhIHdpbmRvdyBzcGVjaWZpZWQgaW4KLSogICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnB1dCB2YWx1ZTogJ2Jyb2tlblZhbHVlJy4KKyoJCQlyZXNwb25kIHRvIGdyYW50IGFzc2VydGlvbiB3aXRoaW4gYSB3aW5kb3cgc3BlY2lmaWVkIGluCisqCQkJdGhlIGlucHV0IHZhbHVlOiAnYnJva2VuVmFsdWUnLgogKgogKiBJbnB1dHM6IHVuc2lnbmVkIGNoYXIgYnJva2VuVmFsdWUgLSAgQSB2YWx1ZSB3aGljaCBsaW1pdHMgdGhlIE1hc3RlciB0byBob2xkIHRoZQotKiAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnQgd2l0aG91dCBhc3NlcnRpbmcgZnJhbWUuCisqCQkJZ3JhbnQgd2l0aG91dCBhc3NlcnRpbmcgZnJhbWUuCiAqIFJldHVybnM6ICBFcnJvciBmb3IgaWxsZWdhbCBicm9rZW4gdmFsdWUgb3RoZXJ3aXNlIHRydWUuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBib29sIHBjaUVuYWJsZUJyb2tlbkFnZW50RGV0ZWN0aW9uIChQQ0lfSE9TVCBob3N0LCB1bnNpZ25lZCBjaGFyIGJyb2tlblZhbHVlKQpAQCAtNjcwLDkgKzY3OCw5IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lEaXNhYmxlQnJva2VuQWdlbnREZXRlY3Rpb24gLSBUaGlzIGZ1bmN0aW9uIGRpc2FibGUgdGhlIEJyb2tlbiBhZ2VudAotKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERldGVjdGlvbiBtZWNoYW5pc20uCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9URTogVGhpcyBvcGVyYXRpb24gbWF5IGNhdXNlIGEgZGVhZCBsb2NrIG9uIHRoZQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjaTAgYXJiaXRyYXRpb24uCisqCQkJICAgIERldGVjdGlvbiBtZWNoYW5pc20uCisqCQkJICAgIE5PVEU6IFRoaXMgb3BlcmF0aW9uIG1heSBjYXVzZSBhIGRlYWQgbG9jayBvbiB0aGUKKyoJCQkgICAgcGNpMCBhcmJpdHJhdGlvbi4KICoKICogSW5wdXRzOiAgIE4vQQogKiBSZXR1cm5zOiAgdHJ1ZS4KQEAgLTY4OSwxNSArNjk3LDE1IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lQMlBDb25maWcgLSBUaGlzIGZ1bmN0aW9uIHNldCB0aGUgUENJX24gUDJQIGNvbmZpZ3VyYXRlLgotKiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFAyUCByZWFkIFBDSSBzcGVjLgorKgkJICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgUDJQIHJlYWQgUENJIHNwZWMuCiAqCiAqIElucHV0czogIHVuc2lnbmVkIGludCBTZWNvbmRCdXNMb3cgLSBTZWNvbmRlcnkgUENJIGludGVyZmFjZSBCdXMgUmFuZ2UgTG93ZXIKLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdW5kcnkuCi0qICAgICAgICAgIHVuc2lnbmVkIGludCBTZWNvbmRCdXNIaWdoIC0gU2Vjb25kcnkgUENJIGludGVyZmFjZSBCdXMgUmFuZ2UgdXBwZXIKLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdW5kcnkuCi0qICAgICAgICAgIHVuc2lnbmVkIGludCBidXNOdW0gLSBUaGUgQ1BJIGJ1cyBudW1iZXIgdG8gd2hpY2ggdGhlIFBDSSBpbnRlcmZhY2UKLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNvbm5lY3RlZC4KLSogICAgICAgICAgdW5zaWduZWQgaW50IGRldk51bSAtIFRoZSBQQ0kgaW50ZXJmYWNlJ3MgZGV2aWNlIG51bWJlci4KKyoJCQkJICAgICAgIEJvdW5kcnkuCisqCSAgIHVuc2lnbmVkIGludCBTZWNvbmRCdXNIaWdoIC0gU2Vjb25kcnkgUENJIGludGVyZmFjZSBCdXMgUmFuZ2UgdXBwZXIKKyoJCQkJICAgICAgIEJvdW5kcnkuCisqCSAgIHVuc2lnbmVkIGludCBidXNOdW0gLSBUaGUgQ1BJIGJ1cyBudW1iZXIgdG8gd2hpY2ggdGhlIFBDSSBpbnRlcmZhY2UKKyoJCQkJICAgICAgIGlzIGNvbm5lY3RlZC4KKyoJICAgdW5zaWduZWQgaW50IGRldk51bSAtIFRoZSBQQ0kgaW50ZXJmYWNlJ3MgZGV2aWNlIG51bWJlci4KICoKICogUmV0dXJuczogIHRydWUuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC03MTUsMTUgKzcyMywxNSBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogcGNpU2V0UmVnaW9uU25vb3BNb2RlIC0gVGhpcyBmdW5jdGlvbiBtb2RpZnlzIG9uZSBvZiB0aGUgNCByZWdpb25zIHdoaWNoCi0qICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cyBDYWNoZSBDb2hlcmVuY3kgaW4gdGhlIFBDSV9uIGludGVyZmFjZS4KKyoJCQkgICBzdXBwb3J0cyBDYWNoZSBDb2hlcmVuY3kgaW4gdGhlIFBDSV9uIGludGVyZmFjZS4KICogSW5wdXRzOiByZWdpb24gLSBPbmUgb2YgdGhlIGZvdXIgcmVnaW9ucy4KLSogICAgICAgICBzbm9vcFR5cGUgLSBUaGVyZSBpcyBmb3VyIG9wdGlvbmFsIFR5cGVzOgotKiAgICAgICAgICAgICAgICAgICAgICAgIDEuIE5vIFNub29wLgotKiAgICAgICAgICAgICAgICAgICAgICAgIDIuIFNub29wIHRvIFdUIHJlZ2lvbi4KLSogICAgICAgICAgICAgICAgICAgICAgICAzLiBTbm9vcCB0byBXQiByZWdpb24uCi0qICAgICAgICAgICAgICAgICAgICAgICAgNC4gU25vb3AgJiBJbnZhbGlkYXRlIHRvIFdCIHJlZ2lvbi4KLSogICAgICAgICBiYXNlQWRkcmVzcyAtIEJhc2UgQWRkcmVzcyBvZiB0aGlzIHJlZ2lvbi4KLSogICAgICAgICByZWdpb25MZW5ndGggLSBSZWdpb24gbGVuZ3RoLgorKgkgIHNub29wVHlwZSAtIFRoZXJlIGlzIGZvdXIgb3B0aW9uYWwgVHlwZXM6CisqCQkJIDEuIE5vIFNub29wLgorKgkJCSAyLiBTbm9vcCB0byBXVCByZWdpb24uCisqCQkJIDMuIFNub29wIHRvIFdCIHJlZ2lvbi4KKyoJCQkgNC4gU25vb3AgJiBJbnZhbGlkYXRlIHRvIFdCIHJlZ2lvbi4KKyoJICBiYXNlQWRkcmVzcyAtIEJhc2UgQWRkcmVzcyBvZiB0aGlzIHJlZ2lvbi4KKyoJICByZWdpb25MZW5ndGggLSBSZWdpb24gbGVuZ3RoLgogKiBSZXR1cm5zOiBmYWxzZSBpZiBvbmUgb2YgdGhlIHBhcmFtZXRlcnMgaXMgd3Jvbmcgb3RoZXJ3aXNlIHJldHVybiB0cnVlLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogYm9vbCBwY2lTZXRSZWdpb25Tbm9vcE1vZGUgKFBDSV9IT1NUIGhvc3QsIFBDSV9TTk9PUF9SRUdJT04gcmVnaW9uLApAQCAtNzQ2LDcgKzc1NCw3IEBACiAJCUdUX1JFR19XUklURSAoc25vb3BYdG9wQWRkcmVzcywgMCk7CiAJCXJldHVybiB0cnVlOwogCX0KLQliYXNlQWRkcmVzcyA9IGJhc2VBZGRyZXNzICYgMHhmZmYwMDAwMDsJLyogR3JhbnVsYXJpdHkgb2YgMU1CeXRlICovCisJYmFzZUFkZHJlc3MgPSBiYXNlQWRkcmVzcyAmIDB4ZmZmMDAwMDA7IC8qIEdyYW51bGFyaXR5IG9mIDFNQnl0ZSAqLwogCWRhdGEgPSAoYmFzZUFkZHJlc3MgPj4gMjApIHwgc25vb3BUeXBlIDw8IDEyOwogCUdUX1JFR19XUklURSAoc25vb3BYYmFzZUFkZHJlc3MsIGRhdGEpOwogCXNub29wSGlnaCA9IChzbm9vcEhpZ2ggJiAweGZmZjAwMDAwKSA+PiAyMDsKQEAgLTgwMCwyMyArODA4LDY1IEBACiAJCXVuc2lnbmVkIGludCBvZmZzZXQgPQogCQkJKGJhciA8IDIpID8gYmFyICogOCA6IDB4MTAwICsgKGJhciAtIDIpICogODsKIAotCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkIChkZXYsIFBDSV9CQVNFX0FERFJFU1NfMCArIG9mZnNldCwKLQkJCQkJMHgwKTsKLQkJcGNpX3JlYWRfY29uZmlnX2R3b3JkIChkZXYsIFBDSV9CQVNFX0FERFJFU1NfMCArIG9mZnNldCwKLQkJCQkgICAgICAgJmJhcl9yZXNwb25zZSk7CisJCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ19kd29yZCAoaG9zZSwgZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzAgKyBvZmZzZXQsCisJCQkJCSAgICAgMHgwKTsKKwkJcGNpX2hvc2VfcmVhZF9jb25maWdfZHdvcmQgKGhvc2UsIGRldiwgUENJX0JBU0VfQUREUkVTU18wICsgb2Zmc2V0LAorCQkJCQkgICAgJmJhcl9yZXNwb25zZSk7CiAKIAkJcGNpYXV0b19yZWdpb25fYWxsb2NhdGUgKGJhcl9yZXNwb25zZSAmCiAJCQkJCSBQQ0lfQkFTRV9BRERSRVNTX1NQQUNFX0lPID8gaG9zZS0+CiAJCQkJCSBwY2lfaW8gOiBob3NlLT5wY2lfbWVtLCBpZGVfYmFyW2Jhcl0sCiAJCQkJCSAmYmFyX3ZhbHVlKTsKIAotCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkIChkZXYsIFBDSV9CQVNFX0FERFJFU1NfMCArIGJhciAqIDQsCi0JCQkJCWJhcl92YWx1ZSk7CisJCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ19kd29yZCAoaG9zZSwgZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzAgKyBiYXIgKiA0LAorCQkJCQkgICAgIGJhcl92YWx1ZSk7CiAJfQogfQogCisjaWZkZWYgQ09ORklHX1VTRV9DUENJRFZJCitzdGF0aWMgdm9pZCBndF9zZXR1cF9jcGNpZHZpIChzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsCisJCQkgICAgICBwY2lfZGV2X3QgZGV2LCBzdHJ1Y3QgcGNpX2NvbmZpZ190YWJsZSAqZW50cnkpCit7CisJdTMyCQkgIGJhcl92YWx1ZSwgcGNpX3Jlc3BvbnNlOworCisJcGNpX2hvc2VfcmVhZF9jb25maWdfZHdvcmQgKGhvc2UsIGRldiwgUENJX0NPTU1BTkQsICZwY2lfcmVzcG9uc2UpOworCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ19kd29yZCAoaG9zZSwgZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzAsIDB4ZmZmZmZmZmYpOworCXBjaV9ob3NlX3JlYWRfY29uZmlnX2R3b3JkIChob3NlLCBkZXYsIFBDSV9CQVNFX0FERFJFU1NfMCwgJnBjaV9yZXNwb25zZSk7CisJcGNpYXV0b19yZWdpb25fYWxsb2NhdGUgKGhvc2UtPnBjaV9tZW0sIDB4MDEwMDAwMDAsICZiYXJfdmFsdWUpOworCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ19kd29yZCAoaG9zZSwgZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzAsIChiYXJfdmFsdWUgJiAweGZmZmZmZjAwKSk7CisJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX2R3b3JkIChob3NlLCBkZXYsIFBDSV9ST01fQUREUkVTUywgMHgwKTsKKwlwY2lhdXRvX3JlZ2lvbl9hbGxvY2F0ZSAoaG9zZS0+cGNpX21lbSwgMHg0MDAwMCwgJmJhcl92YWx1ZSk7CisJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX2R3b3JkIChob3NlLCBkZXYsIFBDSV9ST01fQUREUkVTUywgKGJhcl92YWx1ZSAmIDB4ZmZmZmZmMDApIHwgMHgwMSk7CisJZ3RfY3BjaWR2aV9yb20uYmFzZSA9IGJhcl92YWx1ZSAmIDB4ZmZmZmZmMDA7CisJZ3RfY3BjaWR2aV9yb20uaW5pdCA9IDE7Cit9CisKK3Vuc2lnbmVkIGNoYXIgZ3RfY3BjaWR2aV9pbjgodW5zaWduZWQgaW50IG9mZnNldCkKK3sKKwl1bnNpZ25lZCBjaGFyCSAgZGF0YTsKKworCWlmIChndF9jcGNpZHZpX3JvbS5pbml0ID09IDApIHsKKwkJcmV0dXJuKDApOworCQl9CisJZGF0YSA9IGluOCgob2Zmc2V0ICYgMHgwNCkgKyAweDNmMDAwICsgZ3RfY3BjaWR2aV9yb20uYmFzZSk7CisJcmV0dXJuKGRhdGEpOworfQorCit2b2lkIGd0X2NwY2lkdmlfb3V0OCh1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBjaGFyIGRhdGEpCit7CisJdW5zaWduZWQgaW50CSAgb2ZmOworCisJaWYgKGd0X2NwY2lkdmlfcm9tLmluaXQgPT0gMCkgeworCQlyZXR1cm47CisJfQorCW9mZiA9IGRhdGE7CisJb2ZmID0gKChvZmYgPDwgMykgJiAweDdmOCkgKyAob2Zmc2V0ICYgMHg0KSArIDB4M2UwMDAgKyBndF9jcGNpZHZpX3JvbS5iYXNlOworCWluOChvZmYpOworCXJldHVybjsKK30KKyNlbmRpZgogCi0vKiBUT0RPIEJKVzogQ2hhbmdlIHRoaXMgZm9yIERCNjQzNjAuIFRoaXMgd2FzIHB1bGxlZCBmcm9tIHRoZSBFVjY0MjYwICAqLworLyogVE9ETyBCSlc6IENoYW5nZSB0aGlzIGZvciBEQjY0MzYwLiBUaGlzIHdhcyBwdWxsZWQgZnJvbSB0aGUgRVY2NDI2MAkqLwogLyogYW5kIGlzIGN1cmVudGx5IG5vdCBjYWxsZWQgKi4gKi8KICNpZiAwCiBzdGF0aWMgdm9pZCBndF9maXh1cF9pcnEgKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgcGNpX2Rldl90IGRldikKQEAgLTgzNSw5ICs4ODUsMTIgQEAKICNlbmRpZgogCiBzdHJ1Y3QgcGNpX2NvbmZpZ190YWJsZSBndF9jb25maWdfdGFibGVbXSA9IHsKKyNpZmRlZiBDT05GSUdfVVNFX0NQQ0lEVkkKKwl7UENJX1ZFTkRPUl9JRF9DVCwgUENJX0RFVklDRV9JRF9DVF82OTAzMCwgUENJX0NMQVNTX0RJU1BMQVlfVkdBLAorCSBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBndF9zZXR1cF9jcGNpZHZpfSwKKyNlbmRpZgogCXtQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBQQ0lfQ0xBU1NfU1RPUkFHRV9JREUsCiAJIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIGd0X3NldHVwX2lkZX0sCi0KIAl7fQogfTsKIApAQCAtODU3LDEwICs5MTAsMjEgQEAKICNpZmRlZiBDT05GSUdfUENJX1BOUAogCXVuc2lnbmVkIGludCBiYXI7CiAjZW5kaWYKLQogI2lmZGVmIERFQlVHCiAJZ3RfcGNpX2J1c19tb2RlX2Rpc3BsYXkgKFBDSV9IT1NUMCk7CiAjZW5kaWYKKyNpZmRlZiBDT05GSUdfVVNFX0NQQ0lEVkkKKwlndF9jcGNpZHZpX3JvbS5pbml0ID0gMDsKKwlndF9jcGNpZHZpX3JvbS5iYXNlID0gMDsKKyNlbmRpZgorCisJcGNpMF9ob3NlLmNvbmZpZ190YWJsZSA9IGd0X2NvbmZpZ190YWJsZTsKKwlwY2kxX2hvc2UuY29uZmlnX3RhYmxlID0gZ3RfY29uZmlnX3RhYmxlOworCisjaWZkZWYgQ09ORklHX1VTRV9DUENJRFZJCisJZ3RfY29uZmlnX3RhYmxlWzBdLmNvbmZpZ19kZXZpY2UgPSAgZ3Rfc2V0dXBfY3BjaWR2aTsKKyNlbmRpZgorCWd0X2NvbmZpZ190YWJsZVsxXS5jb25maWdfZGV2aWNlID0gIGd0X3NldHVwX2lkZTsKIAogCXBjaTBfaG9zZS5maXJzdF9idXNubyA9IDA7CiAJcGNpMF9ob3NlLmxhc3RfYnVzbm8gPSAweGZmOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NwY2k3NTAvc3RyYXRhZmxhc2guYyBiL2JvYXJkL2VzZC9jcGNpNzUwL3N0cmF0YWZsYXNoLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMmZlNWQuLjAwMDAwMDAKLS0tIGEvYm9hcmQvZXNkL2NwY2k3NTAvc3RyYXRhZmxhc2guYworKysgL2Rldi9udWxsCkBAIC0xLDc2MyArMCwwIEBACi0vKgotICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBCcmFkIEtlbXAsIFNlcmFub2EgTmV0d29ya3MsIEJyYWQuS2VtcEBzZXJhbm9hLmNvbQotICoKLSAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCi0gKiBwcm9qZWN0LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCi0gKiBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxjb21tb24uaD4KLSNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+Ci0jaW5jbHVkZSA8YXNtL2NhY2hlLmg+Ci0KLSN1bmRlZiAgREVCVUdfRkxBU0gKLS8qCi0gKiBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIENvbW1vbiBGbGFzaCBJbnRlcmZhY2UgKENGSSkgZHJpdmVyIGZvciBVLUJvb3QuCi0gKiBUaGUgd2lkdGggb2YgdGhlIHBvcnQgYW5kIHRoZSB3aWR0aCBvZiB0aGUgY2hpcHMgYXJlIGRldGVybWluZWQgYXQgaW5pdGlhbGl6YXRpb24uCi0gKiBUaGVzZSB3aWR0aHMgYXJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBhZGRyZXNzIGZvciBhY2Nlc3MgQ0ZJIGRhdGEgc3RydWN0dXJlcy4KLSAqIEl0IGhhcyBiZWVuIHRlc3RlZCBvbiBhbiBJbnRlbCBTdHJhdGFmbGFzaCBpbXBsZW1lbnRhdGlvbi4KLSAqCi0gKiBSZWZlcmVuY2VzCi0gKiBKRURFQyBTdGFuZGFyZCBKRVNENjggLSBDb21tb24gRmxhc2ggSW50ZXJmYWNlIChDRkkpCi0gKiBKRURFQyBTdGFuZGFyZCBKRVAxMzctQSBDb21tb24gRmxhc2ggSW50ZXJmYWNlIChDRkkpIElEIENvZGVzCi0gKiBJbnRlbCBBcHBsaWNhdGlvbiBOb3RlIDY0NiBDb21tb24gRmxhc2ggSW50ZXJmYWNlIChDRkkpIGFuZCBDb21tYW5kIFNldHMKLSAqIEludGVsIDI5MDY2Ny0wMDggMyBWb2x0IEludGVsIFN0cmF0YUZsYXNoIE1lbW9yeSBkYXRhc2hlZXQKLSAqCi0gKiBUT0RPCi0gKiBVc2UgUHJpbWFyeSBFeHRlbmRlZCBRdWVyeSB0YWJsZSAoUFJJKSBhbmQgQWx0ZXJuYXRlIEFsZ29yaXRobSBRdWVyeSBUYWJsZSAoQUxUKSB0byBkZXRlcm1pbmUgaWYgcHJvdGVjdGlvbiBpcyBhdmFpbGFibGUKLSAqIEFkZCBzdXBwb3J0IGZvciBvdGhlciBjb21tYW5kIHNldHMgVXNlIHRoZSBQUkkgYW5kIEFMVCB0byBkZXRlcm1pbmUgY29tbWFuZCBzZXQKLSAqIFZlcmlmeSBlcmFzZSBhbmQgcHJvZ3JhbSB0aW1lb3V0cy4KLSAqLwotCi0jZGVmaW5lIEZMQVNIX0NNRF9DRkkJCQkweDk4Ci0jZGVmaW5lIEZMQVNIX0NNRF9SRUFEX0lECQkweDkwCi0jZGVmaW5lIEZMQVNIX0NNRF9SRVNFVAkJCTB4ZmYKLSNkZWZpbmUgRkxBU0hfQ01EX0JMT0NLX0VSQVNFCQkweDIwCi0jZGVmaW5lIEZMQVNIX0NNRF9FUkFTRV9DT05GSVJNCQkweEQwCi0jZGVmaW5lIEZMQVNIX0NNRF9XUklURQkJCTB4NDAKLSNkZWZpbmUgRkxBU0hfQ01EX1BST1RFQ1QJCTB4NjAKLSNkZWZpbmUgRkxBU0hfQ01EX1BST1RFQ1RfU0VUCQkweDAxCi0jZGVmaW5lIEZMQVNIX0NNRF9QUk9URUNUX0NMRUFSCQkweEQwCi0jZGVmaW5lIEZMQVNIX0NNRF9DTEVBUl9TVEFUVVMJCTB4NTAKLSNkZWZpbmUgRkxBU0hfQ01EX1dSSVRFX1RPX0JVRkZFUiAgICAgICAweEU4Ci0jZGVmaW5lIEZMQVNIX0NNRF9XUklURV9CVUZGRVJfQ09ORklSTSAgMHhEMAotCi0jZGVmaW5lIEZMQVNIX1NUQVRVU19ET05FCQkweDgwCi0jZGVmaW5lIEZMQVNIX1NUQVRVU19FU1MJCTB4NDAKLSNkZWZpbmUgRkxBU0hfU1RBVFVTX0VDTEJTCQkweDIwCi0jZGVmaW5lIEZMQVNIX1NUQVRVU19QU0xCUwkJMHgxMAotI2RlZmluZSBGTEFTSF9TVEFUVVNfVlBFTlMJCTB4MDgKLSNkZWZpbmUgRkxBU0hfU1RBVFVTX1BTUwkJMHgwNAotI2RlZmluZSBGTEFTSF9TVEFUVVNfRFBTCQkweDAyCi0jZGVmaW5lIEZMQVNIX1NUQVRVU19SCQkJMHgwMQotI2RlZmluZSBGTEFTSF9TVEFUVVNfUFJPVEVDVAkJMHgwMQotCi0jZGVmaW5lIEZMQVNIX09GRlNFVF9DRkkJCTB4NTUKLSNkZWZpbmUgRkxBU0hfT0ZGU0VUX0NGSV9SRVNQCQkweDEwCi0jZGVmaW5lIEZMQVNIX09GRlNFVF9XVE9VVAkJMHgxRgotI2RlZmluZSBGTEFTSF9PRkZTRVRfV0JUT1VUICAgICAgICAgICAgIDB4MjAKLSNkZWZpbmUgRkxBU0hfT0ZGU0VUX0VUT1VUCQkweDIxCi0jZGVmaW5lIEZMQVNIX09GRlNFVF9DRVRPVVQgICAgICAgICAgICAgMHgyMgotI2RlZmluZSBGTEFTSF9PRkZTRVRfV01BWF9UT1VUCQkweDIzCi0jZGVmaW5lIEZMQVNIX09GRlNFVF9XQk1BWF9UT1VUICAgICAgICAgMHgyNAotI2RlZmluZSBGTEFTSF9PRkZTRVRfRU1BWF9UT1VUCQkweDI1Ci0jZGVmaW5lIEZMQVNIX09GRlNFVF9DRU1BWF9UT1VUICAgICAgICAgMHgyNgotI2RlZmluZSBGTEFTSF9PRkZTRVRfU0laRQkJMHgyNwotI2RlZmluZSBGTEFTSF9PRkZTRVRfSU5URVJGQUNFICAgICAgICAgIDB4MjgKLSNkZWZpbmUgRkxBU0hfT0ZGU0VUX0JVRkZFUl9TSVpFICAgICAgICAweDJBCi0jZGVmaW5lIEZMQVNIX09GRlNFVF9OVU1fRVJBU0VfUkVHSU9OUwkweDJDCi0jZGVmaW5lIEZMQVNIX09GRlNFVF9FUkFTRV9SRUdJT05TCTB4MkQKLSNkZWZpbmUgRkxBU0hfT0ZGU0VUX1BST1RFQ1QJCTB4MDIKLSNkZWZpbmUgRkxBU0hfT0ZGU0VUX1VTRVJfUFJPVEVDVElPTiAgICAweDg1Ci0jZGVmaW5lIEZMQVNIX09GRlNFVF9JTlRFTF9QUk9URUNUSU9OICAgMHg4MQotCi0KLSNkZWZpbmUgRkxBU0hfTUFOX0NGSQkJCTB4MDEwMDAwMDAKLQotCi10eXBlZGVmIHVuaW9uIHsKLQl1bnNpZ25lZCBjaGFyIGM7Ci0JdW5zaWduZWQgc2hvcnQgdzsKLQl1bnNpZ25lZCBsb25nIGw7Ci19IGNmaXdvcmRfdDsKLQotdHlwZWRlZiB1bmlvbiB7Ci0JdW5zaWduZWQgY2hhciAqIGNwOwotCXVuc2lnbmVkIHNob3J0ICp3cDsKLQl1bnNpZ25lZCBsb25nICpscDsKLX0gY2ZpcHRyX3Q7Ci0KLSNkZWZpbmUgTlVNX0VSQVNFX1JFR0lPTlMgNAotCi1mbGFzaF9pbmZvX3QJZmxhc2hfaW5mb1tDRkdfTUFYX0ZMQVNIX0JBTktTXTsgLyogaW5mbyBmb3IgRkxBU0ggY2hpcHMJKi8KLQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBGdW5jdGlvbnMKLSAqLwotCi0KLXN0YXRpYyB2b2lkIGZsYXNoX2FkZF9ieXRlKGZsYXNoX2luZm9fdCAqaW5mbywgY2Zpd29yZF90ICogY3dvcmQsIHVjaGFyIGMpOwotc3RhdGljIHZvaWQgZmxhc2hfbWFrZV9jbWQoZmxhc2hfaW5mb190ICogaW5mbywgdWNoYXIgY21kLCB2b2lkICogY21kYnVmKTsKLXN0YXRpYyB2b2lkIGZsYXNoX3dyaXRlX2NtZChmbGFzaF9pbmZvX3QgKiBpbmZvLCBpbnQgc2VjdCwgdWNoYXIgb2Zmc2V0LCB1Y2hhciBjbWQpOwotc3RhdGljIGludCBmbGFzaF9pc2VxdWFsKGZsYXNoX2luZm9fdCAqIGluZm8sIGludCBzZWN0LCB1Y2hhciBvZmZzZXQsIHVjaGFyIGNtZCk7Ci1zdGF0aWMgaW50IGZsYXNoX2lzc2V0KGZsYXNoX2luZm9fdCAqIGluZm8sIGludCBzZWN0LCB1Y2hhciBvZmZzZXQsIHVjaGFyIGNtZCk7Ci1zdGF0aWMgaW50IGZsYXNoX2RldGVjdF9jZmkoZmxhc2hfaW5mb190ICogaW5mbyk7Ci1zdGF0aWMgdWxvbmcgZmxhc2hfZ2V0X3NpemUgKHVsb25nIGJhc2UsIGludCBiYW5rbnVtKTsKLXN0YXRpYyBpbnQgZmxhc2hfd3JpdGVfY2Zpd29yZCAoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCBjZml3b3JkX3QgY3dvcmQpOwotc3RhdGljIGludCBmbGFzaF9mdWxsX3N0YXR1c19jaGVjayhmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBzZWN0b3IsIHVsb25nIHRvdXQsIGNoYXIgKiBwcm9tcHQpOwotI2lmZGVmIENGR19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFCi1zdGF0aWMgaW50IGZsYXNoX3dyaXRlX2NmaWJ1ZmZlcihmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1Y2hhciAqIGNwLCBpbnQgbGVuKTsKLSNlbmRpZgotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogY3JlYXRlIGFuIGFkZHJlc3MgYmFzZWQgb24gdGhlIG9mZnNldCBhbmQgdGhlIHBvcnQgd2lkdGgKLSAqLwotaW5saW5lIHVjaGFyICogZmxhc2hfbWFrZV9hZGRyKGZsYXNoX2luZm9fdCAqIGluZm8sIGludCBzZWN0LCBpbnQgb2Zmc2V0KQotewotCXJldHVybiAoKHVjaGFyICopKGluZm8tPnN0YXJ0W3NlY3RdICsgKG9mZnNldCAqIGluZm8tPnBvcnR3aWR0aCkpKTsKLX0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIHJlYWQgYSBjaGFyYWN0ZXIgYXQgYSBwb3J0IHdpZHRoIGFkZHJlc3MKLSAqLwotaW5saW5lIHVjaGFyIGZsYXNoX3JlYWRfdWNoYXIoZmxhc2hfaW5mb190ICogaW5mbywgdWNoYXIgb2Zmc2V0KQotewotCXVjaGFyICpjcDsKLQljcCA9IGZsYXNoX21ha2VfYWRkcihpbmZvLCAwLCBvZmZzZXQpOwotCXJldHVybiAoY3BbaW5mby0+cG9ydHdpZHRoIC0gMV0pOwotfQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiByZWFkIGEgc2hvcnQgd29yZCBieSBzd2FwcGluZyBmb3IgcHBjIGZvcm1hdC4KLSAqLwotdXNob3J0IGZsYXNoX3JlYWRfdXNob3J0KGZsYXNoX2luZm9fdCAqIGluZm8sIGludCBzZWN0LCAgdWNoYXIgb2Zmc2V0KQotewotICAgIHVjaGFyICogYWRkcjsKLQotICAgIGFkZHIgPSBmbGFzaF9tYWtlX2FkZHIoaW5mbywgc2VjdCwgb2Zmc2V0KTsKLSAgICByZXR1cm4gKChhZGRyWygyKmluZm8tPnBvcnR3aWR0aCkgLSAxXSA8PCA4KSB8IGFkZHJbaW5mby0+cG9ydHdpZHRoIC0gMV0pOwotCi19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIHJlYWQgYSBsb25nIHdvcmQgYnkgcGlja2luZyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBvZiBlYWNoIG1haXhpbXVtCi0gKiBwb3J0IHNpemUgd29yZC4gU3dhcCBmb3IgcHBjIGZvcm1hdC4KLSAqLwotdWxvbmcgZmxhc2hfcmVhZF9sb25nKGZsYXNoX2luZm9fdCAqIGluZm8sIGludCBzZWN0LCAgdWNoYXIgb2Zmc2V0KQotewotICAgIHVjaGFyICogYWRkcjsKLQotICAgIGFkZHIgPSBmbGFzaF9tYWtlX2FkZHIoaW5mbywgc2VjdCwgb2Zmc2V0KTsKLSAgICByZXR1cm4gKCAoYWRkclsoMippbmZvLT5wb3J0d2lkdGgpIC0gMV0gPDwgMjQgKSB8IChhZGRyWyhpbmZvLT5wb3J0d2lkdGgpIC0xXSA8PCAxNikgfAotCSAgICAoYWRkclsoNCppbmZvLT5wb3J0d2lkdGgpIC0gMV0gPDwgOCkgfCBhZGRyWygzKmluZm8tPnBvcnR3aWR0aCkgLSAxXSk7Ci0KLX0KLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi11bnNpZ25lZCBsb25nIGZsYXNoX2luaXQgKHZvaWQpCi17Ci0JdW5zaWduZWQgbG9uZyBzaXplOwotCWludCBpOwotCXVuc2lnbmVkIGxvbmcgIGFkZHJlc3M7Ci0KLQotCS8qIFRoZSBmbGFzaCBpcyBwb3NpdGlvbmVkIGJhY2sgdG8gYmFjaywgd2l0aCB0aGUgZGVtdWx0aXBsZXhpbmcgb2YgdGhlIGNoaXAKLQkgKiBiYXNlZCBvbiB0aGUgQTI0IGFkZHJlc3MgbGluZS4KLQkgKgotCSAqLwotCi0JYWRkcmVzcyA9IENGR19GTEFTSF9CQVNFOwotCXNpemUgPSAwOwotCi0JLyogSW5pdDogbm8gRkxBU0hlcyBrbm93biAqLwotCWZvciAoaT0wOyBpPENGR19NQVhfRkxBU0hfQkFOS1M7ICsraSkgewotCQlmbGFzaF9pbmZvW2ldLmZsYXNoX2lkID0gRkxBU0hfVU5LTk9XTjsKLQkJc2l6ZSArPSBmbGFzaF9pbmZvW2ldLnNpemUgPSBmbGFzaF9nZXRfc2l6ZShhZGRyZXNzLCBpKTsKLQkJYWRkcmVzcyArPSBDRkdfRkxBU0hfSU5DUkVNRU5UOwotCQlpZiAoZmxhc2hfaW5mb1tpXS5mbGFzaF9pZCA9PSBGTEFTSF9VTktOT1dOKSB7Ci0JCQlwcmludGYgKCIjIyBVbmtub3duIEZMQVNIIG9uIEJhbmsgJWQgLSBTaXplID0gMHglMDhseCA9ICVsZCBNQlxuIixpLAotCQkJCWZsYXNoX2luZm9bMF0uc2l6ZSwgZmxhc2hfaW5mb1tpXS5zaXplPDwyMCk7Ci0JCX0KLQl9Ci0KLSNpZiAwIC8qIHRlc3Qtb25seSAqLwotCS8qIE1vbml0b3IgcHJvdGVjdGlvbiBPTiBieSBkZWZhdWx0ICovCi0jaWYgKENGR19NT05JVE9SX0JBU0UgPj0gQ0ZHX0ZMQVNIX0JBU0UpCi0JZm9yKGk9MDsgZmxhc2hfaW5mb1swXS5zdGFydFtpXSA8IENGR19NT05JVE9SX0JBU0UrbW9uaXRvcl9mbGFzaF9sZW4tMTsgaSsrKQotCQkodm9pZClmbGFzaF9yZWFsX3Byb3RlY3QoJmZsYXNoX2luZm9bMF0sIGksIDEpOwotI2VuZGlmCi0jZW5kaWYKLQotCXJldHVybiAoc2l6ZSk7Ci19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotaW50IGZsYXNoX2VyYXNlIChmbGFzaF9pbmZvX3QgKmluZm8sIGludCBzX2ZpcnN0LCBpbnQgc19sYXN0KQotewotCWludCByY29kZSA9IDA7Ci0JaW50IHByb3Q7Ci0JaW50IHNlY3Q7Ci0KLQlpZiggaW5mby0+Zmxhc2hfaWQgIT0gRkxBU0hfTUFOX0NGSSkgewotCQlwcmludGYgKCJDYW4ndCBlcmFzZSB1bmtub3duIGZsYXNoIHR5cGUgLSBhYm9ydGVkXG4iKTsKLQkJcmV0dXJuIDE7Ci0JfQotCWlmICgoc19maXJzdCA8IDApIHx8IChzX2ZpcnN0ID4gc19sYXN0KSkgewotCQlwcmludGYgKCItIG5vIHNlY3RvcnMgdG8gZXJhc2VcbiIpOwotCQlyZXR1cm4gMTsKLQl9Ci0KLQlwcm90ID0gMDsKLQlmb3IgKHNlY3Q9c19maXJzdDsgc2VjdDw9c19sYXN0OyArK3NlY3QpIHsKLQkJaWYgKGluZm8tPnByb3RlY3Rbc2VjdF0pIHsKLQkJCXByb3QrKzsKLQkJfQotCX0KLQlpZiAocHJvdCkgewotCQlwcmludGYgKCItIFdhcm5pbmc6ICVkIHByb3RlY3RlZCBzZWN0b3JzIHdpbGwgbm90IGJlIGVyYXNlZCFcbiIsCi0JCQlwcm90KTsKLQl9IGVsc2UgewotCQlwcmludGYgKCJcbiIpOwotCX0KLQotCi0JZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdDw9c19sYXN0OyBzZWN0KyspIHsKLQkJaWYgKGluZm8tPnByb3RlY3Rbc2VjdF0gPT0gMCkgeyAvKiBub3QgcHJvdGVjdGVkICovCi0JCQlmbGFzaF93cml0ZV9jbWQoaW5mbywgc2VjdCwgMCwgRkxBU0hfQ01EX0NMRUFSX1NUQVRVUyk7Ci0JCQlmbGFzaF93cml0ZV9jbWQoaW5mbywgc2VjdCwgMCwgRkxBU0hfQ01EX0JMT0NLX0VSQVNFKTsKLQkJCWZsYXNoX3dyaXRlX2NtZChpbmZvLCBzZWN0LCAwLCBGTEFTSF9DTURfRVJBU0VfQ09ORklSTSk7Ci0KLQkJCWlmKGZsYXNoX2Z1bGxfc3RhdHVzX2NoZWNrKGluZm8sIHNlY3QsIGluZm8tPmVyYXNlX2Jsa190b3V0LCAiZXJhc2UiKSkgewotCQkJCXJjb2RlID0gMTsKLQkJCX0gZWxzZQotCQkJCXByaW50ZigiLiIpOwotCQl9Ci0JfQotCXByaW50ZiAoIiBkb25lXG4iKTsKLQlyZXR1cm4gcmNvZGU7Ci19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotdm9pZCBmbGFzaF9wcmludF9pbmZvICAoZmxhc2hfaW5mb190ICppbmZvKQotewotCWludCBpOwotCi0JaWYgKGluZm8tPmZsYXNoX2lkICE9IEZMQVNIX01BTl9DRkkpIHsKLQkJcHJpbnRmICgibWlzc2luZyBvciB1bmtub3duIEZMQVNIIHR5cGVcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JcHJpbnRmKCJDRkkgY29uZm9ybWFudCBGTEFTSCAoJWQgeCAlZCkiLAotCSAgICAgICAoaW5mby0+cG9ydHdpZHRoCSA8PCAzICksIChpbmZvLT5jaGlwd2lkdGggIDw8IDMgKSk7Ci0JcHJpbnRmICgiICBTaXplOiAlbGQgTUIgaW4gJWQgU2VjdG9yc1xuIiwKLQkJaW5mby0+c2l6ZSA+PiAyMCwgaW5mby0+c2VjdG9yX2NvdW50KTsKLQlwcmludGYoIiBFcmFzZSB0aW1lb3V0ICVsZCBtcywgd3JpdGUgdGltZW91dCAlbGQgbXMsIGJ1ZmZlciB3cml0ZSB0aW1lb3V0ICVsZCBtcywgYnVmZmVyIHNpemUgJWRcbiIsCi0JICAgICAgIGluZm8tPmVyYXNlX2Jsa190b3V0LCBpbmZvLT53cml0ZV90b3V0LCBpbmZvLT5idWZmZXJfd3JpdGVfdG91dCwgaW5mby0+YnVmZmVyX3NpemUpOwotCi0JcHJpbnRmICgiICBTZWN0b3IgU3RhcnQgQWRkcmVzc2VzOiIpOwotCWZvciAoaT0wOyBpPGluZm8tPnNlY3Rvcl9jb3VudDsgKytpKSB7Ci0JCWlmICgoaSAlIDUpID09IDApCi0JCQlwcmludGYgKCJcbiIpOwotCQlwcmludGYgKCIgJTA4bFglNXMiLAotCQkJaW5mby0+c3RhcnRbaV0sCi0JCQlpbmZvLT5wcm90ZWN0W2ldID8gIiAoUk8pIiA6ICIgIgotCQkJKTsKLQl9Ci0JcHJpbnRmICgiXG4iKTsKLQlyZXR1cm47Ci19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIENvcHkgbWVtb3J5IHRvIGZsYXNoLCByZXR1cm5zOgotICogMCAtIE9LCi0gKiAxIC0gd3JpdGUgdGltZW91dAotICogMiAtIEZsYXNoIG5vdCBlcmFzZWQKLSAqLwotaW50IHdyaXRlX2J1ZmYgKGZsYXNoX2luZm9fdCAqaW5mbywgdWNoYXIgKnNyYywgdWxvbmcgYWRkciwgdWxvbmcgY250KQotewotCXVsb25nIHdwOwotCXVsb25nIGNwOwotCWludCBhbG47Ci0JY2Zpd29yZF90IGN3b3JkOwotCWludCBpLCByYzsKLQotCS8qIGdldCBsb3dlciBhbGlnbmVkIGFkZHJlc3MgKi8KLQl3cCA9IChhZGRyICYgfihpbmZvLT5wb3J0d2lkdGggLSAxKSk7Ci0KLQkvKiBoYW5kbGUgdW5hbGlnbmVkIHN0YXJ0ICovCi0JaWYoKGFsbiA9IGFkZHIgLSB3cCkgIT0gMCkgewotCQljd29yZC5sID0gMDsKLQkJY3AgPSB3cDsKLQkJZm9yKGk9MDtpPGFsbjsgKytpLCArK2NwKQotCQkJZmxhc2hfYWRkX2J5dGUoaW5mbywgJmN3b3JkLCAoKih1Y2hhciAqKWNwKSk7Ci0KLQkJZm9yKDsgKGk8IGluZm8tPnBvcnR3aWR0aCkgJiYgKGNudCA+IDApIDsgaSsrKSB7Ci0JCQlmbGFzaF9hZGRfYnl0ZShpbmZvLCAmY3dvcmQsICpzcmMrKyk7Ci0JCQljbnQtLTsKLQkJCWNwKys7Ci0JCX0KLQkJZm9yKDsgKGNudCA9PSAwKSAmJiAoaSA8IGluZm8tPnBvcnR3aWR0aCk7ICsraSwgKytjcCkKLQkJCWZsYXNoX2FkZF9ieXRlKGluZm8sICZjd29yZCwgKCoodWNoYXIgKiljcCkpOwotCQlpZigocmMgPSBmbGFzaF93cml0ZV9jZml3b3JkKGluZm8sIHdwLCBjd29yZCkpICE9IDApCi0JCQlyZXR1cm4gcmM7Ci0JCXdwID0gY3A7Ci0JfQotCi0jaWZkZWYgQ0ZHX0ZMQVNIX1VTRV9CVUZGRVJfV1JJVEUKLQl3aGlsZShjbnQgPj0gaW5mby0+cG9ydHdpZHRoKSB7Ci0JCWkgPSBpbmZvLT5idWZmZXJfc2l6ZSA+IGNudD8gY250OiBpbmZvLT5idWZmZXJfc2l6ZTsKLQkJaWYoKHJjID0gZmxhc2hfd3JpdGVfY2ZpYnVmZmVyKGluZm8sIHdwLCBzcmMsaSkpICE9IEVSUl9PSykKLQkJCXJldHVybiByYzsKLQkJd3AgKz0gaTsKLQkJc3JjICs9IGk7Ci0JCWNudCAtPWk7Ci0JfQotI2Vsc2UKLQkvKiBoYW5kbGUgdGhlIGFsaWduZWQgcGFydCAqLwotCXdoaWxlKGNudCA+PSBpbmZvLT5wb3J0d2lkdGgpIHsKLQkJY3dvcmQubCA9IDA7Ci0JCWZvcihpID0gMDsgaSA8IGluZm8tPnBvcnR3aWR0aDsgaSsrKSB7Ci0JCQlmbGFzaF9hZGRfYnl0ZShpbmZvLCAmY3dvcmQsICpzcmMrKyk7Ci0JCX0KLQkJaWYoKHJjID0gZmxhc2hfd3JpdGVfY2Zpd29yZChpbmZvLCB3cCwgY3dvcmQpKSAhPSAwKQotCQkJcmV0dXJuIHJjOwotCQl3cCArPSBpbmZvLT5wb3J0d2lkdGg7Ci0JCWNudCAtPSBpbmZvLT5wb3J0d2lkdGg7Ci0JfQotI2VuZGlmIC8qIENGR19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFICovCi0JaWYgKGNudCA9PSAwKSB7Ci0JCXJldHVybiAoMCk7Ci0JfQotCi0JLyoKLQkgKiBoYW5kbGUgdW5hbGlnbmVkIHRhaWwgYnl0ZXMKLQkgKi8KLQljd29yZC5sID0gMDsKLQlmb3IgKGk9MCwgY3A9d3A7IChpPGluZm8tPnBvcnR3aWR0aCkgJiYgKGNudD4wKTsgKytpLCArK2NwKSB7Ci0JCWZsYXNoX2FkZF9ieXRlKGluZm8sICZjd29yZCwgKnNyYysrKTsKLQkJLS1jbnQ7Ci0JfQotCWZvciAoOyBpPGluZm8tPnBvcnR3aWR0aDsgKytpLCArK2NwKSB7Ci0JCWZsYXNoX2FkZF9ieXRlKGluZm8sICYgY3dvcmQsICgqKHVjaGFyICopY3ApKTsKLQl9Ci0KLQlyZXR1cm4gZmxhc2hfd3JpdGVfY2Zpd29yZChpbmZvLCB3cCwgY3dvcmQpOwotfQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLWludCBmbGFzaF9yZWFsX3Byb3RlY3QoZmxhc2hfaW5mb190ICppbmZvLCBsb25nIHNlY3RvciwgaW50IHByb3QpCi17Ci0JaW50IHJldGNvZGUgPSAwOwotCi0JZmxhc2hfd3JpdGVfY21kKGluZm8sIHNlY3RvciwgMCwgRkxBU0hfQ01EX0NMRUFSX1NUQVRVUyk7Ci0JZmxhc2hfd3JpdGVfY21kKGluZm8sIHNlY3RvciwgMCwgRkxBU0hfQ01EX1BST1RFQ1QpOwotCWlmKHByb3QpCi0JCWZsYXNoX3dyaXRlX2NtZChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX0NNRF9QUk9URUNUX1NFVCk7Ci0JZWxzZQotCQlmbGFzaF93cml0ZV9jbWQoaW5mbywgc2VjdG9yLCAwLCBGTEFTSF9DTURfUFJPVEVDVF9DTEVBUik7Ci0KLQlpZigocmV0Y29kZSA9IGZsYXNoX2Z1bGxfc3RhdHVzX2NoZWNrKGluZm8sIHNlY3RvciwgaW5mby0+ZXJhc2VfYmxrX3RvdXQsCi0JCQkJCSBwcm90PyJwcm90ZWN0IjoidW5wcm90ZWN0IikpID09IDApIHsKLQotCQlpbmZvLT5wcm90ZWN0W3NlY3Rvcl0gPSBwcm90OwotCQkvKiBJbnRlbCdzIHVucHJvdGVjdCB1bnByb3RlY3RzIGFsbCBsb2NraW5nICovCi0JCWlmKHByb3QgPT0gMCkgewotCQkJaW50IGk7Ci0JCQlmb3IoaSA9IDAgOyBpPGluZm8tPnNlY3Rvcl9jb3VudDsgaSsrKSB7Ci0JCQkJaWYoaW5mby0+cHJvdGVjdFtpXSkKLQkJCQkJZmxhc2hfcmVhbF9wcm90ZWN0KGluZm8sIGksIDEpOwotCQkJfQotCQl9Ci0JfQotCi0JcmV0dXJuIHJldGNvZGU7Ci19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiAgd2FpdCBmb3IgWFNSLjcgdG8gYmUgc2V0LiBUaW1lIG91dCB3aXRoIGFuIGVycm9yIGlmIGl0IGRvZXMgbm90LgotICogIFRoaXMgcm91dGluZSBkb2VzIG5vdCBzZXQgdGhlIGZsYXNoIHRvIHJlYWQtYXJyYXkgbW9kZS4KLSAqLwotc3RhdGljIGludCBmbGFzaF9zdGF0dXNfY2hlY2soZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgc2VjdG9yLCB1bG9uZyB0b3V0LCBjaGFyICogcHJvbXB0KQotewotCXVsb25nIHN0YXJ0OwotCi0JLyogV2FpdCBmb3IgY29tbWFuZCBjb21wbGV0aW9uICovCi0Jc3RhcnQgPSBnZXRfdGltZXIgKDApOwotCXdoaWxlKCFmbGFzaF9pc3NldChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX1NUQVRVU19ET05FKSkgewotCQlpZiAoZ2V0X3RpbWVyKHN0YXJ0KSA+IGluZm8tPmVyYXNlX2Jsa190b3V0KSB7Ci0JCQlwcmludGYoIkZsYXNoICVzIHRpbWVvdXQgYXQgYWRkcmVzcyAlbHhcbiIsIHByb21wdCwgaW5mby0+c3RhcnRbc2VjdG9yXSk7Ci0JCQlmbGFzaF93cml0ZV9jbWQoaW5mbywgc2VjdG9yLCAwLCBGTEFTSF9DTURfUkVTRVQpOwotCQkJcmV0dXJuIEVSUl9USU1PVVQ7Ci0JCX0KLQl9Ci0JcmV0dXJuIEVSUl9PSzsKLX0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIFdhaXQgZm9yIFhTUi43IHRvIGJlIHNldCwgaWYgaXQgdGltZXMgb3V0IHByaW50IGFuIGVycm9yLCBvdGhlcndpc2UgZG8gYSBmdWxsIHN0YXR1cyBjaGVjay4KLSAqIFRoaXMgcm91dGluZSBzZXRzIHRoZSBmbGFzaCB0byByZWFkLWFycmF5IG1vZGUuCi0gKi8KLXN0YXRpYyBpbnQgZmxhc2hfZnVsbF9zdGF0dXNfY2hlY2soZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgc2VjdG9yLCB1bG9uZyB0b3V0LCBjaGFyICogcHJvbXB0KQotewotCWludCByZXRjb2RlOwotCXJldGNvZGUgPSBmbGFzaF9zdGF0dXNfY2hlY2soaW5mbywgc2VjdG9yLCB0b3V0LCBwcm9tcHQpOwotCWlmKChyZXRjb2RlID09IEVSUl9PSykgJiYgIWZsYXNoX2lzZXF1YWwoaW5mbyxzZWN0b3IsIDAsIEZMQVNIX1NUQVRVU19ET05FKSkgewotCQlyZXRjb2RlID0gRVJSX0lOVkFMOwotCQlwcmludGYoIkZsYXNoICVzIGVycm9yIGF0IGFkZHJlc3MgJWx4XG4iLCBwcm9tcHQsaW5mby0+c3RhcnRbc2VjdG9yXSk7Ci0JCWlmKGZsYXNoX2lzc2V0KGluZm8sIHNlY3RvciwgMCwgRkxBU0hfU1RBVFVTX0VDTEJTIHwgRkxBU0hfU1RBVFVTX1BTTEJTKSl7Ci0JCQlwcmludGYoIkNvbW1hbmQgU2VxdWVuY2UgRXJyb3IuXG4iKTsKLQkJfSBlbHNlIGlmKGZsYXNoX2lzc2V0KGluZm8sIHNlY3RvciwgMCwgRkxBU0hfU1RBVFVTX0VDTEJTKSl7Ci0JCQlwcmludGYoIkJsb2NrIEVyYXNlIEVycm9yLlxuIik7Ci0JCSAgICAgICAgcmV0Y29kZSA9IEVSUl9OT1RfRVJBU0VEOwotCQl9IGVsc2UgaWYgKGZsYXNoX2lzc2V0KGluZm8sIHNlY3RvciwgMCwgRkxBU0hfU1RBVFVTX1BTTEJTKSkgewotCQkJcHJpbnRmKCJMb2NraW5nIEVycm9yXG4iKTsKLQkJfQotCQlpZihmbGFzaF9pc3NldChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX1NUQVRVU19EUFMpKXsKLQkJCXByaW50ZigiQmxvY2sgbG9ja2VkLlxuIik7Ci0JCQlyZXRjb2RlID0gRVJSX1BST1RFQ1RFRDsKLQkJfQotCQlpZihmbGFzaF9pc3NldChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX1NUQVRVU19WUEVOUykpCi0JCQlwcmludGYoIlZwcCBMb3cgRXJyb3IuXG4iKTsKLQl9Ci0JZmxhc2hfd3JpdGVfY21kKGluZm8sIHNlY3RvciwgMCwgRkxBU0hfQ01EX1JFU0VUKTsKLQlyZXR1cm4gcmV0Y29kZTsKLX0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotc3RhdGljIHZvaWQgZmxhc2hfYWRkX2J5dGUoZmxhc2hfaW5mb190ICppbmZvLCBjZml3b3JkX3QgKiBjd29yZCwgdWNoYXIgYykKLXsKLQlzd2l0Y2goaW5mby0+cG9ydHdpZHRoKSB7Ci0JY2FzZSBGTEFTSF9DRklfOEJJVDoKLQkJY3dvcmQtPmMgPSBjOwotCQlicmVhazsKLQljYXNlIEZMQVNIX0NGSV8xNkJJVDoKLQkJY3dvcmQtPncgPSAoY3dvcmQtPncgPDwgOCkgfCBjOwotCQlicmVhazsKLQljYXNlIEZMQVNIX0NGSV8zMkJJVDoKLQkJY3dvcmQtPmwgPSAoY3dvcmQtPmwgPDwgOCkgfCBjOwotCX0KLX0KLQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBtYWtlIGEgcHJvcGVyIHNpemVkIGNvbW1hbmQgYmFzZWQgb24gdGhlIHBvcnQgYW5kIGNoaXAgd2lkdGhzCi0gKi8KLXN0YXRpYyB2b2lkIGZsYXNoX21ha2VfY21kKGZsYXNoX2luZm9fdCAqIGluZm8sIHVjaGFyIGNtZCwgdm9pZCAqIGNtZGJ1ZikKLXsKLQlpbnQgaTsKLQl1Y2hhciAqY3AgPSAodWNoYXIgKiljbWRidWY7Ci0JZm9yKGk9MDsgaTwgaW5mby0+cG9ydHdpZHRoOyBpKyspCi0JCSpjcCsrID0gKChpKzEpICUgaW5mby0+Y2hpcHdpZHRoKSA/ICdcMCc6Y21kOwotfQotCi0vKgotICogV3JpdGUgYSBwcm9wZXIgc2l6ZWQgY29tbWFuZCB0byB0aGUgY29ycmVjdCBhZGRyZXNzCi0gKi8KLXN0YXRpYyB2b2lkIGZsYXNoX3dyaXRlX2NtZChmbGFzaF9pbmZvX3QgKiBpbmZvLCBpbnQgc2VjdCwgdWNoYXIgb2Zmc2V0LCB1Y2hhciBjbWQpCi17Ci0KLQl2b2xhdGlsZSBjZmlwdHJfdCBhZGRyOwotCWNmaXdvcmRfdCBjd29yZDsKLQlhZGRyLmNwID0gZmxhc2hfbWFrZV9hZGRyKGluZm8sIHNlY3QsIG9mZnNldCk7Ci0JZmxhc2hfbWFrZV9jbWQoaW5mbywgY21kLCAmY3dvcmQpOwotCXN3aXRjaChpbmZvLT5wb3J0d2lkdGgpIHsKLQljYXNlIEZMQVNIX0NGSV84QklUOgotCQkqYWRkci5jcCA9IGN3b3JkLmM7Ci0JCWJyZWFrOwotCWNhc2UgRkxBU0hfQ0ZJXzE2QklUOgotCQkqYWRkci53cCA9IGN3b3JkLnc7Ci0JCWJyZWFrOwotCWNhc2UgRkxBU0hfQ0ZJXzMyQklUOgotCQkqYWRkci5scCA9IGN3b3JkLmw7Ci0JCWJyZWFrOwotCX0KLX0KLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi1zdGF0aWMgaW50IGZsYXNoX2lzZXF1YWwoZmxhc2hfaW5mb190ICogaW5mbywgaW50IHNlY3QsIHVjaGFyIG9mZnNldCwgdWNoYXIgY21kKQotewotCWNmaXB0cl90IGNwdHI7Ci0JY2Zpd29yZF90IGN3b3JkOwotCWludCByZXR2YWw7Ci0JY3B0ci5jcCA9IGZsYXNoX21ha2VfYWRkcihpbmZvLCBzZWN0LCBvZmZzZXQpOwotCWZsYXNoX21ha2VfY21kKGluZm8sIGNtZCwgJmN3b3JkKTsKLQlzd2l0Y2goaW5mby0+cG9ydHdpZHRoKSB7Ci0JY2FzZSBGTEFTSF9DRklfOEJJVDoKLQkJcmV0dmFsID0gKGNwdHIuY3BbMF0gPT0gY3dvcmQuYyk7Ci0JCWJyZWFrOwotCWNhc2UgRkxBU0hfQ0ZJXzE2QklUOgotCQlyZXR2YWwgPSAoY3B0ci53cFswXSA9PSBjd29yZC53KTsKLQkJYnJlYWs7Ci0JY2FzZSBGTEFTSF9DRklfMzJCSVQ6Ci0JCXJldHZhbCA9IChjcHRyLmxwWzBdID09IGN3b3JkLmwpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR2YWwgPSAwOwotCQlicmVhazsKLQl9Ci0JcmV0dXJuIHJldHZhbDsKLX0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotc3RhdGljIGludCBmbGFzaF9pc3NldChmbGFzaF9pbmZvX3QgKiBpbmZvLCBpbnQgc2VjdCwgdWNoYXIgb2Zmc2V0LCB1Y2hhciBjbWQpCi17Ci0JY2ZpcHRyX3QgY3B0cjsKLQljZml3b3JkX3QgY3dvcmQ7Ci0JaW50IHJldHZhbDsKLQljcHRyLmNwID0gZmxhc2hfbWFrZV9hZGRyKGluZm8sIHNlY3QsIG9mZnNldCk7Ci0JZmxhc2hfbWFrZV9jbWQoaW5mbywgY21kLCAmY3dvcmQpOwotCXN3aXRjaChpbmZvLT5wb3J0d2lkdGgpIHsKLQljYXNlIEZMQVNIX0NGSV84QklUOgotCQlyZXR2YWwgPSAoKGNwdHIuY3BbMF0gJiBjd29yZC5jKSA9PSBjd29yZC5jKTsKLQkJYnJlYWs7Ci0JY2FzZSBGTEFTSF9DRklfMTZCSVQ6Ci0JCXJldHZhbCA9ICgoY3B0ci53cFswXSAmIGN3b3JkLncpID09IGN3b3JkLncpOwotCQlicmVhazsKLQljYXNlIEZMQVNIX0NGSV8zMkJJVDoKLQkJcmV0dmFsID0gKChjcHRyLmxwWzBdICYgY3dvcmQubCkgPT0gY3dvcmQubCk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJldHZhbCA9IDA7Ci0JCWJyZWFrOwotCX0KLQlyZXR1cm4gcmV0dmFsOwotfQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBkZXRlY3QgaWYgZmxhc2ggaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBDb21tb24gRmxhc2ggSW50ZXJmYWNlIChDRkkpCi0gKiBodHRwOi8vd3d3LmplZGVjLm9yZy9kb3dubG9hZC9zZWFyY2gvamVzZDY4LnBkZgotICoKLSAqLwotc3RhdGljIGludCBmbGFzaF9kZXRlY3RfY2ZpKGZsYXNoX2luZm9fdCAqIGluZm8pCi17Ci0KLQlmb3IoaW5mby0+cG9ydHdpZHRoPUZMQVNIX0NGSV84QklUOyBpbmZvLT5wb3J0d2lkdGggPD0gRkxBU0hfQ0ZJXzMyQklUOwotCSAgICBpbmZvLT5wb3J0d2lkdGggPDw9IDEpIHsKLQkJZm9yKGluZm8tPmNoaXB3aWR0aCA9RkxBU0hfQ0ZJX0JZODsKLQkJICAgIGluZm8tPmNoaXB3aWR0aCA8PSBpbmZvLT5wb3J0d2lkdGg7Ci0JCSAgICBpbmZvLT5jaGlwd2lkdGggPDw9IDEpIHsKLQkJCWZsYXNoX3dyaXRlX2NtZChpbmZvLCAwLCAwLCBGTEFTSF9DTURfUkVTRVQpOwotCQkJZmxhc2hfd3JpdGVfY21kKGluZm8sIDAsIEZMQVNIX09GRlNFVF9DRkksIEZMQVNIX0NNRF9DRkkpOwotCQkJaWYoZmxhc2hfaXNlcXVhbChpbmZvLCAwLCBGTEFTSF9PRkZTRVRfQ0ZJX1JFU1AsJ1EnKSAmJgotCQkJICAgZmxhc2hfaXNlcXVhbChpbmZvLCAwLCBGTEFTSF9PRkZTRVRfQ0ZJX1JFU1AgKyAxLCAnUicpICYmCi0JCQkgICBmbGFzaF9pc2VxdWFsKGluZm8sIDAsIEZMQVNIX09GRlNFVF9DRklfUkVTUCArIDIsICdZJykpCi0JCQkJcmV0dXJuIDE7Ci0JCX0KLQl9Ci0JcmV0dXJuIDA7Ci19Ci0vKgotICogVGhlIGZvbGxvd2luZyBjb2RlIGNhbm5vdCBiZSBydW4gZnJvbSBGTEFTSCEKLSAqCi0gKi8KLXN0YXRpYyB1bG9uZyBmbGFzaF9nZXRfc2l6ZSAodWxvbmcgYmFzZSwgaW50IGJhbmtudW0pCi17Ci0JZmxhc2hfaW5mb190ICogaW5mbyA9ICZmbGFzaF9pbmZvW2JhbmtudW1dOwotCWludCBpLCBqOwotCWludCBzZWN0X2NudDsKLQl1bnNpZ25lZCBsb25nIHNlY3RvcjsKLQl1bnNpZ25lZCBsb25nIHRtcDsKLQlpbnQgc2l6ZV9yYXRpbyA9IDA7Ci0JdWNoYXIgbnVtX2VyYXNlX3JlZ2lvbnM7Ci0JaW50ICBlcmFzZV9yZWdpb25fc2l6ZTsKLQlpbnQgIGVyYXNlX3JlZ2lvbl9jb3VudDsKLQotCWluZm8tPnN0YXJ0WzBdID0gYmFzZTsKLQotCWludmFsaWRhdGVfZGNhY2hlX3JhbmdlKGJhc2UsIGJhc2UrMHg0MDApOwotCi0JaWYoZmxhc2hfZGV0ZWN0X2NmaShpbmZvKSl7Ci0KLQkgICAgICAgIHNpemVfcmF0aW8gPSBpbmZvLT5wb3J0d2lkdGggLyBpbmZvLT5jaGlwd2lkdGg7Ci0JCW51bV9lcmFzZV9yZWdpb25zID0gZmxhc2hfcmVhZF91Y2hhcihpbmZvLCBGTEFTSF9PRkZTRVRfTlVNX0VSQVNFX1JFR0lPTlMpOwotCi0JCXNlY3RfY250ID0gMDsKLQkJc2VjdG9yID0gYmFzZTsKLQkJZm9yKGkgPSAwIDsgaSA8IG51bV9lcmFzZV9yZWdpb25zOyBpKyspIHsKLQkJCWlmKGkgPiBOVU1fRVJBU0VfUkVHSU9OUykgewotCQkJCXByaW50ZigiJWQgZXJhc2UgcmVnaW9ucyBmb3VuZCwgb25seSAlZCB1c2VkXG4iLAotCQkJCSAgICAgICBudW1fZXJhc2VfcmVnaW9ucywgTlVNX0VSQVNFX1JFR0lPTlMpOwotCQkJCWJyZWFrOwotCQkJfQotCQkJdG1wID0gZmxhc2hfcmVhZF9sb25nKGluZm8sIDAsIEZMQVNIX09GRlNFVF9FUkFTRV9SRUdJT05TKTsKLQkJCWVyYXNlX3JlZ2lvbl9zaXplID0gKHRtcCAmIDB4ZmZmZik/ICgodG1wICYgMHhmZmZmKSAqIDI1Nik6IDEyODsKLQkJCXRtcCA+Pj0gMTY7Ci0JCQllcmFzZV9yZWdpb25fY291bnQgPSAodG1wICYgMHhmZmZmKSArMTsKLQkJCWZvcihqID0gMDsgajwgZXJhc2VfcmVnaW9uX2NvdW50OyBqKyspIHsKLQkJCQlpbmZvLT5zdGFydFtzZWN0X2NudF0gPSBzZWN0b3I7Ci0JCQkJc2VjdG9yICs9IChlcmFzZV9yZWdpb25fc2l6ZSAqIHNpemVfcmF0aW8pOwotCQkJCWluZm8tPnByb3RlY3Rbc2VjdF9jbnRdID0gZmxhc2hfaXNzZXQoaW5mbywgc2VjdF9jbnQsIEZMQVNIX09GRlNFVF9QUk9URUNULCBGTEFTSF9TVEFUVVNfUFJPVEVDVCk7Ci0JCQkJc2VjdF9jbnQrKzsKLQkJCX0KLQkJfQotCi0JCWluZm8tPnNlY3Rvcl9jb3VudCA9IHNlY3RfY250OwotCQkvKiBtdWx0aXBseSB0aGUgc2l6ZSBieSB0aGUgbnVtYmVyIG9mIGNoaXBzICovCi0JCWluZm8tPnNpemUgPSAoMSA8PCBmbGFzaF9yZWFkX3VjaGFyKGluZm8sIEZMQVNIX09GRlNFVF9TSVpFKSkgKiBzaXplX3JhdGlvOwotCQlpbmZvLT5idWZmZXJfc2l6ZSA9ICgxIDw8IGZsYXNoX3JlYWRfdXNob3J0KGluZm8sIDAsIEZMQVNIX09GRlNFVF9CVUZGRVJfU0laRSkpOwotCQl0bXAgPSAxIDw8IGZsYXNoX3JlYWRfdWNoYXIoaW5mbywgRkxBU0hfT0ZGU0VUX0VUT1VUKTsKLQkJaW5mby0+ZXJhc2VfYmxrX3RvdXQgPSAodG1wICogKDEgPDwgZmxhc2hfcmVhZF91Y2hhcihpbmZvLCBGTEFTSF9PRkZTRVRfRU1BWF9UT1VUKSkpOwotCQl0bXAgPSAxIDw8IGZsYXNoX3JlYWRfdWNoYXIoaW5mbywgRkxBU0hfT0ZGU0VUX1dCVE9VVCk7Ci0JCWluZm8tPmJ1ZmZlcl93cml0ZV90b3V0ID0gKHRtcCAqICgxIDw8IGZsYXNoX3JlYWRfdWNoYXIoaW5mbywgRkxBU0hfT0ZGU0VUX1dCTUFYX1RPVVQpKSk7Ci0JCXRtcCA9IDEgPDwgZmxhc2hfcmVhZF91Y2hhcihpbmZvLCBGTEFTSF9PRkZTRVRfV1RPVVQpOwotCQlpbmZvLT53cml0ZV90b3V0ID0gKHRtcCAqICgxIDw8IGZsYXNoX3JlYWRfdWNoYXIoaW5mbywgRkxBU0hfT0ZGU0VUX1dNQVhfVE9VVCkpKS8gMTAwMDsKLQkJaW5mby0+Zmxhc2hfaWQgPSBGTEFTSF9NQU5fQ0ZJOwotCX0KLQotCWZsYXNoX3dyaXRlX2NtZChpbmZvLCAwLCAwLCBGTEFTSF9DTURfUkVTRVQpOwotI2lmZGVmIERFQlVHX0ZMQVNICi0JcHJpbnRmKCJwb3J0d2lkdGg9JWQgY2hpcHdpZHRoPSVkXG4iLCBpbmZvLT5wb3J0d2lkdGgsIGluZm8tPmNoaXB3aWR0aCk7IC8qIHRlc3Qtb25seSAqLwotI2VuZGlmCi0jaWZkZWYgREVCVUdfRkxBU0gKLQlwcmludGYoImZvdW5kICVkIGVyYXNlIHJlZ2lvbnNcbiIsIG51bV9lcmFzZV9yZWdpb25zKTsKLSNlbmRpZgotI2lmZGVmIERFQlVHX0ZMQVNICi0JcHJpbnRmKCJzaXplPSUwOHggc2VjdG9ycz0lMDh4IFxuIiwgaW5mby0+c2l6ZSwgaW5mby0+c2VjdG9yX2NvdW50KTsKLSNlbmRpZgotCXJldHVybihpbmZvLT5zaXplKTsKLX0KLQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLXN0YXRpYyBpbnQgZmxhc2hfd3JpdGVfY2Zpd29yZCAoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCBjZml3b3JkX3QgY3dvcmQpCi17Ci0KLQljZmlwdHJfdCBjdGxhZGRyOwotCWNmaXB0cl90IGNwdHI7Ci0JaW50IGZsYWc7Ci0KLQljdGxhZGRyLmNwID0gZmxhc2hfbWFrZV9hZGRyKGluZm8sIDAsIDApOwotCWNwdHIuY3AgPSAodWNoYXIgKilkZXN0OwotCi0KLQkvKiBDaGVjayBpZiBGbGFzaCBpcyAoc3VmZmljaWVudGx5KSBlcmFzZWQgKi8KLQlzd2l0Y2goaW5mby0+cG9ydHdpZHRoKSB7Ci0JY2FzZSBGTEFTSF9DRklfOEJJVDoKLQkJZmxhZyA9ICgoY3B0ci5jcFswXSAmIGN3b3JkLmMpID09IGN3b3JkLmMpOwotCQlicmVhazsKLQljYXNlIEZMQVNIX0NGSV8xNkJJVDoKLQkJZmxhZyA9ICgoY3B0ci53cFswXSAmIGN3b3JkLncpID09IGN3b3JkLncpOwotCQlicmVhazsKLQljYXNlIEZMQVNIX0NGSV8zMkJJVDoKLQkJZmxhZyA9ICgoY3B0ci5scFswXSAmIGN3b3JkLmwpCT09IGN3b3JkLmwpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gMjsKLQl9Ci0JaWYoIWZsYWcpCi0JCXJldHVybiAyOwotCi0JLyogRGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWNoIG1pZ2h0IGNhdXNlIGEgdGltZW91dCBoZXJlICovCi0JZmxhZyA9IGRpc2FibGVfaW50ZXJydXB0cygpOwotCi0JZmxhc2hfd3JpdGVfY21kKGluZm8sIDAsIDAsIEZMQVNIX0NNRF9DTEVBUl9TVEFUVVMpOwotCWZsYXNoX3dyaXRlX2NtZChpbmZvLCAwLCAwLCBGTEFTSF9DTURfV1JJVEUpOwotCi0Jc3dpdGNoKGluZm8tPnBvcnR3aWR0aCkgewotCWNhc2UgRkxBU0hfQ0ZJXzhCSVQ6Ci0JCWNwdHIuY3BbMF0gPSBjd29yZC5jOwotCQlicmVhazsKLQljYXNlIEZMQVNIX0NGSV8xNkJJVDoKLQkJY3B0ci53cFswXSA9IGN3b3JkLnc7Ci0JCWJyZWFrOwotCWNhc2UgRkxBU0hfQ0ZJXzMyQklUOgotCQljcHRyLmxwWzBdID0gY3dvcmQubDsKLQkJYnJlYWs7Ci0JfQotCi0JLyogcmUtZW5hYmxlIGludGVycnVwdHMgaWYgbmVjZXNzYXJ5ICovCi0JaWYoZmxhZykKLQkJZW5hYmxlX2ludGVycnVwdHMoKTsKLQotCXJldHVybiBmbGFzaF9mdWxsX3N0YXR1c19jaGVjayhpbmZvLCAwLCBpbmZvLT53cml0ZV90b3V0LCAid3JpdGUiKTsKLX0KLQotI2lmZGVmIENGR19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFCi0KLS8qIGxvb3AgdGhyb3VnaCB0aGUgc2VjdG9ycyBmcm9tIHRoZSBoaWdoZXN0IGFkZHJlc3MKLSAqIHdoZW4gdGhlIHBhc3NlZCBhZGRyZXNzIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIHNlY3RvciBhZGRyZXNzCi0gKiB3ZSBoYXZlIGEgbWF0Y2gKLSAqLwotc3RhdGljIGludCBmaW5kX3NlY3RvcihmbGFzaF9pbmZvX3QgKmluZm8sIHVsb25nIGFkZHIpCi17Ci0JaW50IHNlY3RvcjsKLQlmb3Ioc2VjdG9yID0gaW5mby0+c2VjdG9yX2NvdW50IC0gMTsgc2VjdG9yID49IDA7IHNlY3Rvci0tKSB7Ci0JCWlmKGFkZHIgPj0gaW5mby0+c3RhcnRbc2VjdG9yXSkKLQkJCWJyZWFrOwotCX0KLQlyZXR1cm4gc2VjdG9yOwotfQotCi1zdGF0aWMgaW50IGZsYXNoX3dyaXRlX2NmaWJ1ZmZlcihmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1Y2hhciAqIGNwLCBpbnQgbGVuKQotewotCi0JaW50IHNlY3RvcjsKLQlpbnQgY250OwotCWludCByZXRjb2RlOwotCXZvbGF0aWxlIGNmaXB0cl90IHNyYzsKLQl2b2xhdGlsZSBjZmlwdHJfdCBkc3Q7Ci0KLQlzcmMuY3AgPSBjcDsKLQlkc3QuY3AgPSAodWNoYXIgKilkZXN0OwotCXNlY3RvciA9IGZpbmRfc2VjdG9yKGluZm8sIGRlc3QpOwotCWZsYXNoX3dyaXRlX2NtZChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX0NNRF9DTEVBUl9TVEFUVVMpOwotCWZsYXNoX3dyaXRlX2NtZChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX0NNRF9XUklURV9UT19CVUZGRVIpOwotCWlmKChyZXRjb2RlID0gZmxhc2hfc3RhdHVzX2NoZWNrKGluZm8sIHNlY3RvciwgaW5mby0+YnVmZmVyX3dyaXRlX3RvdXQsCi0JCQkJCSAid3JpdGUgdG8gYnVmZmVyIikpID09IEVSUl9PSykgewotCQlzd2l0Y2goaW5mby0+cG9ydHdpZHRoKSB7Ci0JCWNhc2UgRkxBU0hfQ0ZJXzhCSVQ6Ci0JCQljbnQgPSBsZW47Ci0JCQlicmVhazsKLQkJY2FzZSBGTEFTSF9DRklfMTZCSVQ6Ci0JCQljbnQgPSBsZW4gPj4gMTsKLQkJCWJyZWFrOwotCQljYXNlIEZMQVNIX0NGSV8zMkJJVDoKLQkJCWNudCA9IGxlbiA+PiAyOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlyZXR1cm4gRVJSX0lOVkFMOwotCQkJYnJlYWs7Ci0JCX0KLQkJZmxhc2hfd3JpdGVfY21kKGluZm8sIHNlY3RvciwgMCwgKHVjaGFyKWNudC0xKTsKLQkJd2hpbGUoY250LS0gPiAwKSB7Ci0JCQlzd2l0Y2goaW5mby0+cG9ydHdpZHRoKSB7Ci0JCQljYXNlIEZMQVNIX0NGSV84QklUOgotCQkJCSpkc3QuY3ArKyA9ICpzcmMuY3ArKzsKLQkJCQlicmVhazsKLQkJCWNhc2UgRkxBU0hfQ0ZJXzE2QklUOgotCQkJCSpkc3Qud3ArKyA9ICpzcmMud3ArKzsKLQkJCQlicmVhazsKLQkJCWNhc2UgRkxBU0hfQ0ZJXzMyQklUOgotCQkJCSpkc3QubHArKyA9ICpzcmMubHArKzsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJcmV0dXJuIEVSUl9JTlZBTDsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCQlmbGFzaF93cml0ZV9jbWQoaW5mbywgc2VjdG9yLCAwLCBGTEFTSF9DTURfV1JJVEVfQlVGRkVSX0NPTkZJUk0pOwotCQlyZXRjb2RlID0gZmxhc2hfZnVsbF9zdGF0dXNfY2hlY2soaW5mbywgc2VjdG9yLCBpbmZvLT5idWZmZXJfd3JpdGVfdG91dCwKLQkJCQkJICAgICAiYnVmZmVyIHdyaXRlIik7Ci0JfQotCWZsYXNoX3dyaXRlX2NtZChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX0NNRF9DTEVBUl9TVEFUVVMpOwotCXJldHVybiByZXRjb2RlOwotfQotI2VuZGlmIC8qIENGR19VU0VfRkxBU0hfQlVGRkVSX1dSSVRFICovCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvaGg0MDUvY29uZmlnLm1rIGIvYm9hcmQvZXNkL2hoNDA1L2NvbmZpZy5tawppbmRleCA3MTI5YWQ1Li43OThhM2ZhIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvaGg0MDUvY29uZmlnLm1rCisrKyBiL2JvYXJkL2VzZC9oaDQwNS9jb25maWcubWsKQEAgLTI5LDMgKzI5LDYgQEAKIFRFWFRfQkFTRSA9IDB4RkZGODAwMDAKICNURVhUX0JBU0UgPSAweEZGRkMwMDAwCiAjVEVYVF9CQVNFID0gMHgwMEZDMDAwMAorCisjIENvbXBpbGUgdGhlIGxlZ2FjeSBOQU5EIGNvZGUgKENGR19OQU5EX0xFR0FDWSBtdXN0IGJlIGRlZmluZWQpCitCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9oaDQwNS9mcGdhZGF0YS5jIGIvYm9hcmQvZXNkL2hoNDA1L2ZwZ2FkYXRhLmMKaW5kZXggNThlZTNhOC4uNjRiY2E0NiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2hoNDA1L2ZwZ2FkYXRhLmMKKysrIGIvYm9hcmQvZXNkL2hoNDA1L2ZwZ2FkYXRhLmMKQEAgLTEsMjUyMCArMSwyNTE3IEBACi0gIDB4MWYsMHg4YiwweDA4LDB4MDgsMHg5YywweGM0LDB4ZTgsMHg0MiwweDAwLDB4MDMsMHg2OCwweDY4LDB4MzQsMHgzMCwweDM1LDB4NWYsCi0gIDB4MzEsMHg1ZiwweDMwLDB4MzUsMHgyZSwweDYyLDB4NjksMHg3NCwweDAwLDB4ZWMsMHhmZCwweDBmLDB4NzgsMHgxNCwweGQ3LDB4OTEsCi0gIDB4MmYsMHgwYywweDU3LDB4OWYsMHg2ZSwweDg5LDB4YTMsMHhlOSwweDkxLDB4YTYsMHg5MSwweDg0LDB4NTcsMHhiNiwweDMxLDB4NmUsCi0gIDB4OGQsMHgwNCwweDFlLDB4OTQsMHg5MSwweDE4LDB4NDYsMHg1OCwweGM4LDB4NDIsMHg4YywweDVhLDB4MjMsMHhkOSwweDE5LDB4MWIsCi0gIDB4NmMsMHgyNiwweDhlLDB4OTMsMHg2NSwweDc3LDB4ZmQsMHhlNSwweDBlLDB4ODQsMHg2NCwweDk1LDB4YmMsMHhjNCwweDJiLDB4M2IsCi0gIDB4YjksMHg3YiwweDQ5LDB4ZDYsMHhlYiwweDFjLDB4OGQsMHgwNCwweDhjLDB4OTAsMHgwYywweDAzLDB4MjgsMHgzMSwweDRlLDB4NTgsCi0gIDB4NmYsMHgyMywweDY0LDB4NWIsMHgzOCwweDI0LDB4M2IsMHgwOCwweDBjLDB4MDIsMHgxYywweGRjLDB4YzIsMHhiMiwweDJkLDB4ZmUsCi0gIDB4MTgsMHgyYiwweDBlLDB4ZWIsMHhlMCwweDNmLDB4NzEsMHgwNiwweDQ3LDB4MjYsMHhiMiwweDIzLDB4ZGIsMHgzMiwweGM2LDB4OGUsCi0gIDB4MDQsMHgwMiwweGRlLDB4M2EsMHgzZCwweDkyLDB4YTYsMHg0NywweDY0LDB4ZjcsMHhlNiwweGJlLDB4ZjcsMHhmOSwweGRlLDB4NmYsCi0gIDB4OWYsMHhlNywweGJiLDB4ZjIsMHhmMywweGVjLDB4OWUsMHhiNCwweDhlLDB4OWEsMHhlZSwweGQzLDB4ZTcsMHg1NCwweGZkLDB4YWEsCi0gIDB4ZWEsMHg1NywweDU1LDB4OTAsMHhlMSwweDE4LDB4NGUsMHhmYywweDA3LDB4MjAsMHhhYywweDAwLDB4NDcsMHg1ZCwweGRkLDB4MDIsCi0gIDB4Y2YsMHhhZCwweGZmLDB4NmQsMHhmZSwweDdmLDB4ZjMsMHhkYywweDVhLDB4ZjIsMHhjMCwweGQ3LDB4NTcsMHhjMSwweDRhLDB4OTAsCi0gIDB4YmQsMHhkZiwweGJkLDB4ZDUsMHhmMywweDhkLDB4ZWYsMHgzZCwweDM4LDB4N2YsMHhjMSwweDAyLDB4ZjgsMHgzYSwweGZlLDB4MmYsCi0gIDB4OGYsMHhlNywweGQ2LDB4NzksMHg5ZSwweDg1LDB4ZjMsMHhiYywweGU1LDB4YjAsMHgwYSwweDMyLDB4ZTYsMHg5NywweDU2LDB4MmMsCi0gIDB4ZjAsMHg1NiwweDc4LDB4M2QsMHhmMCwweDBkLDB4MTAsMHg0YSwweDNiLDB4YWUsMHhlMiwweGNmLDB4MzMsMHg4ZiwweDdmLDB4ZTUsCi0gIDB4OWIsMHgxZSwweDYwLDB4MDIsMHgwMCwweDRjLDB4ZjMsMHgwOCwweDIxLDB4ZmUsMHhmZiwweDY1LDB4OGYsMHhhMCwweDBhLDB4YzAsCi0gIDB4YWEsMHg4YSwweDNkLDB4NjAsMHhmMCwweGZmLDB4MGQsMHhlMywweGJmLDB4Y2YsMHhmMCwweDgwLDB4NmEsMHhmZCwweGRmLDB4ODIsCi0gIDB4MDcsMHgzNCwweDA4LDB4ODIsMHhkNiwweGNhLDB4YjIsMHhlMSwweDJmLDB4ZjgsMHhhMSwweDEyLDB4OWIsMHgxOCwweGZlLDB4NDUsCi0gIDB4ZjMsMHg2MSwweDcyLDB4ZmUsMHhkNSwweGUzLDB4ZWMsMHgzZiwweDljLDB4OTQsMHhmYywweGE5LDB4M2EsMHhhZiwweDhmLDB4OGYsCi0gIDB4MTgsMHhmMSwweGZjLDB4Y2YsMHhhNywweDBiLDB4MDEsMHg5OCwweGI4LDB4ZWIsMHgwZiwweGRmLDB4ZmMsMHg0YiwweGVlLDB4YmYsCi0gIDB4ZjAsMHhmMywweDg5LDB4ZmIsMHhmZiwweGFmLDB4Y2UsMHgwNywweGU1LDB4MmYsMHg5OCwweDhlLDB4ZWYsMHgzYiwweDMxLDB4ZjgsCi0gIDB4YTEsMHgyMiwweDY4LDB4YjAsMHgxYywweGQyLDB4NDEsMHg2MCwweDEwLDB4ODIsMHhiYywweGZmLDB4NjAsMHhiMCwweGIwLDB4NzcsCi0gIDB4NjIsMHhmZSwweGQxLDB4YjQsMHgzMSwweGVmLDB4MjksMHg3MSwweDYxLDB4N2UsMHhkNiwweGU3LDB4NjIsMHgyNSwweGJjLDB4MGEsCi0gIDB4MGIsMHg4YywweGNjLDB4MTEsMHhmMSwweDBhLDB4OGMsMHg0MiwweDQ1LDB4OWYsMHgzZCwweDJlLDB4OGUsMHhjMSwweGM3LDB4NTAsCi0gIDB4MDUsMHg3NywweGIzLDB4MWMsMHgwZiwweGQ0LDB4OGYsMHhjZiwweDM3LDB4ZjIsMHg5ZSwweDU3LDB4OGUsMHhhYiwweDVlLDB4OTUsCi0gIDB4N2UsMHg0ZSwweDdlLDB4MDEsMHgyZCwweGUwLDB4OGMsMHhkYiwweGJiLDB4YzksMHg0NywweGQwLDB4YWQsMHgxNiwweGJjLDB4NjksCi0gIDB4ZWYsMHhjNCwweGMxLDB4MDYsMHg1NiwweGEyLDB4ZDIsMHgwOCwweDg5LDB4NDksMHgxMywweGFiLDB4ZDgsMHgyNywweGVkLDB4ODYsCi0gIDB4MmQsMHhiNiwweDM5LDB4YjAsMHg2MSwweDAxLDB4OTEsMHg2MCwweGFiLDB4NTAsMHg2MiwweGU0LDB4NzksMHhjOCwweDQ5LDB4MzgsCi0gIDB4MmMsMHhiYiwweDVlLDB4YTQsMHgxZSwweDMyLDB4MDQsMHgzYiwweGMxLDB4MGQsMHg1NCwweDk5LDB4ZTMsMHgxNSwweDI2LDB4ZWYsCi0gIDB4OGYsMHhmMywweDdmLDB4MDIsMHg0ZSwweDBmLDB4OGQsMHgzOSwweDc3LDB4NmIsMHgzZiwweDY1LDB4NDUsMHhmMSwweGJjLDB4MTgsCi0gIDB4NGUsMHgzYiwweGJjLDB4NDEsMHgzNSwweDMyLDB4M2EsMHhjOCwweDUwLDB4ZDgsMHg0NiwweDRiLDB4MDgsMHhkZCwweDhjLDB4ZjcsCi0gIDB4MGYsMHg4ZCwweGNmLDB4YWYsMHg5ZSwweDNlLDB4MDQsMHhiZiwweDgyLDB4MzIsMHg0ZiwweDU2LDB4NGMsMHg3NCwweDg1LDB4ZGYsCi0gIDB4M2EsMHhlYiwweDFiLDB4NzYsMHhjNywweDZhLDB4ODYsMHg2MCwweDk0LDB4NTUsMHhmNCwweGI0LDB4ZWEsMHhlMiwweDcxLDB4ZTksCi0gIDB4OGYsMHhiZiwweGYyLDB4NDUsMHhkZCwweDExLDB4NDEsMHg5MSwweDI2LDB4ZWUsMHhhZiwweDBiLDB4Y2YsMHhjMSwweGM3LDB4YjQsCi0gIDB4MGEsMHgxYywweDllLDB4MWIsMHhmYiwweGM4LDB4N2IsMHhiMCwweGQwLDB4OTgsMHgzNiwweDJjLDB4OGUsMHgwOSwweDk3LDB4MzMsCi0gIDB4OWUsMHgzNywweGIyLDB4N2EsMHhjNCwweDBmLDB4ZTAsMHhhMiwweGU0LDB4NjMsMHgwZSwweDJhLDB4MGUsMHhjMiwweGM0LDB4ZmQsCi0gIDB4ZmIsMHg5NSwweGRkLDB4ZjQsMHg3ZCwweGNkLDB4MGIsMHhmYywweGZlLDB4ZDIsMHgxZiwweDdiLDB4N2MsMHg0MSwweDdiLDB4YWMsCi0gIDB4NjAsMHgwOCwweDJlLDB4NDEsMHg5OSwweDYxLDB4NjcsMHhlMiwweGZiLDB4ZjAsMHg0NywweGNkLDB4MTMsMHhiNSwweDQ3LDB4NjUsCi0gIDB4OGYsMHhhNCwweDRlLDB4YmMsMHg2ZiwweDlhLDB4OGYsMHhiNiwweGM0LDB4NDMsMHgwYiwweGU0LDB4NjEsMHhiMSwweDRlLDB4NmEsCi0gIDB4MzEsMHhkNCwweGI3LDB4NmQsMHgzMSwweDcxLDB4MzcsMHhlYywweDg1LDB4MDIsMHg4MywweDMyLDB4MzIsMHhjOCwweDM2LDB4ODAsCi0gIDB4OTMsMHhkMSwweDI4LDB4MjksMHhjMywweGRkLDB4M2YsMHhmMSwweGJlLDB4YWIsMHhiNSwweGY2LDB4M2IsMHg3NCwweGRkLDB4ZTYsCi0gIDB4MjEsMHg3NiwweGQ4LDB4YTksMHhiYSwweGUyLDB4MTksMHg3YywweDdkLDB4NzYsMHg0MiwweGExLDB4ZTEsMHg4MiwweGY0LDB4OGQsCi0gIDB4NjQsMHgwNywweGE4LDB4MWEsMHg1NSwweGM5LDB4MDgsMHg5ZSwweDk1LDB4YzQsMHhjZiwweDg4LDB4ZjIsMHhiNSwweDhjLDB4OGQsCi0gIDB4YjEsMHhmYywweDhlLDB4MWIsMHhiZiwweDRmLDB4YmUsMHg0NiwweGQ3LDB4ZWIsMHg3MywweDg3LDB4ZTQsMHgzNSwweGU0LDB4MDksCi0gIDB4YTgsMHhlYSwweDU2LDB4ZTMsMHg3NCwweDBkLDB4NzksMHgyNywweGYzLDB4NDksMHg5NiwweDFmLDB4YTIsMHhkZiwweDgyLDB4MmIsCi0gIDB4OTMsMHhmNywweDBmLDB4ZDAsMHhhNSwweGYwLDB4NmUsMHhiYiwweDFhLDB4Y2UsMHhmMiwweDg4LDB4NzYsMHhmOCwweGEzLDB4NWUsCi0gIDB4MzksMHg5NiwweGU5LDB4MTEsMHg0ZiwweGMyLDB4YTcsMHhkMSwweDA1LDB4NzEsMHgzYiwweDFmLDB4OWMsMHg4NSwweDk4LDB4ZTYsCi0gIDB4YWUsMHhhOCwweDc5LDB4OGQsMHg0YywweGVjLDB4MDcsMHgyZCwweGFkLDB4NTUsMHhmZCwweDQ3LDB4YTUsMHg4YSwweDM5LDB4ODYsCi0gIDB4YzUsMHgyMSwweGVkLDB4OGEsMHhiMiwweGIwLDB4MzcsMHgwYiwweGQ3LDB4MDcsMHgzZSwweDg1LDB4YWEsMHg5NywweDFjLDB4MzEsCi0gIDB4MWMsMHhmYywweDdmLDB4OTQsMHhhYSwweDVhLDB4YzcsMHg0OCwweDhlLDB4OTIsMHgzZSwweGIxLDB4M2UsMHg1NCwweGZhLDB4NzksCi0gIDB4YjgsMHgwNywweDRmLDB4NzUsMHhkNiwweDAxLDB4NzEsMHgzNSwweDljLDB4ODAsMHgzMiwweDk2LDB4MTksMHgxMywweDg3LDB4NzAsCi0gIDB4N2UsMHg1OSwweDlmLDB4M2QsMHg4YSwweDgzLDB4MTMsMHhjYywweDFiLDB4YjcsMHhiYiwweGU0LDB4YTIsMHhjOSwweGZkLDB4ZDMsCi0gIDB4OTcsMHhiNywweDVkLDB4NWQsMHgwZiwweDNiLDB4ODAsMHg3ZSwweDU3LDB4OWMsMHg0OSwweDcwLDB4YzAsMHhkYywweGY1LDB4ZTQsCi0gIDB4NmQsMHgzOCwweDAwLDB4ZmEsMHhjOSwweDQwLDB4MzAsMHhmYiwweDZkLDB4ZmMsMHg0MywweGQ1LDB4YTAsMHgyMSwweDliLDB4NzcsCi0gIDB4ZjIsMHhmYiwweGFhLDB4YjAsMHg5MSwweGI1LDB4MWEsMHgwNSwweGFhLDB4YWQsMHhkYywweGI2LDB4MGMsMHgxZSwweDYzLDB4ZWEsCi0gIDB4ZDksMHhlYiwweGYxLDB4MzUsMHhlMSwweDc5LDB4OTYsMHgxZiwweDJmLDB4NWYsMHhlZSwweDNmLDB4MDUsMHhlYiwweDcxLDB4ODAsCi0gIDB4MmYsMHhhZSwweGMyLDB4YzQsMHhmYSwweGQ3LDB4NDksMHhhZCwweGIwLDB4MzUsMHhhNCwweGQ2LDB4ZTMsMHhlZSwweGNhLDB4YzQsCi0gIDB4OGQsMHhhNCwweDBlLDB4MmYsMHhlNywweGViLDB4YjksMHg5NywweGRmLDB4MzYsMHgzNywweGRjLDB4YWIsMHhlZCwweDhkLDB4YWEsCi0gIDB4MDMsMHhiOCwweDAzLDB4YjMsMHgyNywweGY3LDB4ZTcsMHhlMCwweDhjLDB4NDEsMHgzOCwweDY1LDB4OTQsMHgzNiwweDY3LDB4ZTksCi0gIDB4MDUsMHg3ZiwweDBiLDB4ZWYsMHhiNCwweGVmLDB4ZWQsMHhjYywweGQ0LDB4ZjEsMHhlYiwweDdmLDB4MGUsMHg1ZSwweDY2LDB4ZmYsCi0gIDB4NDAsMHhmYywweDIzLDB4MWMsMHg4NywweDJlLDB4ZTYsMHhkNiwweGM1LDB4OGEsMHhjOSwweGU3LDB4MDksMHgwOCwweDAyLDB4MGMsCi0gIDB4ZmEsMHg3ZCwweGQ0LDB4MDEsMHg2MiwweDljLDB4MGQsMHg0MiwweDA1LDB4Y2QsMHg2MiwweDYyLDB4MWMsMHg0NiwweDU4LDB4MDUsCi0gIDB4MzgsMHg5OCwweGY4LDB4MmUsMHgwYywweDgyLDB4MGYsMHgxYywweDg2LDB4ZjgsMHgxYSwweDRjLDB4ZGMsMHg5ZiwweDJhLDB4NGYsCi0gIDB4OTEsMHgxZSwweGY2LDB4OTQsMHg5NiwweDE5LDB4MTUsMHgzYiwweGQyLDB4OGYsMHg0MSwweGY4LDB4NzYsMHgxYywweDBjLDB4YzAsCi0gIDB4MjgsMHhlOSwweGQyLDB4ZWMsMHg4YSwweDI4LDB4YzEsMHhmYiwweGUwLDB4ZDMsMHgxYywweDUxLDB4ZjEsMHhlOCwweGU0LDB4ZjMsCi0gIDB4MzAsMHg1OCwweGQ1LDB4ZDMsMHhkYywweGFmLDB4MDYsMHg2ZCwweGQxLDB4OWMsMHg1NSwweGIwLDB4MGIsMHhkNCwweDNhLDB4N2IsCi0gIDB4OTQsMHgwYywweGMwLDB4NDEsMHhjZCwweGE5LDB4NDUsMHhhMiwweGE0LDB4MTAsMHg5YSwweGExLDB4NDQsMHg5MywweGEzLDB4MjQsCi0gIDB4M2UsMHgyOSwweDE2LDB4Y2EsMHhkMywweDBhLDB4ZDMsMHg1YSwweGI0LDB4NWYsMHgwNCwweDY4LDB4MzQsMHg3ZCwweDAwLDB4MzIsCi0gIDB4OTQsMHg2ZiwweDZiLDB4Y2QsMHhlNiwweDdjLDB4OGEsMHhkYiwweDI2LDB4ZWEsMHg3NywweGMzLDB4Y2YsMHg2MSwweDllLDB4MjYsCi0gIDB4ZjcsMHg5MywweDk3LDB4MjYsMHhmNywweDgzLDB4OWEsMHgyYiwweDA5LDB4MGQsMHg5YSwweGQzLDB4ZDgsMHg5MCwweDliLDB4YmUsCi0gIDB4NGEsMHhkOCwweGExLDB4YTksMHg1YSwweDllLDB4NDIsMHg3YSwweGYxLDB4ZmUsMHg2YSwweGQwLDB4YTUsMHhlMCwweDA5LDB4NWQsCi0gIDB4MGIsMHhjNSwweDlhLDB4MWMsMHgyNCwweDQ3LDB4ODUsMHg4OSwweGZkLDB4YjAsMHgyNiwweDMzLDB4MDQsMHgxMSwweDM4LDB4MDIsCi0gIDB4YjgsMHhkYiwweDc1LDB4ZTgsMHgyMywweDE1LDB4NDIsMHhhNiwweGY5LDB4YmUsMHhlMCwweGM1LDB4MmIsMHhiMiwweGFhLDB4ZjAsCi0gIDB4ZjcsMHhkZCwweDY0LDB4ODgsMHhhNywweGM0LDB4ODksMHhmZCwweGI5LDB4MmQsMHhlZCwweDNkLDB4YjgsMHhhYywweDNkLDB4YWYsCi0gIDB4MzksMHhkYSwweDcyLDB4M2UsMHgyMywweGZmLDB4ZWUsMHhhZiwweDBhLDB4NjYsMHhlMSwweGZiLDB4NGEsMHg5NywweGI1LDB4YWMsCi0gIDB4ZTAsMHhiYywweGQzLDB4ZTIsMHg2NywweDMwLDB4YWEsMHhmOSwweDgyLDB4OGUsMHgzNiwweGYxLDB4NWMsMHhmYSwweGM0LDB4N2UsCi0gIDB4YzgsMHg0YiwweGJiLDB4YzAsMHg1ZSwweGYxLDB4MmMsMHhkMiwweGIyLDB4ZGEsMHhjNCwweDQyLDB4ZDcsMHgyYiwweDc3LDB4MmUsCi0gIDB4MGUsMHhkYywweDgzLDB4ZjMsMHg4NSwweGNiLDB4MDEsMHhhZiwweDNmLDB4MmIsMHhkYSwweGI4LDB4NGYsMHgzZCwweGE2LDB4OTYsCi0gIDB4NmEsMHhmNiwweGZlLDB4YzYsMHg5NywweDI2LDB4ZjcsMHg0ZiwweDc5LDB4ZGUsMHg1OSwweDg4LDB4YTgsMHg0ZSwweDgxLDB4MzYsCi0gIDB4OTEsMHgxZCwweDQyLDB4MDQsMHhkYSwweGEzLDB4MzYsMHg4NiwweGFiLDB4ZDEsMHgwZCwweDQ1LDB4MGEsMHg2ZCwweDEyLDB4ZjEsCi0gIDB4NTcsMHhlMCwweDA0LDB4YmIsMHg0ZSwweDRlLDB4NGQsMHhhZSwweDY3LDB4ZTAsMHhmNiwweGI1LDB4YjYsMHgwNiwweGUzLDB4MTksCi0gIDB4Y2QsMHg3NiwweDlkLDB4YmYsMHgxMCwweDFhLDB4ODQsMHhjMiwweGEwLDB4NGQsMHgyMSwweGI1LDB4YjAsMHg0NywweDU1LDB4ZWYsCi0gIDB4YjIsMHgyOSwweGZlLDB4MDEsMHg2OCwweGMwLDB4MTcsMHhjZiwweDUwLDB4YzgsMHg2YiwweDkzLDB4ZjIsMHg2NywweDliLDB4ZDQsCi0gIDB4ODEsMHg4YiwweDRjLDB4YjQsMHg0MCwweDc0LDB4NjUsMHgwNywweGM5LDB4NzAsMHg5MSwweDgwLDB4Y2QsMHg1YywweDRmLDB4NjcsCi0gIDB4OTEsMHhhNiwweGI2LDB4OTEsMHg3MywweGE0LDB4MTksMHg5YywweDlhLDB4MmIsMHg0YSwweDVlLDB4OWEsMHhkYywweDBmLDB4ZmEsCi0gIDB4OGMsMHg1NSwweGQwLDB4MDMsMHgxNSwweDgxLDB4YWMsMHg2OCwweGNlLDB4MWMsMHg2OCwweGQ2LDB4NjYsMHg2YSwweGZjLDB4N2QsCi0gIDB4ZTEsMHhhMCwweGVlLDB4ZDUsMHhlZSwweGRhLDB4N2UsMHhjYiwweDNhLDB4MzgsMHgwNiwweDhjLDB4N2YsMHhmYSwweGMxLDB4NDksCi0gIDB4ZjksMHhkMywweDI3LDB4NzQsMHhjMCwweGE4LDB4OGQsMHg3ZiwweGY0LDB4MjUsMHgwMywweDkxLDB4NGYsMHhjMCwweDE3LDB4YzIsCi0gIDB4YWYsMHgzZiwweGEwLDB4N2MsMHgyMiwweGY5LDB4YjQsMHg3ZiwweGRiLDB4MjIsMHg3NiwweGMwLDB4MjcsMHg4MiwweGI5LDB4MWYsCi0gIDB4MmUsMHg0ZSwweGNhLDB4MWYsMHhhYSwweGIwLDB4ZWEsMHhiZSwweGU5LDB4ZGUsMHgwYywweDVjLDB4NmQsMHg1YywweDdmLDB4YWQsCi0gIDB4NGMsMHhiMSwweGIzLDB4MDIsMHg1YywweGZmLDB4YWMsMHgzMiwweGM4LDB4NjIsMHgzOSwweDcxLDB4YTUsMHg0ZiwweGYwLDB4ODIsCi0gIDB4OWIsMHhhMSwweGEwLDB4OWIsMHhkOCwweGZmLDB4YWUsMHhiNCwweDZlLDB4M2MsMHgzMSwweGY5LDB4NTEsMHg5YiwweDRlLDB4MjgsCi0gIDB4NmMsMHg4NCwweDgyLDB4YjAsMHg0MywweDI3LDB4ODMsMHg3MCwweGM0LDB4OTgsMHhjMywweGVjLDB4N2MsMHhiMCwweDAxLDB4MGEsCi0gIDB4MTgsMHg4ZCwweDkzLDB4ZTMsMHg5MywweGZiLDB4YzEsMHgyNSwweGRkLDB4NDUsMHhkYiwweDBkLDB4OTcsMHhjNywweDE2LDB4YjMsCi0gIDB4YTEsMHhkOCwweDYxLDB4YWUsMHhlYywweDg4LDB4MjcsMHhmZCwweDI0LDB4NmUsMHhmYSwweDM5LDB4NzgsMHgwZCwweGI3LDB4NGQsCi0gIDB4MjMsMHhiOCwweDE4LDB4Y2EsMHg5ZiwweGUzLDB4OTMsMHhmMiwweDg3LDB4MjksMHgwMSwweGU5LDB4MjksMHhmOCwweDgyLDB4NjIsCi0gIDB4N2IsMHg5MCwweDNjLDB4MDcsMHhiNywweDY4LDB4NzMsMHhlMSwweGVmLDB4Y2MsMHhmMywweDliLDB4NTEsMHhkOCwweDI3LDB4ZDcsCi0gIDB4YzMsMHhiZiwweGMzLDB4N2EsMHgzZSwweDNmLDB4ODQsMHhmZiwweGQwLDB4YzQsMHhmZCwweDIzLDB4OTEsMHg3YiwweGUxLDB4MTcsCi0gIDB4MGQsMHgwNywweGY1LDB4YWMsMHgxMSwweGY5LDB4MDksMHhmOCwweDM3LDB4ZjYsMHg0YiwweGQ1LDB4YmUsMHg0NiwweDdjLDB4MDcsCi0gIDB4M2UsMHg2NywweGI3LDB4OWUsMHhjZiwweDVhLDB4MjMsMHhiZSwweDQ0LDB4NWUsMHg2MCwweDA3LDB4NzUsMHg3YiwweDlkLDB4ZjgsCi0gIDB4YzEsMHhhNCwweGZjLDB4YTEsMHgzMywweDNhLDB4ZTEsMHg2ZiwweGE1LDB4N2QsMHg4MCwweGQyLDB4NjYsMHgyOSwweDc5LDB4MGIsCi0gIDB4MDUsMHhhNSwweDgzLDB4Y2IsMHg5MywweDhiLDB4ZDIsMHgyMywweDg2LDB4M2QsMHgyNiwweDBlLDB4MTAsMHgxNCwweGJjLDB4Y2MsCi0gIDB4YTEsMHg4YiwweDQ3LDB4MjcsMHhlNSwweDBmLDB4NDgsMHg4NywweGI0LDB4MzMsMHg0ZCwweGI3LDB4ZTksMHhmNiwweDkxLDB4NjksCi0gIDB4OGYsMHhjMCwweDg5LDB4YTgsMHg0NywweGI1LDB4NzMsMHhmZCwweDc1LDB4ODUsMHg3OSwweGNmLDB4OWEsMHg4MywweDhmLDB4ZDksCi0gIDB4NjIsMHhkZCwweGJlLDB4NGIsMHg4NiwweGM5LDB4ZmQsMHhiMywweDhiLDB4ZmUsMHgwNCwweGM4LDB4NTEsMHg5NCwweDNmLDB4MGYsCi0gIDB4OTIsMHg1OSwweDZjLDB4NjcsMHg3YywweDk3LDB4YmEsMHhlYywweDQxLDB4N2MsMHhmZSwweGExLDB4YTYsMHg1YiwweDg3LDB4ZTgsCi0gIDB4MGYsMHhlMCwweDM0LDB4M2UsMHg3ZiwweDMxLDB4Y2IsMHhhYywweGYzLDB4MTcsMHg0ZCwweDdlLDB4NWYsMHhkYywweDExLDB4YjAsCi0gIDB4OGUsMHhjYywweDY1LDB4ZDQsMHg2MywweGIzLDB4MzcsMHhhZCwweDU3LDB4ZjMsMHhjMywweDk0LDB4YmYsMHhlZiwweDdlLDB4NjEsCi0gIDB4NzYsMHg1ZiwweGU3LDB4NDMsMHhhNiwweGUwLDB4MmEsMHg2NiwweDc0LDB4YTUsMHg0ZCwweDliLDB4OTQsMHgzZiwweGFhLDB4MTQsCi0gIDB4MjEsMHgxYiwweDIyLDB4YWEsMHgzZiwweDEwLDB4NDMsMHg3OSwweGZlLDB4MzMsMHg0ZCwweDU1LDB4MTcsMHg3MSwweGY5LDB4YTMsCi0gIDB4YTMsMHgzYywweGE3LDB4M2UsMHg3MiwweDA3LDB4MzQsMHg2YSwweDZlLDB4NDYsMHhkZCwweDI0LDB4MjAsMHg0ZCwweDljLDB4ZGYsCi0gIDB4Y2UsMHgxOSwweDgzLDB4ZDIsMHg4OSwweDQyLDB4MTcsMHhiMywweDBmLDB4OGIsMHg2ZSwweDM4LDB4YTEsMHhlMywweGYzLDB4OWIsCi0gIDB4ZWYsMHgxYiwweGJjLDB4YzUsMHg2OCwweGVkLDB4MTIsMHhjZiwweDZkLDB4ZmUsMHhhMywweDU2LDB4YzIsMHhlOCwweGVlLDB4YzYsCi0gIDB4NmYsMHg0ZiwweDNlLDB4MGYsMHgxMywweDlhLDB4OTUsMHgwZiwweDM0LDB4OWYsMHgzMCwweDJmLDB4MjYsMHhmZSwweDQyLDB4YmEsCi0gIDB4YjgsMHhkMiwweDM3LDB4ZGQsMHg1YywweDlmLDB4NGIsMHhlMCwweDMzLDB4MWMsMHgxZSwweGRjLDB4NzgsMHgzOCwweDYwLDB4YzUsCi0gIDB4M2EsMHgxZSwweGQ1LDB4ODksMHhmZCwweDlmLDB4YWYsMHhlYywweDQ2LDB4MjEsMHhiNiwweDE3LDB4ZWYsMHgyZiwweGNmLDB4YzQsCi0gIDB4ZjUsMHg1ZiwweGU0LDB4YzksMHhlNCwweGYyLDB4ZmMsMHg4YSwweDM0LDB4ZGYsMHhjMCwweDgxLDB4MTQsMHhiZSwweDRhLDB4YWIsCi0gIDB4ZDgsMHhiMiwweGY4LDB4MGUsMHhhMywweDc2LDB4NjIsMHhmZSwweDBlLDB4ZjgsMHg4NywweDMwLDB4MmEsMHgyOSwweDE1LDB4ZDUsCi0gIDB4OTYsMHg1YiwweDg5LDB4MzQsMHgzOSwweGYzLDB4MzIsMHhiOSwweGZlLDB4ZWQsMHg4MiwweDc2LDB4ODMsMHhjNiwweDcyLDB4YmUsCi0gIDB4ODksMHgxYSwweGJmLDB4MDQsMHgzNywweGEyLDB4NDUsMHhmZSwweGIwLDB4YjQsMHgyMiwweGQ4LDB4YTAsMHgzOCwweDYzLDB4MzQsCi0gIDB4NDYsMHhkYywweGYwLDB4MzMsMHhiNSwweDA4LDB4MzIsMHhmOCwweGZjLDB4NDMsMHhlMCwweDM0LDB4NzAsMHg1MCwweDA4LDB4M2YsCi0gIDB4MTMsMHg0YSwweDFhLDB4Y2MsMHhmOSwweDEzLDB4ZmIsMHg4MSwweDRhLDB4YjQsMHgyMSwweDFjLDB4NzIsMHg4MiwweGNkLDB4OTMsCi0gIDB4NmUsMHg3NywweGI1LDB4NTMsMHhmNSwweDhlLDB4YjksMHg3YywweDdkLDB4NjIsMHg0NSwweGExLDB4YTMsMHhkNCwweGViLDB4YWMsCi0gIDB4YzUsMHhmZCwweGU2LDB4NjYsMHg0YiwweGYyLDB4ZDMsMHg5MywweGYyLDB4MDcsMHg2ZSwweDVhLDB4YWQsMHg2ZSwweDcwLDB4YTEsCi0gIDB4MzQsMHg4ZSwweDE1LDB4YjgsMHhlMSwweDhmLDB4NTAsMHgwNCwweGE2LDB4N2UsMHhiOSwweGI4LDB4ZTAsMHhjMSwweDVlLDB4MWMsCi0gIDB4MTQsMHgxMiwweGZlLDB4YmUsMHhiOCwweDFmLDB4OGMsMHg0OSwweGY5LDB4YjMsMHhlMywweGE2LDB4MjEsMHhlNSwweDhhLDB4N2EsCi0gIDB4MzMsMHhhMCwweGZlLDB4ZGQsMHgwZCwweGFmLDB4ZGIsMHhhYSwweGE4LDB4ODMsMHhiZiwweGVmLDB4MTksMHhhMSwweGNhLDB4NzAsCi0gIDB4ZWMsMHgxMSwweDJlLDB4OTAsMHhhYiwweDA0LDB4NTUsMHhkYiwweGQ3LDB4YzUsMHg0MSwweDMyLDB4ODksMHgzNywweDY2LDB4YmMsCi0gIDB4MGIsMHhhZiwweGIyLDB4YWEsMHgzMywweDhlLDB4NGYsMHg3NiwweDNlLDB4MDQsMHg1NywweDAzLDB4YTUsMHhlYSwweDQ2LDB4NDMsCi0gIDB4YWMsMHg2NCwweDU3LDB4OWQsMHg4YiwweGZhLDB4YjIsMHhjZSwweDNiLDB4NzEsMHhhMCwweDk2LDB4MWUsMHg3NywweGJjLDB4ZGIsCi0gIDB4MzgsMHgyYywweDRjLDB4Y2EsMHhlNywweGJjLDB4NzMsMHhhOCwweGQ0LDB4NGEsMHg3YSwweGU1LDB4Y2YsMHg4OSwweDUzLDB4ZGEsCi0gIDB4YTQsMHgxNSwweGU1LDB4ZDMsMHg3ZSwweDMyLDB4NGYsMHhlYiwweGVlLDB4NzcsMHgwZSwweDY3LDB4M2UsMHg0NywweGZlLDB4MGQsCi0gIDB4MGUsMHgyOSwweGRlLDB4NjEsMHg3OSwweDM3LDB4YmUsMHhlZiwweGE0LDB4ZmMsMHg0ZiwweDBiLDB4YzEsMHg1NiwweDcwLDB4ZjcsCi0gIDB4YzksMHgxZSwweDEyLDB4NTIsMHg3NiwweGFhLDB4ZjgsMHhlMiwweGMwLDB4MTUsMHgzZCwweGI4LDB4ZmEsMHhlOSwweDAyLDB4YmYsCi0gIDB4NTQsMHhiYiwweDA3LDB4NjEsMHhiMSwweDRkLDB4NTUsMHg4ZiwweDRlLDB4ZGUsMHhkZiwweDEwLDB4OWUsMHhhNCwweDJkLDB4YWMsCi0gIDB4YzQsMHg5MCwweDYzLDB4MjQsMHg4NCwweGFiLDB4NTEsMHgwNCwweDc0LDB4NzMsMHhkOCwweGFkLDB4NzYsMHg2NywweDM4LDB4OGYsCi0gIDB4ZDMsMHhhZSwweDcwLDB4ODcsMHg1NiwweDRlLDB4MDksMHhjMSwweGY1LDB4MWMsMHg0ZSwweGVlLDB4Y2YsMHhkYywweDc1LDB4ZjAsCi0gIDB4YTYsMHg4MSwweDVmLDB4M2YsMHgyNiwweGQ2LDB4ZTAsMHhkNywweDQ3LDB4NDUsMHhiYywweDViLDB4ZmUsMHgwMiwweGMyLDB4OTIsCi0gIDB4OGEsMHhhOCwweGFkLDB4ZTMsMHhhZiwweGU2LDB4ZDEsMHg0ZiwweDM1LDB4NjcsMHg3ZiwweGQ2LDB4NmUsMHhkMiwweDNmLDB4MjksCi0gIDB4N2YsMHhjZSwweGUyLDB4OTYsMHhiZCwweDQyLDB4YWEsMHg3YSwweDFjLDB4YjEsMHg5YywweGJkLDB4NzAsMHgxNSwweGFhLDB4NmMsCi0gIDB4OGUsMHg2ZSwweDcxLDB4OTAsMHg1ZCwweDE0LDB4N2MsMHhmYSwweDNmLDB4NzQsMHg4YSwweDFmLDB4ZDEsMHgyYiwweDcwLDB4YzgsCi0gIDB4NzAsMHhlYywweDE2LDB4NDcsMHgyNiwweGU1LDB4OGYsMHhhMSwweDNjLDB4Y2QsMHgyZSwweDZhLDB4MTUsMHhjNiwweDI2LDB4Y2YsCi0gIDB4YjQsMHgxZCwweGNhLDB4MWYsMHg1MSwweGVjLDB4M2IsMHg5YSwweGU0LDB4YjksMHhmMCwweDgyLDB4ZjYsMHg1MCwweGRiLDB4YTMsCi0gIDB4NmUsMHhmMSwweDFiLDB4ZTQsMHg4NCwweGUxLDB4OGQsMHhkYSwweDNiLDB4YzQsMHgyNCwweGZlLDB4MzksMHgyZSwweGNkLDB4ODYsCi0gIDB4OGIsMHgzMCwweGNmLDB4OTAsMHg4NywweDlkLDB4MmEsMHhlMiwweDQ5LDB4MjcsMHhjYiwweGRhLDB4NGMsMHg3MCwweDg3LDB4YTgsCi0gIDB4ZGYsMHhkMywweDIzLDB4NGYsMHg5MiwweGMyLDB4MjYsMHhkYywweDVhLDB4MTEsMHhhYSwweDhiLDB4MGYsMHg0ZCwweGVlLDB4ODcsCi0gIDB4NzgsMHhkYSwweGVkLDB4NGEsMHg5NywweGVhLDB4MzIsMHg3MCwweDdkLDB4MjIsMHhhOCwweGE2LDB4ZjUsMHhkYywweDFiLDB4OTksCi0gIDB4YWQsMHg1NywweDQzLDB4YjEsMHhhMywweDA1LDB4MTQsMHg2MiwweDEzLDB4NzAsMHhhMSwweDBjLDB4YWEsMHg5MCwweGYyLDB4NDksCi0gIDB4ZjksMHhiMywweDQyLDB4YjgsMHgyZSwweDMwLDB4MjcsMHhmMiwweDlkLDB4MzgsMHhjMiwweDFlLDB4NGYsMHhmNSwweGQ2LDB4ODYsCi0gIDB4ZDksMHhkMiwweDRmLDB4OTYsMHg5MywweGQ3LDB4NjEsMHg2ZCwweDc4LDB4NmUsMHg4OCwweDJlLDB4MjcsMHgzNywweGRjLDB4YjksCi0gIDB4OTMsMHhlMywweDgxLDB4YmYsMHgyNSwweGNiLDB4OTMsMHhmOCwweDI3LDB4OTAsMHg1ZSwweGRiLDB4YTUsMHg5NSwweGY3LDB4MzksCi0gIDB4M2MsMHhhNCwweDk5LDB4ZmQsMHgxZSwweDNjLDB4NzYsMHgwNywweDU5LDB4ZDIsMHgxYiwweDdlLDB4NDEsMHhlZCwweGQ0LDB4NWMsCi0gIDB4ZDksMHgzMiwweDk1LDB4Y2UsMHg0MiwweDc5LDB4YzAsMHg3ZCwweGEzLDB4OWMsMHgzNCwweDJhLDB4YjQsMHhlYiwweGY3LDB4ZTUsCi0gIDB4OGQsMHg0MCwweDk1LDB4MzEsMHhlZCwweDMzLDB4ZjEsMHgzNCwweGZjLDB4ZjEsMHhhZSwweDQ1LDB4MTQsMHhiNSwweGY5LDB4MDIsCi0gIDB4ZjgsMHg2NywweDU4LDB4NTgsMHg5YiwweGQ1LDB4OGYsMHhjYiwweGYyLDB4NWIsMHgwNSwweDU1LDB4ZGIsMHgxYiwweDYyLDB4NzQsCi0gIDB4NTIsMHhmZSwweDc0LDB4YTYsMHg5ZCwweGMyLDB4NzcsMHg1ZSwweDE4LDB4YzcsMHg2MywweGFiLDB4YzIsMHhhNSwweDZmLDB4N2EsCi0gIDB4ZDQsMHhhYywweDBlLDB4ZDEsMHg0ZCwweDRmLDB4ODQsMHhiZCwweGM2LDB4ZDIsMHg5OCwweDg5LDB4ODgsMHhiYywweDVjLDB4NzAsCi0gIDB4M2QsMHg5MywweGM0LDB4M2YsMHhjMiwweDc2LDB4ZjgsMHgzMSwweDI5LDB4ZTgsMHg0MywweGZjLDB4YWMsMHhkMCwweDAzLDB4OTAsCi0gIDB4OGYsMHgwNywweDIxLDB4NmMsMHhjZiwweDZiLDB4MjQsMHhhYSwweDExLDB4NDAsMHgwNCwweDI4LDB4MzUsMHg3MiwweGEwLDB4NTIsCi0gIDB4OWYsMHg3ZSwweDdlLDB4ZjIsMHhmYiwweDFhLDB4YTgsMHg3YiwweDlmLDB4NjAsMHhiMywweDA3LDB4MzIsMHhkNiwweDkwLDB4NmMsCi0gIDB4ZDgsMHhhYiwweGVmLDB4NTIsMHg2OSwweDFkLDB4OTksMHgzNSwweDBlLDB4N2IsMHhlNiwweGNjLDB4MjIsMHhlMywweGY4LDB4MjcsCi0gIDB4MzYsMHgyOSwweDdmLDB4MDIsMHhiOSwweGE3LDB4ZTgsMHg5NiwweDkwLDB4NmEsMHhlMCwweGIxLDB4NGEsMHgxNywweGY2LDB4ODIsCi0gIDB4MmIsMHg2OCwweDJiLDB4MjcsMHgwZSwweGFkLDB4MzEsMHhhYSwweGZlLDB4ODksMHgyZSwweDVlLDB4OTcsMHhjOSwweGI2LDB4MzIsCi0gIDB4NzUsMHg4MCwweGRlLDB4NDYsMHg1ZSwweGIzLDB4ZTAsMHg5ZiwweDhiLDB4OTEsMHg1MywweDJhLDB4YzIsMHgzNiwweGRkLDB4NTYsCi0gIDB4YWUsMHg1ZSwweDg0LDB4NDUsMHhkYiwweGVjLDB4MWYsMHhjOCwweDczLDB4NTEsMHhkZSwweGI3LDB4NDcsMHhkZCwweDFkLDB4ZjgsCi0gIDB4YTEsMHg4ZiwweGViLDB4YjEsMHgwNiwweGM0LDB4M2YsMHg4NywweDkyLDB4ZjgsMHgwNywweDc2LDB4NjYsMHg3MSwweGE1LDB4OWYsCi0gIDB4MDUsMHhiNywweGEwLDB4MWEsMHgyMiwweDRmLDB4MTEsMHg0NCwweGNiLDB4MDYsMHhlMiwweDAxLDB4MWYsMHhjNywweDNmLDB4MGMsCi0gIDB4MDYsMHhiNSwweDcxLDB4ZmMsMHgzMywweGYxLDB4M2MsMHgzNCwweGY4LDB4MWUsMHg4YywweGVhLDB4MTUsMHhkYSwweGE2LDB4NjgsCi0gIDB4NGQsMHgyMSwweDlhLDB4MTUsMHg1ZSwweGFlLDB4ZGQsMHhlNiwweDg0LDB4OGUsMHg0NSwweDJiLDB4MzUsMHg4NCwweGNkLDB4ODUsCi0gIDB4ZDAsMHhhMywweDc4LDB4NzEsMHg2MCwweGM1LDB4M2YsMHhkMiwweDM3LDB4M2MsMHg3YiwweDk4LDB4MTMsMHg0MSwweDhlLDB4YWQsCi0gIDB4MTAsMHgwZSwweDBhLDB4ZDcsMHg2OSwweDcyLDB4MWIsMHhlOSwweDEwLDB4MTAsMHhmNiwweDg0LDB4MjIsMHhiOSwweDA0LDB4MzUsCi0gIDB4MmMsMHhlYSwweDVmLDB4ZDQsMHhhNywweGYxLDB4NDksMHhmOSwweDkwLDB4MjcsMHhlMSwweDM0LDB4MjgsMHhkMiwweDZlLDB4ZTQsCi0gIDB4ZTgsMHg2OCwweDBmLDB4MzgsMHg4NywweDcxLDB4N2UsMHgyMSwweDdkLDB4MTQsMHhlNiwweDA1LDB4NjgsMHhmZiwweDk2LDB4ODcsCi0gIDB4YWIsMHgxZiwweDg1LDB4ODIsMHg1YSwweDNhLDB4NmMsMHhjMSwweDNmLDB4NTQsMHg5MiwweGUwLDB4MjAsMHg1MywweDgzLDB4MzcsCi0gIDB4ZTYsMHgyMiwweGRhLDB4ZDksMHhlMywweDJmLDB4ZDQsMHhlNCwweDVjLDB4OTIsMHg2YiwweGMyLDB4MWUsMHgxYSwweDI0LDB4ZjcsCi0gIDB4YTUsMHhhZCwweGY1LDB4ZTcsMHg2YiwweDE5LDB4NTYsMHhmYywweGQzLDB4MGQsMHgyMSwweDY1LDB4MDQsMHg0YywweDc0LDB4YTcsCi0gIDB4OWEsMHhiMCwweGM3LDB4ODEsMHhiMCwweDA3LDB4NjEsMHg0NiwweDA5LDB4ZTIsMHg5ZiwweDgyLDB4MTAsMHhkOSwweDgwLDB4YTIsCi0gIDB4NzEsMHhhOSwweDUxLDB4ZjMsMHg1MSwweDEyLDB4ZmYsMHhmYywweGNkLDB4MDUsMHhmOCwweDBjLDB4MzgsMHhjOCwweDExLDB4YmUsCi0gIDB4ODcsMHg2OCwweGE3LDB4NGEsMHg3MywweDljLDB4MTYsMHhkZiwweDIzLDB4MWMsMHhmNiwweGNjLDB4NmIsMHgxMywweDlmLDB4OWMsCi0gIDB4YzAsMHgzZiwweDRmLDB4NGQsMHhlMiwweDlmLDB4NmQsMHgzMywweDJlLDB4YzAsMHg2ZiwweGMxLDB4NzcsMHhiNywweGRjLDB4MjYsCi0gIDB4ZDYsMHhjMiwweDMxLDB4YTUsMHg1NCwweGNiLDB4N2MsMHg0ZCwweDVjLDB4MTAsMHg3ZSwweDA1LDB4MGUsMHhlMCwweGEwLDB4NjYsCi0gIDB4MDEsMHg3YiwweDQ1LDB4YWQsMHhjMiwweGY1LDB4OTksMHgzNiwweDY3LDB4ZjIsMHhmYywweDk2LDB4MmIsMHg3MSwweGU4LDB4ODMsCi0gIDB4MTIsMHhiYiwweGRjLDB4OTQsMHhhMywweDQyLDB4NjcsMHg2ZSwweDExLDB4Y2IsMHgyNCwweDM2LDB4N2MsMHgxZSwweGI0LDB4NTAsCi0gIDB4OTYsMHhhZCwweDI1LDB4ZjksMHhkYSwweDg4LDB4NWEsMHgwMiwweDk0LDB4ODksMHg1OSwweGU5LDB4NDksMHgyYiwweGI2LDB4OTcsCi0gIDB4NmUsMHgwNiwweGY3LDB4OWQsMHhmMiwweDc1LDB4NjQsMHg1NSwweDVhLDB4MDMsMHg3MSwweDZhLDB4ZjQsMHhiYSwweDcwLDB4MWEsCi0gIDB4ODcsMHgzZCwweGJkLDB4YjIsMHhlMiwweDk3LDB4YTAsMHhhMSwweGNlLDB4MWQsMHhhNCwweGI5LDB4NGUsMHgyMiwweDI0LDB4ZjEsCi0gIDB4NTgsMHgwNywweGI0LDB4ZTQsMHgyMywweGM4LDB4NTQsMHhkMiwweDY3LDB4MjMsMHhmZSwweDJjLDB4ZDIsMHgxMCwweDFkLDB4MTUsCi0gIDB4OWEsMHhjYiwweDJlLDB4NDcsMHhiMywweDBiLDB4YjUsMHhjMywweDZhLDB4OTYsMHgzZiwweDEwLDB4Y2QsMHg0ZSwweDlmLDB4OTQsCi0gIDB4MGYsMHhlZCwweGQwLDB4MDEsMHg2ZiwweDA4LDB4YmUsMHg2YSwweDM5LDB4MmEsMHhhZSwweDUyLDB4OGUsMHg4MSwweGY3LDB4NzYsCi0gIDB4ZmIsMHg4ZiwweGM1LDB4NDIsMHgzOCwweDI2LDB4NzgsMHhiNSwweGJiLDB4YTMsMHhmMiwweDFjLDB4YzQsMHgzZiwweDNlLDB4Y2QsCi0gIDB4MWQsMHg3NSwweGI4LDB4MjYsMHhlNSwweDQzLDB4MjcsMHg3NCwweGQwLDB4MDQsMHhlOCwweGNkLDB4NDEsMHgxOCwweDBjLDB4M2UsCi0gIDB4YmYsMHhlMywweDcxLDB4YjEsMHgxNywweDYxLDB4NGYsMHg0NSwweGY1LDB4NDYsMHgwNSwweDA3LDB4ZWYsMHhiMywweGNhLDB4NTUsCi0gIDB4MGUsMHgwNSwweDBkLDB4YjEsMHg4OSwweGY5LDB4NDUsMHhhMCwweDZiLDB4N2MsMHg3NywweGRkLDB4Y2QsMHg2MSwweGNmLDB4MTksCi0gIDB4ZjAsMHgwYSwweDY5LDB4YWMsMHgxMSwweDNmLDB4MDQsMHg3OSwweDA0LDB4NWMsMHg2MSwweDUxLDB4YzcsMHg0ZiwweGUzLDB4NDUsCi0gIDB4NDQsMHgwNCwweDE2LDB4ZmMsMHgyMywweGU1LDB4MjksMHg0NywweGQ4LDB4MWMsMHg4NiwweDQyLDB4ODYsMHhjMiwweDA2LDB4MjEsCi0gIDB4OWYsMHhkMSwweDIxLDB4ZTIsMHg0MiwweDdkLDB4ZTQsMHg2MywweDkxLDB4MzgsMHgwZSwweDhlLDB4NDQsMHg5YywweDJjLDB4YTAsCi0gIDB4OGIsMHgxYiwweDI2LDB4NTcsMHhjNywweDM1LDB4ZTMsMHg5ZSwweGI0LDB4YmQsMHgwMywweGVlLDB4OWUsMHhlYiwweDNkLDB4Y2UsCi0gIDB4NTYsMHhmOCwweDI5LDB4YzQsMHhlMywweGQ3LDB4MmYsMHhiNiwweDQ5LDB4YTgsMHgyZiwweGRkLDB4ZDUsMHhhOCwweGYxLDB4MzcsCi0gIDB4MjIsMHgxMCwweDcyLDB4YzUsMHhkMSwweDk0LDB4NDgsMHhlMiwweDlmLDB4ZmMsMHhlYSwweDk5LDB4YjAsMHg5MCwweGNlLDB4MWUsCi0gIDB4NDQsMHgxOCwweDUwLDB4MDksMHg4ZiwweDI5LDB4MDUsMHg0NywweGYzLDB4ZWEsMHg3MSwweGZmLDB4MWMsMHhiMCwweGNkLDB4OGQsCi0gIDB4MDcsMHhlYSwweGM5LDB4Y2MsMHhjMiwweDE4LDB4OWIsMHhkYiwweDhmLDB4YmYsMHhlYSwweDRiLDB4ZTIsMHgyYiwweDNhLDB4MGIsCi0gIDB4ZmUsMHgzYiwweGFiLDB4MWEsMHhjYywweGJjLDB4ODIsMHg2NiwweGRhLDB4ZWYsMHhjMiwweGYzLDB4ZTMsMHg5OSwweDZiLDB4YzQsCi0gIDB4NTksMHhmMCwweDI3LDB4ZTYsMHg4ZSwweDIzLDB4MTAsMHg3YSwweDAyLDB4MDcsMHhkZCwweDcxLDB4ZjcsMHgxYSwweGYxLDB4NzgsCi0gIDB4MTIsMHhmZiwweDY0LDB4NzYsMHg0YSwweDk3LDB4NjAsMHg0ZSwweDdjLDB4ZGEsMHgzZSwweDU0LDB4NzMsMHg3ZiwweGQ0LDB4MWUsCi0gIDB4ZTYsMHg4MiwweDlkLDB4YWIsMHhmNSwweDEyLDB4YWUsMHhkZiwweGQxLDB4YjAsMHg0NSwweGMzLDB4ZDMsMHgxMSwweDliLDB4MTYsCi0gIDB4OWUsMHg5NCwweDNmLDB4NWEsMHhkYSwweDNiLDB4ZjAsMHgxYiwweGI2LDB4ZjAsMHhmNywweDhlLDB4MzEsMHhkMSwweDI3LDB4ZmQsCi0gIDB4ZWUsMHhlYiwweGE1LDB4ZmMsMHg2ZSwweGZiLDB4ZTEsMHgyZCwweDU2LDB4MTUsMHhiZiwweDdiLDB4OGQsMHgzMCwweDRiLDB4M2IsCi0gIDB4OGUsMHgwMywweGM3LDB4ODgsMHhkOCwweDNmLDB4MjksMHg3ZiwweDNhLDB4YTcsMHg2ZiwweDg3LDB4ZjUsMHg1YiwweGYyLDB4N2IsCi0gIDB4ZTgsMHg4MywweGI2LDB4OTksMHhmMCwweDFiLDB4MjUsMHhiZiwweDM3LDB4MzMsMHhjNCwweDlmLDB4YmYsMHhhMywweGQ4LDB4OTAsCi0gIDB4MWYsMHgyMiwweDMzLDB4YTEsMHgyMywweDVhLDB4Y2MsMHg0NSwweGYxLDB4MDcsMHg5MywweGU3LDB4M2QsMHgwYSwweDMzLDB4ZTEsCi0gIDB4MzEsMHg5OCwweDZkLDB4ZDgsMHhmMCwweDdkLDB4ZDUsMHhhZCwweDBhLDB4OWEsMHhiMSwweDcxLDB4YjIsMHgxZCwweDFlLDB4MGIsCi0gIDB4MTUsMHhmNywweGNhLDB4ZjUsMHhkNywweGRkLDB4MmYsMHgyMSwweDVlLDB4MzIsMHhlNCwweDdhLDB4YjIsMHg2ZSwweGYyLDB4N2IsCi0gIDB4N2QsMHgzYiwweGY3LDB4MTgsMHgzNCwweDJhLDB4NmEsMHgwZiwweDJlLDB4OWEsMHg1ZCwweGRjLDB4MGEsMHg2YSwweDdmLDB4YzYsCi0gIDB4NTMsMHg4OCwweGI3LDB4ZjcsMHgxMiwweDM3LDB4YmYsMHhlZCwweDUyLDB4NDQsMHg0NCwweDM4LDB4NTgsMHgxMCwweDNlLDB4ZDMsCi0gIDB4MzQsMHhiMSwweDNmLDB4NWQsMHhkMywweDdmLDB4MGUsMHg2ZiwweGIwLDB4ODUsMHg4NiwweDZkLDB4MTgsMHhmMSwweGMzLDB4ZWYsCi0gIDB4YTAsMHg0YiwweDQxLDB4NjksMHhkMCwweDI0LDB4ZmQsMHgwYSwweDY2LDB4ZTEsMHhmYiwweGNhLDB4YWIsMHhhNywweGI3LDB4NzAsCi0gIDB4NjAsMHg3MywweDI4LDB4NjcsMHg0MywweDUzLDB4ZjIsMHg3OSwweDg2LDB4YTQsMHhkMSwweDZhLDB4OWYsMHg4MSwweGY2LDB4ZjgsCi0gIDB4OTAsMHg3YSwweDQ5LDB4ZjIsMHhmNSwweDNhLDB4ZmEsMHgxMSwweDM2LDB4ZmYsMHgxMywweGYzLDB4MTksMHhjYiwweGEyLDB4YTgsCi0gIDB4ZjEsMHg0NywweDQzLDB4YmUsMHhjNCwweDhhLDB4NGQsMHhkYywweGJmLDB4NDEsMHgxOSwweDczLDB4NWQsMHhlNiwweDM3LDB4YTksCi0gIDB4MzcsMHhmZCwweDFiLDB4MzksMHg0NywweDMzLDB4NGYsMHg4YiwweDY1LDB4ZWMsMHg3NywweDdhLDB4NjksMHhiZiwweDYzLDB4NTgsCi0gIDB4YWUsMHg4NCwweDUzLDB4OTAsMHhkMywweDg3LDB4MDgsMHgyMSwweGJlLDB4NmEsMHg2MiwweDdlLDB4NGYsMHhkMywweDRhLDB4ZTUsCi0gIDB4YTAsMHg1MSwweDgyLDB4ZjcsMHhiNywweGQ5LDB4YzksMHhjZiwweDg0LDB4Y2EsMHhmMywweDY4LDB4YWQsMHhjZiwweDgxLDB4MTYsCi0gIDB4NTYsMHgxNCwweDk3LDB4YjcsMHhhZiwweDc0LDB4NmIsMHhkZCwweDFhLDB4MGUsMHg2MiwweDI0LDB4YWUsMHgyNSwweGYxLDB4NGYsCi0gIDB4MDksMHhjYSwweDkzLDB4MTIsMHhlMywweDQ2LDB4OGUsMHg3ZiwweGI2LDB4NDIsMHg0OSwweDNjLDB4MjMsMHg5NiwweDVlLDB4MDgsCi0gIDB4MmQsMHhjNCwweDY5LDB4YzgsMHhjZiwweGUxLDB4OTUsMHhjMywweDRhLDB4OTEsMHg2MSwweDhiLDB4YTUsMHhjNywweDI3LDB4ZjcsCi0gIDB4MGYsMHgwNSwweDNiLDB4OGEsMHgyOSwweGI3LDB4ODEsMHhmNiwweGJlLDB4MWIsMHg2MSwweDQwLDB4ODksMHg0MSwweDU1LDB4ZGMsCi0gIDB4NmYsMHg4ZCwweDU0LDB4MzUsMHg2NCwweGM1LDB4ZDksMHg0NCwweGY3LDB4MDAsMHgzNSwweDVhLDB4ZTYsMHg5MywweGEzLDB4OTMsCi0gIDB4ZmIsMHg5MywweGQxLDB4ZDUsMHgzMCwweGVhLDB4MzIsMHg5ZiwweGRmLDB4OGQsMHhjZiwweDNmLDB4Y2IsMHg0MCwweGZiLDB4YjQsCi0gIDB4OTAsMHg5ZSwweDUwLDB4YmQsMHhmYywweDM1LDB4ZGQsMHhjMiwweDE5LDB4NTcsMHgwNSwweDBlLDB4MGEsMHhlMiwweDY0LDB4ZTIsCi0gIDB4NzksMHhmNCwweDhjLDB4MTEsMHgxNywweGQ3LDB4NWYsMHgxYiwweDg3LDB4YzUsMHhiNywweDUxLDB4YmYsMHhkZiwweDZhLDB4MzgsCi0gIDB4ZTIsMHgyMiwweGMyLDB4MWUsMHhiOCwweGQ5LDB4NTgsMHg2NiwweDg4LDB4MGYsMHhkMywweDMxLDB4NDAsMHg4OSwweDM0LDB4MmMsCi0gIDB4MGUsMHg0ZSwweGNhLDB4MWYsMHg0MywweDE4LDB4YTMsMHg2ZiwweDFhLDB4YTUsMHg2MSwweDdiLDB4OWYsMHhmOCwweDljLDB4ZjYsCi0gIDB4MmIsMHhiNSwweGEyLDB4MGYsMHgzNywweGQyLDB4MTEsMHg3OCwweDk1LDB4ZjgsMHg4ZSwweGRhLDB4NDcsMHhjNSwweDQ3LDB4YjQsCi0gIDB4YWIsMHhkMSwweGFhLDB4MDEsMHhjNywweDJlLDB4NzEsMHgzOCwweGU5LDB4ZmYsMHg1MSwweDNlLDB4NjMsMHg2MSwweDU1LDB4ZmQsCi0gIDB4MDksMHg2NSwweDViLDB4OGIsMHg4ZCwweGY3LDB4NTcsMHgzOCwweGNmLDB4MmMsMHhlOSwweDIyLDB4NmUsMHhmZCwweDY3LDB4NzQsCi0gIDB4NWUsMHhiZiwweGFkLDB4OGIsMHgzYiwweDZhLDB4ZjAsMHg4ZCwweGU0LDB4NzYsMHhjNCwweDI3LDB4OTMsMHhmZSwweDlmLDB4YjQsCi0gIDB4NTcsMHg3NiwweDc3LDB4MTcsMHgzZSwweDEzLDB4ZTksMHg2NCwweGE0LDB4MTUsMHhiNiwweGRjLDB4ZTAsMHgzYSwweDI1LDB4N2IsCi0gIDB4NDksMHgyYiwweDZiLDB4ODQsMHgzOSwweDQ3LDB4NzEsMHg4NywweDJjLDB4NmQsMHhkYSwweDliLDB4OGYsMHhkMCwweDQ4LDB4MjUsCi0gIDB4ZTcsMHg5MywweGZlLDB4OWYsMHgxOSwweDRkLDB4ZDAsMHhjOSwweDhhLDB4OGMsMHgzYywweGRkLDB4ZTksMHgwNiwweGU2LDB4NzIsCi0gIDB4NzIsMHgyMCwweDY0LDB4YTcsMHgzZiwweDgzLDB4MDcsMHg3MCwweDE5LDB4YzcsMHhlZiwweDJmLDB4NWEsMHhmMSwweDhmLDB4MzYsCi0gIDB4N2QsMHgwMCwweDJlLDB4YjIsMHhmMiwweDg4LDB4YmQsMHgwZCwweGJmLDB4ZmUsMHgxYiwweDFhLDB4NWYsMHgwZCwweDFjLDB4YzgsCi0gIDB4ZjgsMHhjNSwweDViLDB4YjksMHhmZSwweGU1LDB4YzAsMHg1OCwweGQ2LDB4YzUsMHg3ZSwweGFiLDB4ZmYsMHg0NywweDdkLDB4MDcsCi0gIDB4MTYsMHhkNiwweDM5LDB4NWUsMHgxMywweDg2LDB4YzAsMHhkYywweDE4LDB4ODgsMHgwZiwweGU5LDB4ZDUsMHhmMSwweDgxLDB4OGEsCi0gIDB4ODgsMHg4OCwweGFmLDB4ZDgsMHg5MCwweDA1LDB4ZmYsMHg3NCwweDkwLDB4NjMsMHg1MCwweDE2LDB4ZTUsMHhiMCwweDUzLDB4NzksCi0gIDB4NTMsMHgyYiwweGUzLDB4ZGEsMHgxYywweDM3LDB4MWUsMHhmNSwweDlhLDB4M2IsMHgxMCwweDExLDB4YTksMHhlZiwweGE4LDB4NjMsCi0gIDB4ODcsMHgwNSwweGZmLDB4OWMsMHg0OSwweDczLDB4NDMsMHgwMywweDRhLDB4NGIsMHhlYSwweGM5LDB4MTksMHg5MywweDIyLDB4NzQsCi0gIDB4YTEsMHg0MSwweDlmLDB4YzUsMHhjNywweDdlLDB4MWUsMHgxNiwweGJlLDB4NmIsMHg4YiwweDM5LDB4ODcsMHgzOCwweDdlLDB4MzYsCi0gIDB4ZTQsMHg1ZCwweDE2LDB4ZmYsMHg0ZiwweDNjLDB4ZWQsMHhlZSwweDZhLDB4MDIsMHg4NSwweGFjLDB4MDUsMHg3MCwweDVhLDB4NDMsCi0gIDB4ZDMsMHgyYSwweGZlLDB4OWEsMHgyNywweGI1LDB4YmQsMHgzMCwweGM3LDB4MjgsMHhmMiwweGUwLDB4ZjcsMHhkZSwweDA5LDB4ZWUsCi0gIDB4NWUsMHhiOSwweGQwLDB4ODIsMHg3ZiwweDQ2LDB4ODQsMHg3NCwweDZkLDB4MWQsMHhjYiwweDFmLDB4YzgsMHgwOCwweGY4LDB4OWYsCi0gIDB4MTAsMHgxZiwweDhkLDB4Y2UsMHgxZSwweGI0LDB4YWQsMHgyMSwweGVmLDB4ZDAsMHgwMywweDNhLDB4MGUsMHg3ZSwweDQwLDB4ZGUsCi0gIDB4NTEsMHg5ZiwweDY2LDB4OTksMHg3MSwweGY5LDB4ZGIsMHhhNCwweDUyLDB4OTksMHhiOCwweDdmLDB4ODAsMHg2NiwweDE5LDB4NDcsCi0gIDB4ZDksMHgwMiwweGU2LDB4OTgsMHg0ZCwweDRlLDB4YzEsMHgwYiwweGIxLDB4N2QsMHhmMSwweDEyLDB4OGYsMHg3OCwweDUyLDB4YmIsCi0gIDB4YTQsMHgyZiwweDg4LDB4NjcsMHg5NSwweGUzLDB4ZjMsMHhmZiwweDFlLDB4MmEsMHgwZCwweDQ3LDB4YTcsMHg5MCwweDlkLDB4ZjQsCi0gIDB4ZmYsMHg2NCwweGVlLDB4ODcsMHgyYiwweGNhLDB4Y2QsMHgzZCwweDU5LDB4ZjEsMHgxYSwweGVlLDB4ZmQsMHhmMywweDE5LDB4NzcsCi0gIDB4ZTMsMHhiMiwweDY4LDB4OTcsMHg5NCwweGM0LDB4ZmEsMHhlMCwweDA5LDB4YWQsMHhlYSwweGM1LDB4ZjcsMHhlZCwweGI3LDB4ZTAsCi0gIDB4OWYsMHgwMSwweGY2LDB4MmUsMHg1NywweDgyLDB4MmMsMHg2NywweDA4LDB4ZGUsMHhjMCwweDZkLDB4NzksMHgzMywweDJlLDB4MGIsCi0gIDB4YmQsMHgyYSwweDc4LDB4ZmIsMHgzMywweDYzLDB4YjIsMHgzYiwweDYxLDB4OTgsMHhlOCwweDI4LDB4Y2YsMHgyNywweGYxLDB4Y2YsCi0gIDB4ZjQsMHhlNywweDZhLDB4ZDcsMHg0OSwweGY5LDB4MWEsMHhkNSwweGM4LDB4M2IsMHhkMCwweDQwLDB4ZjMsMHhmYiwweDZmLDB4ZTQsCi0gIDB4ZjYsMHhkNCwweGYzLDB4YmEsMHhkYSwweGViLDB4NDIsMHhmOSwweGM5LDB4ZWQsMHgyOSwweDQzLDB4MGUsMHgzOSwweDkzLDB4ZjgsCi0gIDB4ODcsMHhjMSwweDc1LDB4ZjAsMHg3MywweGE2LDB4NzIsMHhkOCwweDczLDB4NGEsMHhlMywweDY4LDB4NDcsMHhlNiwweGZlLDB4OWYsCi0gIDB4MDMsMHhkMSwweDdjLDB4OGUsMHg4OCwweDY2LDB4YzEsMHgwMSwweDU2LDB4MWMsMHg5NywweGViLDB4MTAsMHg2ZiwweDRmLDB4YWMsCi0gIDB4M2YsMHhlMiwweDFmLDB4NjgsMHg5NCwweGQ0LDB4NmEsMHhkNywweDJkLDB4ZTQsMHgyNCwweGU1LDB4NjgsMHg0YSwweGY2LDB4ZjgsCi0gIDB4ODcsMHgxMCwweDU4LDB4NzIsMHhmYiwweGM1LDB4NmYsMHhjNywweDAxLDB4Y2EsMHgxZiwweGQ1LDB4OGEsMHg3ZiwweGE2LDB4M2YsCi0gIDB4MTMsMHgzZSwweGE3LDB4Y2QsMHhkNywweGVkLDB4ODMsMHg2OCwweGI0LDB4NzIsMHg2ZiwweDhmLDB4NjksMHgyZiwweDVmLDB4MDQsCi0gIDB4MmYsMHgyMiwweGEyLDB4NjksMHgyZSwweDFjLDB4YTAsMHg3ZCwweDExLDB4MTcsMHgyZiwweDVhLDB4ZjAsMHg0ZiwweDdjLDB4ZTYsCi0gIDB4ODgsMHhlYSwweGIzLDB4Y2YsMHg2MywweDYyLDB4OWMsMHg4YywweDA4LDB4M2UsMHg1OCwweDY2LDB4ZmEsMHg0MywweDEwLDB4ZjYsCi0gIDB4ZjAsMHgyYiwweGQyLDB4MzgsMHgxMCwweGIyLDB4ZmEsMHg3ZiwweDdhLDB4MDUsMHg1NCwweDhiLDB4MWEsMHg4YSwweDkxLDB4MjYsCi0gIDB4NzIsMHg4YywweDk1LDB4ODUsMHgzNiwweDIxLDB4ZmUsMHg2OSwweDNhLDB4YzYsMHg2MSwweGNmLDB4ZTYsMHgyZiwweGFlLDB4MzIsCi0gIDB4ZjUsMHhlMywweDU0LDB4ZmMsMHgyMywweDM1LDB4NTcsMHhiNywweDdmLDB4MjksMHgzMywweDk3LDB4Y2MsMHg4NiwweDA2LDB4YzMsCi0gIDB4ZjksMHg2MCwweDU2LDB4ZDQsMHg3NiwweDBiLDB4MzQsMHhiZiwweGViLDB4MGMsMHgxNiwweDZmLDB4YzcsMHgyYiwweGNkLDB4NWEsCi0gIDB4ODksMHg0NiwweGRiLDB4MmMsMHhmNiwweDU3LDB4NWUsMHgxYSwweGJmLDB4ZTgsMHgwYywweGRhLDB4ZGEsMHhkMiwweDlmLDB4ODQsCi0gIDB4ZTYsMHhlMCwweDljLDB4ZmIsMHg1MCwweDhjLDB4Y2MsMHhlNiwweDNiLDB4MzAsMHg4OCwweGQzLDB4ZDIsMHhmMCwweDU3LDB4NmUsCi0gIDB4ZmMsMHhhNywweGMzLDB4NTYsMHhmYywweDkzLDB4NjYsMHhjZSwweDk3LDB4ZGIsMHhkMiwweGQ3LDB4ZTIsMHg0MCwweDBkLDB4ZGEsCi0gIDB4NzIsMHhkMywweGQzLDB4MTIsMHg2ZSwweDkwLDB4NWMsMHg1YiwweDFhLDB4NjksMHhkMCwweGRjLDB4YzEsMHhmMiwweDVjLDB4MGIsCi0gIDB4ZmUsMHgyOSwweGNmLDB4MGMsMHhiNSwweDQ3LDB4ODgsMHgxNywweDM2LDB4YjIsMHgwMiwweDFkLDB4NWEsMHhhNSwweDMyLDB4ODEsCi0gIDB4MDMsMHgyMSwweGQ0LDB4NmYsMHg1ZCwweDI4LDB4YzcsMHg2YSwweDQyLDB4ZDAsMHg0NywweDdjLDB4ZDAsMHhjYSwweGFjLDB4ZmUsCi0gIDB4OWYsMHg5YiwweDJlLDB4ZTAsMHhiMSwweGFhLDB4MGEsMHg2NiwweGY2LDB4N2YsMHhmOSwweDFiLDB4NzAsMHhiOSwweGRhLDB4MTcsCi0gIDB4Y2MsMHg4YSwweDE2LDB4MGMsMHg5OCwweGIwLDB4NjcsMHg1MywweGMyLDB4ZjEsMHg4NSwweGFhLDB4YmYsMHhkZiwweGVhLDB4ZmYsCi0gIDB4MTEsMHgwNiwweGI0LDB4MTMsMHgzMywweGJjLDB4Y2IsMHhmMSwweGZjLDB4MTYsMHhiMiwweDM3LDB4YTgsMHgzNywweDg4LDB4ODMsCi0gIDB4ZDksMHg3MCwweDJjLDB4ZTQsMHg1YiwweDhlLDB4Y2IsMHg1MiwweGE4LDB4ZTEsMHhkMiwweGYxLDB4MmIsMHgyZiwweDI1LDB4ZjEsCi0gIDB4MGYsMHhmNCwweGY4LDB4MjMsMHg2YSwweDE4LDB4NWMsMHgwOCwweGMzLDB4NDgsMHgyNCwweGQ0LDB4NGUsMHg1ZCwweDhjLDB4ZTgsCi0gIDB4NjEsMHg4NiwweDA4LDB4Y2QsMHgxNSwweGI2LDB4ZTEsMHgxNSwweGI1LDB4MWQsMHgzMiwweDBkLDB4YWIsMHhmZiwweDY3LDB4YzYsCi0gIDB4NjksMHhiNiwweDE2LDB4ZjIsMHg5NywweGQzLDB4N2IsMHhiMywweGJmLDB4YjIsMHg2MywweDJkLDB4YzUsMHg4ZCwweDc3LDB4MmYsCi0gIDB4YzksMHg2NSwweDZiLDB4NTcsMHgxNSwweDA3LDB4NjksMHgzMCwweDhjLDB4ODMsMHhjNCwweDk1LDB4YTQsMHhmZiwweDI3LDB4NmYsCi0gIDB4NDYsMHgxYiwweDRkLDB4NWMsMHg3NCwweGU2LDB4YzIsMHg5MywweDg4LDB4YTgsMHgxMCwweDE2LDB4YjYsMHhjMSwweGEzLDB4MzAsCi0gIDB4YjcsMHg5YSwweDA2LDB4YjMsMHgzOSwweDUwLDB4NDQsMHg3YywweGM4LDB4ZmQsMHg2OSwweDEzLDB4ZmIsMHg0MSwweDlmLDB4MzEsCi0gIDB4MDAsMHhjNywweDM0LDB4NmYsMHhjMCwweDFlLDB4YWQsMHhjMSwweGFmLDB4OTksMHhlZiwweGQ1LDB4YjYsMHg0NywweDM5LDB4ZmUsCi0gIDB4YzEsMHhjZiwweGRhLDB4OWEsMHgxOCwweDk4LDB4ZjgsMHg3NiwweDcwLDB4NzIsMHhmZiwweDBmLDB4NzIsMHhmZiwweDRmLDB4MGYsCi0gIDB4MmUsMHhjMiwweDM2LDB4NzEsMHg4MCwweDFlLDB4Y2IsMHg0NywweGZjLDB4NjMsMHgyZSwweDBiLDB4NzAsMHg4NCwweDJjLDB4OGUsCi0gIDB4MjMsMHhhMiwweDY4LDB4NGUsMHhkMiwweGZmLDB4ZTMsMHg1MiwweDc0LDB4MzgsMHhhMywweGUxLDB4NmEsMHhiMywweDFhLDB4NTUsCi0gIDB4ZWEsMHg0MywweGZjLDB4OTksMHhjOSwweDgxLDB4NjgsMHg5ZiwweGU5LDB4N2YsMHhjMywweDQxLDB4ODAsMHgwZiwweDBjLDB4ZDEsCi0gIDB4MzYsMHhiOSwweGZmLDB4NWQsMHg2OSwweDJlLDB4YzUsMHg3NCwweDMyLDB4NzcsMHgzOCwweDVkLDB4YjAsMHgwMSwweDA1LDB4MTcsCi0gIDB4ZDUsMHg4OSwweDhiLDB4YmUsMHgwOSwweDY1LDB4ZGQsMHgzNiwweDFjLDB4ZTAsMHgxNSwweDY3LDB4MDMsMHg1ZSwweGIxLDB4MjUsCi0gIDB4ZjEsMHg0OSwweGRhLDB4NTIsMHg0MCwweGEzLDB4MjAsMHhiZSwweGJjLDB4ODIsMHg2NCwweGExLDB4ZmUsMHgwYSwweGY1LDB4NWMsCi0gIDB4NWYsMHg4ZSwweDgyLDB4MWEsMHgwZiwweGNlLDB4MDgsMHhlNSwweDU3LDB4MWEsMHg5OSwweDNhLDB4MWMsMHgyOCwweGY3LDB4ZGIsCi0gIDB4YTQsMHg4OSwweGVmLDB4YWIsMHgwYiwweDBiLDB4ZTAsMHgzMSwweDJkLDB4YmYsMHg5ZiwweDdlLDB4OGYsMHhkYywweDA0LDB4M2YsCi0gIDB4NDIsMHg2MCwweDQwLDB4NTcsMHg3MSwweDNjLDB4YzAsMHg2NiwweDZiLDB4YjYsMHhlZiwweGY5LDB4NmYsMHg4MiwweGY1LDB4ZmMsCi0gIDB4NTcsMHgwZiwweGUzLDB4M2YsMHgzNCwweDcxLDB4ZmYsMHg0ZSwweGI4LDB4MDEsMHhkZSwweDYxLDB4N2IsMHg3NSwweGQ3LDB4YTAsCi0gIDB4YWQsMHg4MiwweGJjLDB4YzYsMHg0YSwweGY1LDB4Y2MsMHgxMSwweGI5LDB4MGIsMHg3YSwweDk5LDB4NDcsMHg5NywweDA2LDB4ZTUsCi0gIDB4MGEsMHg3MiwweDhhLDB4ZWQsMHg4ZCwweGJiLDB4MDcsMHhlNSwweDIyLDB4OGIsMHhmZiwweGE3LDB4MDMsMHgzZSwweGUwLDB4NGUsCi0gIDB4NzgsMHhiZCwweDY2LDB4MTAsMHgzZSwweDQ4LDB4NTgsMHhmNywweGFiLDB4ZjksMHhiMiwweDAwLDB4MGUsMHg4NiwweGY4LDB4NzksCi0gIDB4MzQsMHg1MiwweGZkLDB4M2YsMHg2OSwweDU3LDB4YTAsMHg4NywweDk1LDB4ODYsMHhiMiwweGNlLDB4MTQsMHhlYywweDY3LDB4MjcsCi0gIDB4NTgsMHhlOSwweDgwLDB4ZTMsMHg4YywweDc4LDB4MDUsMHhhZSwweDQ2LDB4NGIsMHgwNywweGVjLDB4NjcsMHhjNCwweGNmLDB4ZTEsCi0gIDB4OWYsMHg1OSwweGE5LDB4NmEsMHg1ZiwweDJlLDB4MjYsMHhmZCwweDNmLDB4OWQsMHg0MiwweDEzLDB4NWIsMHhkYiwweGIxLDB4MzMsCi0gIDB4ODgsMHg2NiwweGJiLDB4YzQsMHg3ZSwweGJiLDB4ZTUsMHhkOSwweDM4LDB4MGEsMHhhMiwweGI3LDB4ZDEsMHhiMCwweDlhLDB4M2IsCi0gIDB4NzgsMHhkNywweDc0LDB4MWMsMHgzYywweDJiLDB4N2QsMHhjMSwweGIwLDB4MmQsMHgyNywweDE2LDB4ZmYsMHg4ZiwweGI2LDB4NGQsCi0gIDB4NmEsMHg1NSwweDY3LDB4MTMsMHg1YiwweDMwLDB4MWMsMHhlZCwweDRkLDB4YTcsMHhmOSwweDdkLDB4YjYsMHgyMCwweGU5LDB4ODcsCi0gIDB4N2QsMHg5MCwweDZmLDB4NjQsMHhkNCwweGUzLDB4YTAsMHgwZCwweDY2LDB4MDMsMHhlZCwweGYzLDB4NDMsMHhkMiwweGZmLDB4OTMsCi0gIDB4ZmIsMHg5MiwweGM2LDB4YTQsMHhjMiwweDcyLDB4OWEsMHg4NywweGFmLDB4ZDQsMHg4NSwweDYyLDB4OWMsMHg4MiwweGZmLDB4MjQsCi0gIDB4ZWMsMHg5MSwweDRjLDB4MGIsMHhmNywweDI0LDB4OWEsMHgxMywweGE4LDB4ZmEsMHg4MSwweGQwLDB4YzksMHhmZCwweGQ5LDB4MzksCi0gIDB4NjMsMHgzNywweDFhLDB4ODksMHgwYiwweGZhLDB4YjMsMHhiYSwweDUxLDB4NmQsMHhiNSwweDQ4LDB4NWUsMHgyZCwweDJiLDB4ZTEsCi0gIDB4Y2YsMHhmMSwweDFhLDB4OTksMHg4OSwweDgxLDB4YTksMHg3MSwweDhhLDB4MmMsMHhmMiwweGYwLDB4YTQsMHg3NCwweDI5LDB4NTgsCi0gIDB4ZDEsMHg2ZiwweGJhLDB4N2QsMHhkZSwweGE4LDB4ZjYsMHg1NSwweDY3LDB4NzEsMHhhMCwweDc4LDB4ODksMHgzYywweDMyLDB4ZmUsCi0gIDB4ODcsMHgwOSwweDBkLDB4OTgsMHhmNCwweDNmLDB4MDgsMHhjYSwweDA3LDB4ZjAsMHhlYSwweDk2LDB4ZDIsMHg3ZSwweDdiLDB4NWMsCi0gIDB4YmMsMHg5ZiwweGViLDB4OTMsMHgyNiwweGZiLDB4ZTgsMHgxNywweDg3LDB4ZTEsMHhhMiwweGJhLDB4OTgsMHg2NSwweGM1LDB4MGIsCi0gIDB4NDYsMHhmOCwweDQyLDB4MTksMHg4ZSwweDQxLDB4MDIsMHhiNSwweDQ5LDB4ZjksMHhmMywweDQwLDB4YjAsMHhkMSwweDcwLDB4YzYsCi0gIDB4NmQsMHg5ZCwweGM0LDB4MmQsMHhmZCwweDVhLDB4NmIsMHg2NywweGY0LDB4MzksMHhhZSwweDc2LDB4NTksMHgwOSwweDY0LDB4ZWEsCi0gIDB4N2MsMHg2MCwweDk0LDB4YTEsMHhmYywweDQ0LDB4OGIsMHg2MywweDEyLDB4ZmYsMHgwOCwweDZlLDB4NjgsMHhiMSwweGFmLDB4MzQsCi0gIDB4ZTgsMHg3YywweGYyLDB4MDAsMHg2OSwweGExLDB4NDUsMHg5YSwweDJkLDB4MTYsMHg0ZSwweGE4LDB4NjksMHhkMywweDcxLDB4N2EsCi0gIDB4OTgsMHgzYSwweDQxLDB4ZGUsMHg0MywweGY0LDB4YTQsMHhmYywweGM5LDB4YjUsMHg2NywweGI3LDB4YTgsMHhlZCwweDg4LDB4N2YsCi0gIDB4YjIsMHgzNywweGExLDB4NTksMHhlMSwweDBhLDB4MTYsMHg3MSwweDdmLDB4ZTMsMHhkZSwweDUyLDB4MzcsMHgzNywweGYzLDB4YjksCi0gIDB4YTMsMHhiZSwweGQwLDB4NjgsMHg4OSwweDg1LDB4YzMsMHg0OSwweGZmLDB4NGYsMHhkYSwweGI3LDB4YjQsMHgxMywweDIxLDB4ZDMsCi0gIDB4ODgsMHhiZSwweDdiLDB4N2EsMHg0YiwweDdkLDB4ZjksMHgxYiwweDU5LDB4ODgsMHhiZSwweGUwLDB4YTIsMHg2YiwweGU2LDB4MTksCi0gIDB4ZGIsMHhiMywweGY4LDB4OWEsMHg5ZiwweDcyLDB4OGIsMHhlYywweDY5LDB4OTEsMHg4OSwweDEzLDB4ZDMsMHhmNSwweDE5LDB4NjMsCi0gIDB4ZDIsMHhkNSwweGYyLDB4NzksMHhjNiwweGE2LDB4NjEsMHhmMSwweGUxLDB4ZDYsMHhhYiwweGExLDB4YjIsMHg5MywweDhmLDB4NzIsCi0gIDB4YjUsMHg3NSwweDQ5LDB4ZjUsMHhiZCwweDI5LDB4MGYsMHgwYiwweDYzLDB4NjAsMHhlYSwweDc3LDB4NWQsMHhhYywweDliLDB4MzYsCi0gIDB4ODksMHgzNywweGQyLDB4MmUsMHhlMiwweGZlLDB4NTksMHhhOCwweGRiLDB4OGYsMHhlNSwweDk0LDB4ZDEsMHhhYiwweDRhLDB4MjksCi0gIDB4ZDgsMHgwNywweDM5LDB4NTAsMHg2NCwweDU1LDB4NDcsMHhlZCwweDdkLDB4MDUsMHg1ZSwweDE4LDB4YTMsMHgwYiwweGEzLDB4ZjYsCi0gIDB4MTEsMHg3MSwweDc4LDB4NTIsMHhmZSwweDMwLDB4ZTUsMHgyMywweDQ0LDB4ODMsMHg0ZSwweDlkLDB4MTIsMHgzNCwweDhiLDB4OWUsCi0gIDB4ZDcsMHg5YywweDQwLDB4NTUsMHgzNCwweDA0LDB4NWEsMHhkOCwweGJjLDB4ZTEsMHgwMCwweDAyLDB4MjEsMHhiNSwweGJiLDB4ZGEsCi0gIDB4MTksMHg0MCwweDIwLDB4MTQsMHg5ZiwweGZjLDB4YmUsMHgzNCwweGNkLDB4ODAsMHgwNiwweGE5LDB4ZDAsMHhkOCwweDYwLDB4OWIsCi0gIDB4NTMsMHgwYiwweDNiLDB4NTcsMHhhYSwweDUyLDB4ODYsMHg4YSwweDY2LDB4YmUsMHg4OCwweDc4LDB4ZDgsMHgxNiwweGRiLDB4OTIsCi0gIDB4MDUsMHhiMSwweGNlLDB4NDIsMHg4MywweDdhLDB4YzMsMHg0NywweDJkLDB4ZjgsMHhlNywweGRmLDB4NjQsMHhiYywweDdmLDB4YmIsCi0gIDB4OGQsMHhkYSwweDU2LDB4ZTMsMHg2YSwweDM4LDB4ZGYsMHhjZCwweGMwLDB4MGYsMHg2MSwweGMyLDB4MDYsMHgxYiwweDQ3LDB4OTgsCi0gIDB4NWQsMHg2MSwweDY3LDB4ZmMsMHg4NiwweDU4LDB4MGEsMHhmZSwweDM5LDB4MDEsMHgyZiwweGY0LDB4MmUsMHhkMCwweDRiLDB4YjYsCi0gIDB4ODksMHhkZiwweGQ0LDB4MmUsMHgxMSwweDZmLDB4N2QsMHg2NiwweGE3LDB4ZWMsMHgyNiwweDI3LDB4ZjAsMHg5OCwweDY0LDB4ZWQsCi0gIDB4NmIsMHgyYywweGQxLDB4MmUsMHhiMiwweDMyLDB4YzAsMHhhNSwweDRiLDB4ZTIsMHhmZiwweGI4LDB4ZjAsMHgxYywweDJlLDB4YzIsCi0gIDB4Y2QsMHgyYywweGIzLDB4M2YsMHg2NywweDFmLDB4YTIsMHg5ZCwweDVmLDB4NmEsMHgyNSwweDNjLDB4Y2MsMHhjNywweDk3LDB4MjUsCi0gIDB4ZDMsMHhjZiwweDFkLDB4ODMsMHhiMCwweDk4LDB4ZTMsMHg0MywweGFiLDB4ZmYsMHhhNywweDEzLDB4ZmUsMHgxOCwweGY0LDB4MzIsCi0gIDB4OTQsMHgzNiwweDczLDB4ZTAsMHg4ZiwweGE0LDB4ODIsMHgxZiwweDQzLDB4MzcsMHhmMCwweGZiLDB4M2IsMHg4ZSwweGEwLDB4ZmMsCi0gIDB4YjksMHhhOCwweDU0LDB4YzQsMHgzNywweDc2LDB4MjEsMHgzZSwweDljLDB4ZDgsMHhmZiwweDdkLDB4NjksMHhjNSwweGQwLDB4MTIsCi0gIDB4NDYsMHhmOSwweGMzLDB4YzQsMHhiZiwweDg3LDB4NGQsMHhlMCwweGFjLDB4OTYsMHg3NSwweDVjLDB4OWYsMHgxMywweDUwLDB4N2MsCi0gIDB4YjQsMHgzMSwweDQ2LDB4OGEsMHg0MywweDg3LDB4YzEsMHgxOSwweGNhLDB4M2EsMHg0MiwweGNlLDB4NWIsMHhmMCwweGNmLDB4ZDIsCi0gIDB4MTcsMHhmNiwweGM2LDB4NzUsMHg5ZCwweGFhLDB4ZDksMHhiNywweGMzLDB4NGUsMHhlMiwweGUyLDB4ZGUsMHg0MiwweDBlLDB4YTQsCi0gIDB4ZGQsMHg3MSwweGRiLDB4MDIsMHg5NCwweDNmLDB4N2IsMHhmYiwweDVjLDB4MTEsMHhkYiwweDgyLDB4ZWMsMHg2NCwweGZjLDB4MmIsCi0gIDB4MjQsMHhjYywweDYyLDB4ZmYsMHgxYSwweGNkLDB4ZDcsMHg1ZCwweGRmLDB4MjIsMHg1ZiwweDg1LDB4YzYsMHg2OCwweDdlLDB4MDgsCi0gIDB4YjUsMHhmZiwweDJjLDB4MDQsMHgwNiwweDA4LDB4MDMsMHhkNiwweDY0LDB4NjcsMHhjMywweGIzLDB4ZDEsMHgxNSwweDY3LDB4MTEsCi0gIDB4MTEsMHg5ZCwweGIxLDB4YzQsMHhiZiwweGVjLDB4ZjAsMHg2OSwweGRjLDB4YjMsMHgyZSwweGUwLDB4OTEsMHg0MywweDg4LDB4NzYsCi0gIDB4Y2EsMHg5OSwweDYzLDB4OGUsMHhlYywweGY2LDB4NmYsMHg4ZCwweDU1LDB4ZjYsMHhhMSwweDIyLDB4YjMsMHhjMywweDI1LDB4YmQsCi0gIDB4ZGIsMHhjOCwweGYyLDB4ODgsMHg5NiwweGY4LDB4ZDcsMHg0ZCwweGRiLDB4YTMsMHgxZiwweGMzLDB4ZTIsMHgwNiwweDVjLDB4ODQsCi0gIDB4MGIsMHhmMCwweGIxLDB4ZTYsMHhlMywweDY4LDB4NzAsMHg0YywweDMzLDB4YjcsMHhjZCwweGYwLDB4ZjgsMHg0MiwweGUxLDB4ZjksCi0gIDB4YjIsMHhlMiwweDlmLDB4MjEsMHg3OCwweDgxLDB4M2IsMHhhNSwweDYzLDB4ZDMsMHhlNiwweGMwLDB4NWIsMHhkYSwweDQyLDB4ZDUsCi0gIDB4YWUsMHg4YiwweDFmLDB4ODYsMHg3MCwweDdkLDB4NWUsMHhiMiwweDc3LDB4OGIsMHg2ZSwweGQyLDB4MjIsMHhhMCwweDYxLDB4MWUsCi0gIDB4MmIsMHhiMCwweGUyLDB4OWYsMHhlZCwweGIwLDB4MGUsMHg3NiwweDgwLDB4MWMsMHgxNCwweDE3LDB4YzAsMHhmYSwweGMyLDB4YjksCi0gIDB4OWEsMHhiZCwweDFlLDB4YjcsMHhmZCwweDdhLDB4MTQsMHgwYiwweGE2LDB4NDUsMHhiOSwweDExLDB4MGQsMHg0YywweGI5LDB4ZGUsCi0gIDB4NjksMHhmNSwweGZmLDB4ZmMsMHgyYiwweDk3LDB4YWUsMHhiYSwweDdjLDB4ODYsMHhmYywweDU4LDB4ZGEsMHhiYSwweDY1LDB4YjYsCi0gIDB4MjcsMHhhMywweDJlLDB4ZmQsMHgxZCwweGMwLDB4ZjcsMHg3ZCwweDlmLDB4YWUsMHhiMSwweGNkLDB4ODIsMHhmNSwweDQ3LDB4OWYsCi0gIDB4NTQsMHgxMSwweDExLDB4MGQsMHhhNywweGUwLDB4OWYsMHhhZCwweDJiLDB4ZDQsMHg5OCwweDFjLDB4MjUsMHgxMiwweDZlLDB4MWIsCi0gIDB4NTcsMHhkMCwweGY1LDB4YjgsMHhmMywweDI0LDB4NzcsMHhhYiwweDFhLDB4NzksMHg5MiwweGQzLDB4YTksMHhiNSwweDE4LDB4NzMsCi0gIDB4MWUsMHg0MiwweDQ0LDB4NmQsMHhmNSwweGZmLDB4MWMsMHgyMiwweGFmLDB4YzMsMHhjMiwweGU4LDB4YTYsMHhiOCwweGQ4LDB4MGQsCi0gIDB4NmYsMHhjMiwweDQyLDB4M2QsMHg3MywweDQwLDB4MWMsMHg0NCwweDdiLDB4ZDcsMHhkNywweDMwLDB4YjMsMHg1MywweDc0LDB4YTEsCi0gIDB4N2QsMHhiNCwweDcwLDB4ZDcsMHgzMiwweDNkLDB4MDUsMHhmZiwweDljLDB4ZTUsMHg0MSwweGFlLDB4ZWIsMHgzNiwweDQ1LDB4OTYsCi0gIDB4YjQsMHg3MywweGI3LDB4MGYsMHhjZCwweDYyLDB4OGQsMHhkYywweGZmLDB4ZjMsMHgzMCwweGNjLDB4NWIsMHhkYiwweGY4LDB4N2IsCi0gIDB4MDksMHhiNSwweDg2LDB4ZTIsMHg2OCwweDRhLDB4YzEsMHgzZiwweDAzLDB4YTgsMHhjNCwweDJiLDB4NDIsMHg1OSwweDUxLDB4ZjEsCi0gIDB4OWIsMHhlMywweGZlLDB4OWYsMHg4MiwweDQyLDB4NDQsMHhkNCwweGJlLDB4NmYsMHg2NSwweDZlLDB4MTcsMHhjZiwweDcxLDB4ZmQsCi0gIDB4MTgsMHhiMiwweGZmLDB4NDQsMHgyNCwweDk2LDB4ZjgsMHhkNywweDFkLDB4ZTEsMHg2NiwweDQxLDB4N2QsMHg4OCwweDQ2LDB4NzEsCi0gIDB4ZmYsMHgxYywweDI0LDB4ZGMsMHhlZCwweDMwLDB4MWUsMHhmNiwweGEyLDB4NGYsMHg5MCwweDNmLDB4ZjAsMHhmOCwweDRiLDB4MmQsCi0gIDB4ZGQsMHg0NiwweDU0LDB4MGIsMHhmZSwweDI5LDB4MTQsMHg5YSwweGQ1LDB4YTIsMHg1YSwweDViLDB4ZDQsMHhlNiwweGFlLDB4ZGQsCi0gIDB4MDUsMHhlMywweDhlLDB4MjMsMHgzZSwweDNmLDB4YTMsMHgzZiwweGZiLDB4ODIsMHhkNiwweGNjLDB4MTAsMHhmOCwweDQ1LDB4NDksCi0gIDB4YmEsMHhkNSwweGZmLDB4MjMsMHg3MCwweDZmLDB4MDYsMHhjZCwweDI1LDB4NWYsMHg4NCwweDNkLDB4OWEsMHgxZSwweDk0LDB4NzMsCi0gIDB4MTEsMHgyNiwweDM1LDB4MDAsMHhjMiwweGE0LDB4ZmIsMHhjOCwweDZmLDB4YTEsMHhhMSwweDVhLDB4MGQsMHhlMiwweGFmLDB4ODgsCi0gIDB4MTUsMHhmZiwweGEwLDB4YjYsMHhhZCwweDgwLDB4N2IsMHgxMCwweDZmLDB4ZDAsMHg0MSwweGMxLDB4MDMsMHg5YiwweDEyLDB4ZmEsCi0gIDB4ZDcsMHgwNywweDhmLDB4MzIsMHhkYywweGY2LDB4N2QsMHhlOSwweDVlLDB4ZTYsMHhkNiwweGU1LDB4MmMsMHgwYiwweGZlLDB4MzksCi0gIDB4MGQsMHhiZiwweDQ0LDB4YzEsMHgzMCwweDJkLDB4ODgsMHhmYiwweDY3LDB4NTQsMHhhYiwweDBhLDB4NmUsMHhlYSwweDE3LDB4ZGYsCi0gIDB4ZTMsMHhmYSwweDJiLDB4MzgsMHg0ZiwweDQxLDB4ZmQsMHg3ZSwweDE5LDB4YWYsMHhhMCwweGM2LDB4YjcsMHhjNiwweGJmLDB4NGUsCi0gIDB4YzMsMHhjYiwweDY4LDB4OTQsMHgyZCwweGRiLDB4NTcsMHg1MCwweDA5LDB4NmYsMHg0MCwweDU5LDB4NzAsMHhiYiwweDgyLDB4ZjMsCi0gIDB4OGYsMHhlMSwweDE1LDB4N2IsMHhiZiwweDc4LDB4NDEsMHhmYiwweDY1LDB4NjAsMHg2ZiwweDAwLDB4MDcsMHhlOSwweGM5LDB4ZjgsCi0gIDB4OTcsMHgxMiwweDg3LDB4ODgsMHg1MCwweDAyLDB4MzIsMHgyMywweDIxLDB4MzYsMHhhOCwweDNhLDB4MjEsMHgyZiwweDRjLDB4Y2UsCi0gIDB4OWEsMHhmZSwweGE4LDB4NDgsMHgxOCwweDA1LDB4NjMsMHgyYywweGRmLDB4NjksMHhhMywweDYxLDB4OTIsMHg2NSwweDkxLDB4M2YsCi0gIDB4MjcsMHhjZCwweGI3LDB4NmIsMHhjOSwweDI2LDB4YjUsMHhhZSwweDNkLDB4ODEsMHhjMiwweDYwLDB4NDQsMHgwOSwweGJmLDB4YzgsCi0gIDB4ZjAsMHg0YSwweDkwLDB4MmEsMHg1YiwweDdhLDB4ZDksMHgxZSwweDE1LDB4ZGYsMHg1NywweDY5LDB4YjcsMHhmOCwweDdmLDB4NjYsCi0gIDB4ZjAsMHhmOCwweDU3LDB4NDksMHgwMCwweDk3LDB4NjUsMHg5NSwweGIyLDB4OGIsMHgzOCwweGZkLDB4OTQsMHg4YiwweDcxLDB4YmUsCi0gIDB4OWUsMHg0NSwweDZkLDB4ZTQsMHg0MywweDVjLDB4MzEsMHgwNCwweDk2LDB4MzEsMHg5MiwweDZlLDB4ODksMHg3ZiwweGJkLDB4MDQsCi0gIDB4YzcsMHg1NCwweGRmLDB4ZjIsMHg2NSwweGRiLDB4ZTQsMHgzOSwweDRkLDB4NmYsMHg5MCwweGIyLDB4N2EsMHg4YSwweGMwLDB4ODYsCi0gIDB4MWMsMHg5YiwweGU2LDB4YWIsMHhiNiwweDZmLDB4YzMsMHhlZiwweDNiLDB4Y2EsMHhiYywweDQxLDB4NzcsMHg1NCwweDc0LDB4NDksCi0gIDB4NDksMHhmZCwweGRiLDB4ZTEsMHgxZiwweGU1LDB4ZmUsMHg5ZiwweDlmLDB4MTQsMHgzYywweDBkLDB4NjcsMHhhNSwweGNhLDB4YzAsCi0gIDB4YmMsMHgzNiwweGIxLDB4MTcsMHhkNywweGE3LDB4NTIsMHhjYiwweDdjLDB4M2MsMHg2NywweDgwLDB4OGQsMHgyYSwweGJlLDB4N2EsCi0gIDB4NDcsMHg1NCwweGZlLDB4YzAsMHg4MiwweDdmLDB4NTQsMHhjNCwweDNmLDB4YjgsMHhhOSwweDk4LDB4YWMsMHgzMywweGJlLDB4ZWMsCi0gIDB4MWMsMHgwOCwweGYxLDB4ZjUsMHg5NywweDMyLDB4ZDcsMHhmMywweDg4LDB4YTQsMHg1NiwweDAxLDB4ZjYsMHg3MCwweDRhLDB4ZmMsCi0gIDB4ZWIsMHgzNiwweDY1LDB4NjMsMHg0ZiwweDQxLDB4NTgsMHhkNiwweGIzLDB4MmIsMHg2MCwweDQzLDB4NWEsMHgwOSwweDc3LDB4MDQsCi0gIDB4ZDUsMHgyMSwweGVjLDB4MjksMHhkMSwweGU5LDB4MDAsMHhhOSwweDcwLDB4NmUsMHg4NCwweDgyLDB4NjgsMHg2MCwweGMwLDB4MWEsCi0gIDB4ZmYsMHg0YSwweDViLDB4YWEsMHg2ZSwweGQ1LDB4NWQsMHgyYiwweDUxLDB4M2IsMHg2ZiwweDMyLDB4OGYsMHgwOSwweDlhLDB4YTUsCi0gIDB4MWMsMHhmZiwweGI4LDB4NDMsMHgxOSwweGU1LDB4ZGMsMHg1MCwweDY1LDB4NDUsMHhhZiwweGI4LDB4ZjYsMHg1OCwweGZjLDB4M2YsCi0gIDB4YmEsMHg1MCwweDA5LDB4OWIsMHg4YywweDdjLDB4NDMsMHg3ZSwweDMwLDB4NmIsMHg5NiwweGZhLDB4YjQsMHg5YSwweGQ5LDB4NDcsCi0gIDB4MmYsMHg5MiwweDkzLDB4OGMsMHg5ZiwweGRmLDB4YzgsMHhmMiwweGVjLDB4MWIsMHgxMCwweGZmLDB4YWMsMHg2MCwweDc4LDB4OTAsCi0gIDB4OTMsMHhmMSwweGFmLDB4NGUsMHgzYSwweDBiLDB4N2UsMHhjMywweGU2LDB4YWEsMHhjYiwweDJlLDB4Y2EsMHg0NywweGM4LDB4Y2IsCi0gIDB4ZDEsMHhhYSwweDYxLDB4ZmIsMHhjMywweGUyLDB4YmYsMHg5MiwweDk3LDB4ZDksMHhlMiwweDc4LDB4ZGEsMHgwOCwweDFhLDB4ZGEsCi0gIDB4MmYsMHhiMywweGMzLDB4ZGMsMHgxMSwweDY0LDB4ODksMHg3ZiwweGRkLDB4YjQsMHg3YiwweDNhLDB4MWEsMHg0ZCwweDgyLDB4NjMsCi0gIDB4M2YsMHhlZSwweDlmLDB4YjcsMHgzNCwweGRmLDB4ZDEsMHg3OSwweGZiLDB4YzUsMHhlZiwweGU4LDB4ZGMsMHg4YywweDVhLDB4MTYsCi0gIDB4MzUsMHgxNSwweDNkLDB4MjIsMHhhMiwweDk4LDB4MTUsMHhmZiwweGNjLDB4ZjgsMHg0OCwweDdiLDB4OTksMHhjMywweGFhLDB4YjEsCi0gIDB4MDIsMHgxZiwweDVjLDB4OGQsMHg5NCwweGM2LDB4ZWQsMHg2MywweGEyLDB4MGYsMHg0ZSwweDQ0LDB4YWIsMHhlMiwweDY4LDB4YmYsCi0gIDB4ZTMsMHgxNSwweDU2LDB4MWEsMHg5ZiwweDM2LDB4NmEsMHhjNSwweDNmLDB4ZDMsMHg5ZiwweGQwLDB4ZDYsMHg0MywweDNlLDB4M2UsCi0gIDB4NjQsMHg1OCwweDQxLDB4YjMsMHgzNCwweDlmLDB4OGIsMHg5ZCwweDk5LDB4MDgsMHhmMywweDhhLDB4MGQsMHhkNywweDc3LDB4NDksCi0gIDB4MWUsMHhlYywweGM5LDB4Y2IsMHg4ZiwweGM4LDB4NjcsMHhjOSwweDMzLDB4OTYsMHhmOCwweGQ3LDB4NzYsMHhiNiwweDVlLDB4ZDksCi0gIDB4YzksMHgxMCwweGVkLDB4ZTQsMHhhOSwweDA3LDB4NjAsMHg0NywweDJmLDB4N2QsMHgzMCwweDNjLDB4MTMsMHhkNiwweGFiLDB4YzUsCi0gIDB4YmQsMHhiNiwweDdhLDB4YTIsMHhhMCwweGJkLDB4YjYsMHg4MywweDJkLDB4ZDEsMHg4OCwweDA1LDB4ZmYsMHg0OCwweDI3LDB4YTUsCi0gIDB4NDYsMHhhYSwweGVhLDB4YjgsMHg4YywweDIyLDB4ZDcsMHg1ZiwweDdjLDB4M2QsMHhlZCwweGU2LDB4YzIsMHhkYSwweDJhLDB4ODksCi0gIDB4OGMsMHhmOCwweDQxLDB4Y2QsMHhlNSwweGMwLDB4M2QsMHg4OSwweDdmLDB4ZDIsMHg0YSwweDVhLDB4OTksMHhkMywweDViLDB4OWUsCi0gIDB4MzksMHgyYywweDE3LDB4YTIsMHg3NCwweDJkLDB4N2QsMHhjZCwweDM1LDB4MjIsMHg1NywweDlhLDB4ZmEsMHhjYiwweDc2LDB4YjAsCi0gIDB4YjEsMHg1OCwweGJkLDB4YTQsMHg3NCwweGY1LDB4MmYsMHhkMywweDZiLDB4MmMsMHhmOCwweDQ3LDB4OGIsMHhhYiwweGI4LDB4MWEsCi0gIDB4Y2EsMHhiMiwweDU4LDB4Y2QsMHg3YiwweDBjLDB4MDcsMHg3ZCwweDhlLDB4MmUsMHg5MywweDhmLDB4NTEsMHg2OSwweGRjLDB4ZDksCi0gIDB4MjYsMHg3ZSwweDg4LDB4ZTYsMHhiMSwweDJmLDB4YjIsMHg2YywweDlmLDB4MTUsMHhmZiwweGMwLDB4MTUsMHhlZCwweDE0LDB4MWMsCi0gIDB4NzYsMHgyZSwweDFiLDB4NDYsMHg3OSwweDhiLDB4ZjcsMHgzNywweGVjLDB4YzMsMHhhOCwweGRmLDB4ZDEsMHhkZSwweGVmLDB4YzUsCi0gIDB4NjMsMHgzNSwweGE2LDB4NWUsMHg2MiwweGE1LDB4NWMsMHhiMCwweDI3LDB4ZTMsMHg1ZiwweDBkLDB4YjksMHhjYiwweDQ4LDB4NGIsCi0gIDB4MWMsMHg0MSwweDRiLDB4OGMsMHhkYywweDgyLDB4MzAsMHhjNiwweDdjLDB4N2UsMHhiNywweDg5LDB4NjcsMHgwMiwweGRiLDB4YzgsCi0gIDB4NDcsMHhiMCwweGVkLDB4OGMsMHg1MywweDk3LDB4OWYsMHg0YiwweGYxLDB4ZmYsMHhiOCwweGQ1LDB4MTYsMHg1NiwweGQ0LDB4YjYsCi0gIDB4YzQsMHg3MywweDk3LDB4YjMsMHhkMCwweDdjLDB4NWYsMHg1NCwweGQzLDB4OTQsMHhjZiwweDQ3LDB4ZTAsMHhmNCwweDAxLDB4ZmUsCi0gIDB4NjEsMHhiYiwweDUzLDB4ZWUsMHg0YywweDg5LDB4N2YsMHhkOSwweGExLDB4NDUsMHg0MSwweGViLDB4YzUsMHg4MywweDhiLDB4NTYsCi0gIDB4MGEsMHgzYSwweDlmLDB4NmYsMHhhNywweGRjLDB4MmMsMHg3NSwweDc5LDB4ODgsMHhhMSwweDQ0LDB4YTcsMHhhYiwweDIwLDB4ODMsCi0gIDB4YzUsMHhmZSwweDgyLDB4Y2MsMHhkNSwweDRkLDB4MjcsMHg0OCwweDA1LDB4NzMsMHhkNCwweGEzLDB4ZDgsMHhiOSwweDBhLDB4ZjMsCi0gIDB4N2IsMHg2NiwweGQ2LDB4OGIsMHgzMywweDExLDB4ZTYsMHhmOSwweDBjLDB4MzQsMHgyYiwweGUyLDB4ZjgsMHhlMiwweDY4LDB4YjEsCi0gIDB4MzIsMHg0YiwweGZjLDB4NGIsMHhjZiwweDdjLDB4YmIsMHhmYSwweDZhLDB4ZmUsMHhhZCwweGNjLDB4MzEsMHg5YywweDMzLDB4MGMsCi0gIDB4NDksMHhiNSwweDU1LDB4NWUsMHhkNSwweGUzLDB4ZDAsMHg1MCwweDVlLDB4YmQsMHhhZCwweDNlLDB4Y2YsMHhmZCwweGYzLDB4MTYsCi0gIDB4ZmYsMHg0ZiwweGRhLDB4NzksMHgzOCwweGMxLDB4NmUsMHgwZCwweGUxLDB4YzUsMHg0YSwweGU4LDB4NWYsMHg3YiwweGViLDB4OGEsCi0gIDB4Y2MsMHgxMSwweGYxLDB4N2IsMHgyNiwweGZlLDB4YzksMHgxYywweDE1LDB4M2QsMHg3MCwweDEyLDB4NzIsMHgwMCwweDE3LDB4MmEsCi0gIDB4YzksMHhmZiwweGUxLDB4ZjgsMHhlNywweDA0LDB4ZjcsMHhjZiwweDQ3LDB4YzgsMHgxYywweGYyLDB4MDYsMHg2YiwweDBmLDB4ZDEsCi0gIDB4NmUsMHg3ZiwweDA5LDB4NjksMHg2OSwweDlhLDB4MzcsMHg4YywweDJmLDB4ZTIsMHgyNCwweDExLDB4ZTYsMHg1NCwweGI5LDB4N2MsCi0gIDB4NGUsMHhjYSwweDlmLDB4ZGIsMHhlMywweGI0LDB4MDUsMHgwYSwweGY5LDB4NGIsMHhiOSwweDIxLDB4MDYsMHg4NSwweDVhLDB4ODYsCi0gIDB4ODcsMHhhYywweDM2LDB4ZjcsMHg0MywweDg2LDB4MTcsMHhjMSwweDEzLDB4YzMsMHg4ZCwweDgzLDB4YzAsMHgyZiwweDI5LDB4N2YsCi0gIDB4OGMsMHhlOSwweGVlLDB4ZDAsMHg0ZiwweDViLDB4OWQsMHhhMSwweDI1LDB4MDgsMHgwMywweGE0LDB4NmQsMHhhYywweDQ4LDB4MGIsCi0gIDB4YzQsMHg0OCwweDkxLDB4OGEsMHhmOCwweGE3LDB4ODcsMHg3YSwweDZjLDB4M2EsMHg0NCwweDVjLDB4NGUsMHhlMiwweDhhLDB4MTIsCi0gIDB4OGYsMHgyNSwweGZlLDB4ZDUsMHgwMCwweGM3LDB4OGUsMHg5NiwweDNkLDB4MzQsMHg2ZCwweDgzLDB4ZWMsMHg2NiwweDY3LDB4ZjQsCi0gIDB4MzIsMHgyZCwweGQzLDB4MjMsMHhmZSwweDAzLDB4MmMsMHgwMSwweDVmLDB4NGYsMHg2NiwweDZjLDB4NWEsMHhhMSwweDc2LDB4MDIsCi0gIDB4YmEsMHhmYSwweGRkLDB4Y2YsMHhiNiwweDgwLDB4MjUsMHhmZSwweGI1LDB4MGYsMHhjNSwweGQ4LDB4MGYsMHgzNSwweGM3LDB4OWQsCi0gIDB4ZTIsMHg4MCwweDc2LDB4MTksMHgxNiwweDZhLDB4NDksMHhiNSwweDNlLDB4MmMsMHg3ZSwweDkzLDB4NWUsMHgwYSwweGZiLDB4MDYsCi0gIDB4NzAsMHhhOSwweGFkLDB4ZjgsMHhhNywweDFkLDB4ZGUsMHhmNywweDU3LDB4MmMsMHhiNSwweGIzLDB4OWMsMHgwZiwweGM5LDB4MTksCi0gIDB4YTEsMHg0YywweDJiLDB4OGUsMHhkNSwweDdjLDB4NjgsMHhlZSwweDM3LDB4M2MsMHg4NiwweDJmLDB4YzIsMHhhZiwweDM1LDB4NGYsCi0gIDB4N2YsMHhlYiwweDllLDB4NjksMHhiMSwweDI0LDB4ZmYsMHg0NywweDlhLDB4OGQsMHg2OCwweGRmLDB4MTksMHg3MiwweDNkLDB4NDksCi0gIDB4NWUsMHg4NiwweGZlLDB4N2UsMHhkNSwweGEwLDB4ZGQsMHhlMSwweDkzLDB4ZjAsMHg1MywweGY4LDB4ODcsMHgxZSwweDA0LDB4YWUsCi0gIDB4MWYsMHhhOSwweDJkLDB4NDEsMHhiZSwweDQzLDB4NmEsMHhiYSwweDkyLDB4ZjgsMHg0NywweGQyLDB4ZDQsMHgxZCwweDUwLDB4NTcsCi0gIDB4NmYsMHgxMywweGM4LDB4MjksMHg5NSwweGIxLDB4YzIsMHg2YSwweGRjLDB4NmYsMHgyNywweDI1LDB4ZDMsMHg0ZCwweGUxLDB4MjEsCi0gIDB4N2QsMHg4NCwweGUxLDB4ZDIsMHhhMSwweDI5LDB4ZDEsMHg2ZCwweGMxLDB4M2YsMHgzNywweDQ4LDB4YmYsMHhkNCwweGYzLDB4MDcsCi0gIDB4NmMsMHgwMSwweGZmLDB4ZWIsMHg2YSwweDJiLDB4Y2IsMHhmZiwweGJmLDB4MzgsMHhlZCwweDA3LDB4MWUsMHhkMywweDhiLDB4ZTMsCi0gIDB4MDgsMHg3YiwweGRlLDB4ZDQsMHg5YSwweGQ4LDB4NmMsMHg5NSwweDdlLDB4MmQsMHg3ZCwweDliLDB4YzUsMHhmZiwweDUzLDB4YWIsCi0gIDB4YmQsMHhhZiwweDk3LDB4MWIsMHgyNSwweGEyLDB4NzgsMHg5MiwweGIwLDB4ZDYsMHgwNSwweDJhLDB4ZTcsMHhmZiwweDY4LDB4OWYsCi0gIDB4MzIsMHg3NywweGRjLDB4MzEsMHg1ZiwweDNjLDB4MDYsMHhkYywweDk0LDB4NzEsMHhkZiwweGYwLDB4ZTUsMHgyZCwweDE2LDB4ZmMsCi0gIDB4ZjMsMHgxYywweDhjLDB4MjgsMHg1NSwweGM2LDB4ZGQsMHg2NywweGZmLDB4NmEsMHg4YywweGViLDB4NzcsMHhjZCwweGYxLDB4MDksCi0gIDB4ZTIsMHg5ZiwweDFmLDB4MjIsMHg5ZSwweDE5LDB4NWYsMHhhOCwweDQ1LDB4YmQsMHgzOCwweGIwLDB4ZTAsMHg5ZiwweDE5LDB4ODMsCi0gIDB4M2EsMHg1YSwweGFmLDB4M2QsMHgyNSwweDg2LDB4NzAsMHg5MiwweGZiLDB4ZTcsMHhiNSwweGNjLDB4OTgsMHg2MCwweGM2LDB4YTMsCi0gIDB4MmYsMHhiYSwweGI5LDB4M2QsMHhmMiwweDE2LDB4NzQsMHg3MSwweGU4LDB4NmUsMHhjNSwweDNmLDB4ZGIsMHhlMCwweDU5LDB4YTEsCi0gIDB4YzAsMHhhMCwweDIxLDB4ZTcsMHg2OSwweGU5LDB4MjUsMHg3MiwweGFiLDB4NDYsMHhlYiwweGZkLDB4NmYsMHhkYiwweDBmLDB4NDAsCi0gIDB4NzEsMHgxZiwweDBhLDB4YTIsMHgzMywweDc0LDB4MWQsMHgxNywweDRkLDB4NDEsMHgyYiwweGZlLDB4ZDEsMHg5ZSwweGE4LDB4ZmQsCi0gIDB4MjUsMHg5YiwweGZiLDB4YzksMHg5MiwweGE1LDB4MmIsMHhkZiwweDQ0LDB4NTEsMHgzNCwweDU3LDB4YzUsMHhmNywweGZkLDB4MWQsCi0gIDB4MWMsMHg1OCwweGU3LDB4ZTYsMHg2MSwweGFmLDB4OTcsMHhhMSwweDgxLDB4YTksMHgyMSwweDNhLDB4MDUsMHhmZiwweGQwLDB4M2QsCi0gIDB4N2IsMHhkNCwweGUxLDB4YjksMHhiZSwweGVjLDB4OTMsMHg4YywweDM1LDB4YjksMHgwNywweGYwLDB4NTgsMHg5ZCwweDMyLDB4ZGQsCi0gIDB4M2UsMHg3YywweDYxLDB4NDksMHg2MywweDU0LDB4MWQsMHg3MCwweGU1LDB4YWYsMHhiMywweGUwLDB4OWYsMHhiNCwweDY3LDB4ZDgsCi0gIDB4ZTcsMHg2NCwweDExLDB4YmIsMHg3OSwweGI1LDB4NzgsMHg4OSwweDdkLDB4NGQsMHhmZiwweDI3LDB4ZGQsMHhhZSwweDRmLDB4YmIsCi0gIDB4NjQsMHhiYSwweDdkLDB4ZWMsMHgzYSwweDE5LDB4ODUsMHg1MywweDVhLDB4NjksMHhkNCwweDNlLDB4NjQsMHhjNSwweDNmLDB4NDIsCi0gIDB4YzIsMHhjOSwweDUzLDB4OTIsMHhhMCwweGMxLDB4ZmMsMHhhMywweGYyLDB4MDAsMHgwZSwweGNhLDB4YzcsMHhkZCwweDNlLDB4MDYsCi0gIDB4MGMsMHg1MiwweDFmLDB4NDksMHhmNSwweGZmLDB4MDAsMHhkYSwweGZiLDB4MzAsMHg2NywweGE1LDB4MWEsMHg5ZCwweDU2LDB4MDgsCi0gIDB4MTksMHgxZCwweDVlLDB4MDQsMHg0MiwweDY2LDB4ZTAsMHhlMywweDExLDB4MWUsMHgwOCwweDJiLDB4NTQsMHg3YiwweGMwLDB4MzMsCi0gIDB4YzUsMHhmZiwweDAzLDB4YWIsMHhlMSwweDYwLDB4OWEsMHhhYSwweGQxLDB4Y2QsMHhlMiwweDFkLDB4OTEsMHgwNiwweGMzLDB4YjUsCi0gIDB4MjYsMHhkMCwweGM2LDB4ZjksMHgyNywweDY4LDB4ZGYsMHgyMSwweDEwLDB4OWEsMHg4ZCwweGY4LDB4YTcsMHgzZCwweGU4LDB4NmEsCi0gIDB4NDMsMHhjNSwweDM3LDB4ODksMHg3ZiwweGE0LDB4MGUsMHhlMSwweDIwLDB4OTQsMHgyMCwweGZlLDB4MjEsMHg4NSwweGUxLDB4NWQsCi0gIDB4OWEsMHhiMywweGQ3LDB4ZDYsMHhlNiwweGM0LDB4ZjksMHhhOCwweGFmLDB4OTcsMHgyOCwweGE0LDB4MzAsMHgxZiwweGExLDB4OGUsCi0gIDB4N2YsMHg4YSwweGZmLDB4MjcsMHgzZCwweGUzLDB4MjAsMHhjMiwweGMyLDB4MWIsMHhhMiwweDM2LDB4MDksMHg3NiwweDkxLDB4MjIsCi0gIDB4NmQsMHgzOSwweGU3LDB4ZmYsMHhlYywweDAxLDB4OTcsMHgyNiwweGU3LDB4ZGEsMHgyNCwweGExLDB4ODEsMHhmMywweGNkLDB4MTQsCi0gIDB4OTIsMHhiNCwweGJmLDB4Y2EsMHgzMywweGUyLDB4MGEsMHg3ZiwweGJiLDB4OGQsMHgzYSwweDgyLDB4YWUsMHg0MSwweGUwLDB4OGUsCi0gIDB4MjAsMHgzMSwweDRlLDB4NDcsMHgxMCwweDZmLDB4MmMsMHg0YiwweDI4LDB4NjIsMHhkMywweDExLDB4NjEsMHg4OSwweDdmLDB4ZGQsCi0gIDB4MzQsMHgyMCwweDdkLDB4ODYsMHhjNywweGVhLDB4ZWUsMHhkMywweGUyLDB4NjcsMHhlNCwweGRmLDB4YzksMHg2MiwweGVlLDB4ZDYsCi0gIDB4ZjgsMHhjYywweGM0LDB4M2YsMHgwZSwweDNlLDB4YjgsMHhlYywweDQ3LDB4ZmMsMHg3MywweGRhLDB4MTIsMHhmZiwweGNhLDB4OWIsCi0gIDB4Y2UsMHg1NywweGUzLDB4YjYsMHhhMCwweGZkLDB4MzUsMHg3MSwweDAxLDB4ZmIsMHg5MCwweDdiLDB4YTcsMHhmYiwweDRkLDB4MzcsCi0gIDB4YzgsMHgwZiwweGVlLDB4YjIsMHg3MywweDdmLDB4YzgsMHhiMSwweDBjLDB4YWYsMHhkZiwweGIxLDB4YTUsMHhlNiwweDVjLDB4MTIsCi0gIDB4ZmYsMHgwMCwweDY3LDB4ZmIsMHgzOCwweDIzLDB4YWUsMHgyNiwweDUxLDB4YTUsMHg5ZCwweDYwLDB4MDIsMHgyMSwweDdlLDB4YTUsCi0gIDB4NDQsMHhiMSwweDExLDB4NzIsMHhmNiwweGRlLDB4MDgsMHgzOCwweDE1LDB4NzksMHhjMCwweDdmLDB4NmEsMHg3MiwweGZkLDB4MjEsCi0gIDB4YWQsMHgxNywweDU3LDB4YzMsMHgxNSwweGEwLDB4ZDcsMHg5MywweDZmLDB4ZDAsMHg3YywweDA0LDB4NDIsMHgzNywweDJhLDB4ZTQsCi0gIDB4NDUsMHhlZSwweDgxLDB4ZDcsMHg2ZSwweDUwLDB4OGUsMHhiZSwweDJlLDB4YWMsMHg2NSwweGY5LDB4YTEsMHg5NiwweDJmLDB4YTUsCi0gIDB4MjcsMHhlZCwweGFmLDB4YmMsMHhlOSwweDFkLDB4MjYsMHhkYiwweDhhLDB4NmUsMHhjOSwweGZlLDB4N2IsMHhkOCwweDk1LDB4NWYsCi0gIDB4NzIsMHg0NywweDBiLDB4ZTIsMHg5ZiwweGQwLDB4NDEsMHhhMSwweDQ0LDB4YjMsMHg0NSwweGZkLDB4ZTcsMHgxMCwweGY0LDB4ZWQsCi0gIDB4ZDQsMHgxMCwweDhhLDB4NWIsMHhmOCwweDNmLDB4NTIsMHg4NywweDdhLDB4MTAsMHgyYSwweDc4LDB4MzQsMHhmMywweGVmLDB4NjEsCi0gIDB4YWUsMHg2YSwweGIyLDB4NzcsMHhmZSwweGMwLDB4ZGYsMHg1NywweGRiLDB4MTgsMHhlNSwweDQwLDB4YWUsMHhkNiwweDFiLDB4NzQsCi0gIDB4NmMsMHg5ZiwweDk2LDB4ZTQsMHhmZiwweDNjLDB4NjMsMHhlZSwweDA3LDB4MWYsMHgwZiwweDcyLDB4NzUsMHgyOCwweGEzLDB4MDksCi0gIDB4ZjYsMHhkNywweDM5LDB4NzMsMHhmZSwweGNkLDB4NTEsMHhiMSwweDk3LDB4ZTIsMHhlMCwweDRlLDB4NDcsMHgzNCwweGU3LDB4MDMsCi0gIDB4NjUsMHhlMiwweGZlLDB4MmUsMHhkOCwweDY5LDB4N2EsMHgxNywweGVkLDB4MGQsMHgzNSwweDNhLDB4MTksMHgwMSwweGVmLDB4ZjQsCi0gIDB4NGMsMHg5NiwweDczLDB4MTYsMHg0NiwweGQwLDB4NTQsMHhiOCwweDk5LDB4ODksMHgyMSwweDM0LDB4MGYsMHhiYywweGQwLDB4ZGEsCi0gIDB4MmIsMHhkYiwweDJjLDB4ZjEsMHgyZiwweDE3LDB4YmMsMHgwYiwweGYzLDB4YmEsMHhlOSwweDgwLDB4ZmYsMHg0ZCwweGY2LDB4MGUsCi0gIDB4MmMsMHg4YywweDUxLDB4ZWUsMHhkOCwweDNjLDB4MjQsMHg5NCwweDM0LDB4ODgsMHhmYSwweGRmLDB4YmEsMHhjOCwweDA2LDB4NzAsCi0gIDB4ZWEsMHg3ZCwweDI5LDB4ZmUsMHg5ZiwweGI1LDB4NGIsMHhmMSwweDc0LDB4OTQsMHhiYywweDQ2LDB4ZjMsMHhjMiwweDExLDB4MTIsCi0gIDB4OTUsMHgwYSwweDVmLDB4Y2IsMHg4MCwweDMwLDB4MzcsMHhjMywweGViLDB4NzgsMHg4NCwweDYyLDB4MjksMHg2YywweDBkLDB4YWIsCi0gIDB4NjcsMHhmMywweDVjLDB4ZTQsMHhhZSwweDY0LDB4ZmMsMHg0YiwweDk4LDB4MDksMHg0ZiwweGMzLDB4NzcsMHhiNCwweGJjLDB4MjAsCi0gIDB4OWUsMHhhNiwweDFmLDB4NDcsMHg2NiwweDBmLDB4NjcsMHg2OCwweGViLDB4ZGUsMHg0ZSwweGI4LDB4NmQsMHg3ZiwweDQwLDB4NzIsCi0gIDB4ZTEsMHhjNywweGZlLDB4ZDAsMHhiYiwweDJlLDB4MzcsMHhhOSwweDRiLDB4ZGUsMHgxZiwweDY2LDB4YTksMHg3ZiwweDQyLDB4YjQsCi0gIDB4ZTMsMHg1ZSwweDllLDB4ZjMsMHgwNCwweDM5LDB4Y2QsMHg2ZSwweDhkLDB4NjcsMHgwNiwweDg0LDB4NzcsMHg4MCwweDVmLDB4ZjksCi0gIDB4ZTIsMHhjMywweGUyLDB4NWQsMHhmMCwweDZiLDB4YjYsMHg0NywweGI3LDB4YWYsMHg5MSwweGJmLDB4M2QsMHhmMSwweGI1LDB4ODAsCi0gIDB4NWUsMHhiZiwweDBiLDB4ZDUsMHhmYSwweDJjLDB4MWUsMHhlNCwweDFhLDB4MjIsMHhmZCwweDI4LDB4NjYsMHhiMywweGQ4LDB4MDQsCi0gIDB4YmYsMHg2NSwweDdmLDB4NjMsMHgzYywweGUxLDB4MTEsMHg4YSwweDg5LDB4ZTEsMHhlYiwweDI2LDB4ZDYsMHg0NywweDRiLDB4ZmIsCi0gIDB4NDAsMHhiYiwweDFhLDB4NWQsMHhjNCwweDQxLDB4ZDQsMHg1ZCwweDVhLDB4ZGIsMHg4ZiwweDBlLDB4N2UsMHg2OCwweDVmLDB4OWUsCi0gIDB4ZTMsMHhkMywweDVlLDB4NjUsMHhmMywweDA2LDB4MWMsMHhkZCwweGUyLDB4MTUsMHg3OCwweDg1LDB4NTUsMHg4NSwweDk2LDB4MDYsCi0gIDB4NDQsMHhjNSwweDhhLDB4N2YsMHhkOCwweDgxLDB4MWQsMHhmOSwweGJkLDB4OWQsMHgwZiwweDZlLDB4OTgsMHhjNSwweDNhLDB4M2EsCi0gIDB4ZjQsMHhhMSwweGNjLDB4MjAsMHg5OSwweGE5LDB4MzUsMHg0MiwweGY5LDB4ODAsMHg3YywweDQ5LDB4YjgsMHg0ZiwweDZiLDB4ZTIsCi0gIDB4ODEsMHg2MCwweDRhLDB4YWMsMHhmZSwweDk2LDB4NmQsMHhjNiwweGYzLDB4Y2EsMHgzYywweGQzLDB4M2EsMHhkMywweDNhLDB4YzQsCi0gIDB4MmYsMHgxOCwweDExLDB4OGQsMHhkYywweDZmLDB4NWIsMHgwZiwweGM1LDB4MjcsMHg1YiwweDFlLDB4NDIsMHgzMywweDY2LDB4NmQsCi0gIDB4ZDAsMHgwZCwweGY0LDB4NGMsMHg3NiwweGFkLDB4MzIsMHhiMSwweGZlLDB4YTEsMHhkYywweDYzLDB4YjAsMHhiNywweDdhLDB4Y2UsCi0gIDB4OTksMHgzYiwweGRkLDB4NjgsMHhiZCwweGVhLDB4MDEsMHhiZCwweDNmLDB4MDMsMHhmYywweGNiLDB4ZDgsMHg1NiwweGMxLDB4YzUsCi0gIDB4MDMsMHgxOSwweDFhLDB4ZGUsMHgwZSwweGU3LDB4Y2YsMHhjOCwweGZlLDB4ZGIsMHg0OSwweGZlLDB4OGYsMHg2YiwweGM2LDB4NmUsCi0gIDB4ZjgsMHhkNCwweGVmLDB4MWIsMHhjMSwweGRkLDB4ZWUsMHg1NiwweDc3LDB4YjEsMHhmMiwweDM4LDB4Y2EsMHg5ZiwweGJiLDB4ZDksCi0gIDB4MDksMHg2MiwweGZhLDB4ZGIsMHg1MSwweGQ1LDB4MzYsMHhmOCwweGUyLDB4YmIsMHgzYiwweGU1LDB4YmIsMHgyYywweGNmLDB4NzMsCi0gIDB4NGUsMHhiZCwweGE0LDB4NTYsMHg0NCwweGQxLDB4OWUsMHhkYSwweGVkLDB4MWMsMHgwYywweDk2LDB4ZjUsMHgzYSwweGQ4LDB4YjQsCi0gIDB4ZGQsMHgzYywweDBjLDB4NjEsMHg2YywweDhhLDB4YzksMHg0ZiwweDkxLDB4ZjMsMHhhYywweGYyLDB4NWQsMHhiNCwweGQwLDB4M2IsCi0gIDB4OTIsMHhmOCwweDI3LDB4MzgsMHgyNiwweDVkLDB4ODUsMHg4NSwweDNkLDB4ZjYsMHg2MCwweDYzLDB4MjUsMHg2YywweDk3LDB4MTYsCi0gIDB4YmUsMHg5MCwweDE5LDB4MTcsMHg4NywweGU4LDB4YWIsMHgwOSwweDdkLDB4OTcsMHgwNywweGJmLDB4ODMsMHg1MiwweDg0LDB4ODIsCi0gIDB4OGQsMHg0OSwweDdkLDB4ZGQsMHg4MywweGZmLDB4MTIsMHhjMiwweDllLDB4NmUsMHg1NCwweGUyLDB4ZDMsMHhjMCwweDY4LDB4MmYsCi0gIDB4OGIsMHg2NywweDM2LDB4OTEsMHhmMSwweGIwLDB4NDUsMHgwYywweDI1LDB4YzAsMHgwNiwweDY4LDB4NjcsMHg5ZCwweDMxLDB4YmYsCi0gIDB4OWEsMHhjNCwweDNmLDB4MjgsMHgzOSwweDBlLDB4YzMsMHg5YywweDM4LDB4ZWQsMHgyNiwweDI1LDB4ZWEsMHhjMSwweDg2LDB4MzksCi0gIDB4ZWYsMHhkMiwweDg2LDB4NzUsMHgxMywweGYzLDB4OWQsMHhlZSwweGY0LDB4NjYsMHhjMSwweGE5LDB4NmQsMHg2MCwweGY4LDB4ODcsCi0gIDB4MTMsMHhmYiwweDgxLDB4ZDYsMHg0YSwweDcwLDB4ZDgsMHhjNSwweGUzLDB4ODMsMHgxNSwweGY2LDB4YjksMHg5ZCwweDUwLDB4NzgsCi0gIDB4MjYsMHgwMywweGM4LDB4NTAsMHhjNiwweDRlLDB4NmQsMHhmNSwweGIxLDB4NDYsMHgyZiwweDQ4LDB4NzgsMHgzYiwweDU1LDB4YmIsCi0gIDB4OGIsMHg4NCwweDkzLDB4ZjYsMHgxNywweGQwLDB4M2EsMHgzOCwweDFjLDB4ZTIsMHg0ZSwweGIwLDB4MDIsMHgzNywweDFiLDB4ZjEsCi0gIDB4OTYsMHg2ZCwweDczLDB4MzMsMHhjNCwweDdiLDB4YTYsMHhmZiwweGUxLDB4N2MsMHg4MywweDhiLDB4YmUsMHg0MSwweGJjLDB4OTAsCi0gIDB4ZjUsMHg5OCwweGE4LDB4MjYsMHhmMSwweGNmLDB4ZjUsMHg3YiwweGUwLDB4NTMsMHhmNywweDRkLDB4NDYsMHhhNiwweDIxLDB4OGUsCi0gIDB4OTEsMHhiZSwweDkwLDB4NGYsMHg1YSwweDY2LDB4ZDQsMHg4YywweGMxLDB4ZWYsMHg1NCwweGRmLDB4YWYsMHhlZiwweDFlLDB4NDYsCi0gIDB4ZmMsMHgzMywweDA2LDB4NTUsMHhmMCwweGU4LDB4OTYsMHhhZiwweGE3LDB4ZTAsMHgxZiwweGYyLDB4NjIsMHhmOCwweDU2LDB4ZGQsCi0gIDB4N2UsMHg1MiwweDJjLDB4YWYsMHgzZCwweGU5LDB4MmMsMHhhNSwweDc2LDB4NDMsMHhhYywweDhmLDB4YmUsMHgwYSwweDBiLDB4MjUsCi0gIDB4NzcsMHhiZiwweDU4LDB4MGYsMHhiZiwweDI1LDB4MGIsMHhiOSwweGZmLDB4YzQsMHhjMiwweDdmLDB4NDYsMHhmYywweDEzLDB4NjksCi0gIDB4NzIsMHhlZSwweGIwLDB4ODMsMHhkZiwweDA1LDB4Y2QsMHgwMSwweGU3LDB4YmQsMHhmNiwweGE2LDB4YzYsMHhjMiwweGQwLDB4YTYsCi0gIDB4N2UsMHg2NywweDFlLDB4ZGQsMHg0ZSwweDBhLDB4YTQsMHg2NiwweGFkLDB4ODgsMHgwNCwweGJhLDB4MWEsMHhlYiwweDI3LDB4ZTMsCi0gIDB4ZWYsMHg3ZCwweDY5LDB4NzEsMHhkOCwweDA1LDB4ODUsMHg0NiwweGM2LDB4MTYsMHhlMiwweDYyLDB4N2EsMHhhOCwweGVlLDB4ZmEsCi0gIDB4OGMsMHgxYywweGMyLDB4NTgsMHhhMywweDM0LDB4NjcsMHgzOSwweDlhLDB4OTksMHgxOSwweGIwLDB4YTMsMHhiMiwweDMwLDB4YzMsCi0gIDB4ZTUsMHgyMiwweDE2LDB4ZmUsMHhmMywweDhjLDB4ZGQsMHgwZCwweGJiLDB4OTgsMHg1MywweDc3LDB4NzUsMHhhMywweDE5LDB4YmIsCi0gIDB4OGIsMHhiNSwweGViLDB4NzgsMHhkYiwweDEyLDB4NGUsMHhiNCwweDBlLDB4ZDEsMHg2ZCwweGQ5LDB4MmUsMHg3NSwweDU3LDB4YTQsCi0gIDB4NDgsMHhkZiwweGQ2LDB4NDUsMHhlYSwweDkzLDB4ZjgsMHgwNCwweGU1LDB4ZTcsMHhkOSwweDllLDB4MzIsMHgzZCwweGQzLDB4ZGUsCi0gIDB4ZTgsMHgwYSwweDBmLDB4YzYsMHgyYiwweGU2LDB4NjYsMHhiNiwweGQ2LDB4MzgsMHhkNSwweDE3LDB4YTAsMHgyYywweDJlLDB4YzUsCi0gIDB4YzQsMHgwMiwweGZmLDB4MWYsMHg1OSwweDU5LDB4OTcsMHgzZCwweDk2LDB4OTMsMHhjMiwweDdmLDB4Y2UsMHg3ZCwweDQ3LDB4YTgsCi0gIDB4NjIsMHgwZSwweDVjLDB4MTYsMHhlZCwweDFkLDB4NWMsMHgwZCwweDQ3LDB4NTAsMHhlZSwweDU3LDB4MmYsMHg0OSwweDU1LDB4M2MsCi0gIDB4YmUsMHgzYywweDAyLDB4YmYsMHhlMSwweDU3LDB4Y2UsMHg1OCwweGY4LDB4Y2YsMHhiZCwweGNhLDB4NmUsMHhiNCwweGRmLDB4MzksCi0gIDB4ZGEsMHgyNCwweDJlLDB4NzgsMHg1ZiwweGYzLDB4NDksMHg4ZSwweDFkLDB4ZTIsMHg3YiwweGMyLDB4MjUsMHhhNSwweGNjLDB4YzgsCi0gIDB4ZGEsMHgyMywweDdlLDB4NDEsMHhiYSwweDc0LDB4YWYsMHg5NywweDY1LDB4NGQsMHhhZiwweGI5LDB4NjAsMHg4OSwweDdmLDB4NDksCi0gIDB4ZDAsMHgzYywweGFjLDB4NmUsMHg0MSwweGZiLDB4ZmQsMHgxZSwweGQ2LDB4M2MsMHg1YywweGIyLDB4NDAsMHhkZSwweDRlLDB4ZGUsCi0gIDB4NmIsMHg3OCwweDllLDB4ZDMsMHg1YSwweGI2LDB4MzksMHgyNSwweDdhLDB4ODgsMHgzOCwweGY1LDB4Y2MsMHhjNywweDUzLDB4ZmMsCi0gIDB4M2YsMHhkYSwweGY0LDB4ZTksMHhjYywweDE1LDB4YTYsMHg0YSwweGI2LDB4MWQsMHg4ZiwweDVkLDB4M2EsMHg1YiwweGUyLDB4Y2MsCi0gIDB4M2UsMHhjNiwweGRkLDB4ODAsMHg3MCwweGQ3LDB4MGQsMHhkOSwweDEyLDB4NmUsMHg2MywweDI3LDB4OTUsMHgxNSwweDljLDB4M2YsCi0gIDB4YjEsMHhkZiwweDg2LDB4ODUsMHhlYiwweGE0LDB4YzcsMHg1OCwweGMxLDB4NmUsMHhmYSwweDM3LDB4ZTQsMHg2YiwweGIwLDB4OGUsCi0gIDB4MTUsMHg4NywweDk2LDB4MmMsMHgyNywweDZmLDB4YzIsMHgwMSwweDNkLDB4NWYsMHhiNSwweDJkLDB4OWYsMHg3MywweDFkLDB4ZGQsCi0gIDB4Y2YsMHgwYSwweDVjLDB4MTksMHg3NSwweDY0LDB4NmMsMHhmMiwweDdjLDB4ZGQsMHg0OSwweDg5LDB4ZjYsMHgyYiwweDI4LDB4NWYsCi0gIDB4NmEsMHg5ZiwweDhlLDB4ZjgsMHhmMCwweDJjLDB4ODcsMHg2ZCwweDJhLDB4ZGEsMHg5YiwweDdiLDB4NTksMHg5OSwweDk2LDB4YTUsCi0gIDB4YzgsMHg3NiwweDM4LDB4YWYsMHgyYSwweDYxLDB4ODcsMHg0YiwweDdjLDB4NmQsMHgzMiwweDdlLDB4YWEsMHhkZCwweGQ0LDB4YTYsCi0gIDB4N2QsMHgwYywweDhiLDB4NWEsMHg2ZiwweGY5LDB4YTQsMHhlNiwweDM5LDB4ZTksMHhiMiwweDgwLDB4ZGIsMHhhYywweDlmLDB4ZmIsCi0gIDB4MGYsMHhmMSwweGJjLDB4YTQsMHhmMSwweDQwLDB4ZDgsMHg3OSwweGIyLDB4YjgsMHg3OSwweDFlLDB4OGYsMHgyNywweDRlLDB4YWMsCi0gIDB4NGYsMHg2NywweGRhLDB4MDAsMHg3YywweDAyLDB4MWUsMHg2NiwweGU3LDB4ZDEsMHhlNywweGI3LDB4NjEsMHhhZiwweDY2LDB4NDcsCi0gIDB4ZTAsMHgwNiwweDI3LDB4M2MsMHgwYiwweGNjLDB4NDAsMHgyMSwweDNkLDB4MGUsMHhhNCwweDFhLDB4ZjUsMHgyMywweDQ5LDB4ZTIsCi0gIDB4OWYsMHhjZCwweDZkLDB4NzAsMHg4MCwweGQzLDB4MTIsMHgzNCwweDE0LDB4ZTEsMHhlYiwweGEwLDB4YTAsMHg3YSwweDc3LDB4YmYsCi0gIDB4ZGYsMHgwMywweGViLDB4NWQsMHhmOSwweDA4LDB4ODQsMHhjOCwweDQ5LDB4NTgsMHgyNywweDdjLDB4YWIsMHg5YSwweDZhLDB4MzYsCi0gIDB4ZWYsMHgyNCwweGJlLDB4NjIsMHhmMCwweDE4LDB4N2QsMHhiNiwweDIxLDB4ZmYsMHhkZCwweGMwLDB4OWEsMHhmNCwweGFmLDB4YzEsCi0gIDB4ZTYsMHg5ZSwweGZjLDB4ZmEsMHhlYiwweGViLDB4YzgsMHg3NSwweGYwLDB4MTgsMHhiYiwweDg1LDB4ZTMsMHg5ZiwweGQ3LDB4NjAsCi0gIDB4YTcsMHhhMSwweGM3LDB4MDcsMHgwMywweGNlLDB4M2MsMHgwYiwweGZlLDB4NzksMHg1OSwweGQ4LDB4Y2IsMHg1NCwweGQ2LDB4NzcsCi0gIDB4NmIsMHhmOCwweDFmLDB4NTgsMHgzMywweDAyLDB4NzUsMHhkNCwweGU2LDB4YjcsMHgxMCwweDkzLDB4NTYsMHg3NCwweDFiLDB4OWEsCi0gIDB4OWQsMHhjZiwweGY0LDB4MTUsMHgwZCwweGQyLDB4ZDYsMHhmMCwweDBkLDB4OTMsMHhmMiwweDYxLDB4NzAsMHhjNiwweDYxLDB4ZjgsCi0gIDB4M2MsMHg1MiwweGFhLDB4MmYsMHgxZCwweDMyLDB4MDMsMHg2YiwweDY4LDB4NDgsMHhjNiwweDFiLDB4Y2IsMHhiNSwweGQ3LDB4NjAsCi0gIDB4ZTEsMHgyZiwweGVkLDB4YmEsMHg3OCwweDI5LDB4ZmMsMHg5MSwweDU2LDB4ZGEsMHg2OSwweGZmLDB4ODgsMHg1NCwweDRjLDB4ZWUsCi0gIDB4OWYsMHgwMCwweGM0LDB4MjMsMHgyMywweDcwLDB4MDQsMHhlNiwweDMxLDB4NjEsMHg4NywweDM2LDB4MTIsMHhmMCwweDY1LDB4NjcsCi0gIDB4MzUsMHgzNSwweGM2LDB4YjUsMHg4OSwweGY4LDB4MTcsMHg2YywweGUzLDB4YTYsMHgxOSwweGM3LDB4M2YsMHgxMywweGNmLDB4NGYsCi0gIDB4OTUsMHg3MywweGQxLDB4NjMsMHhhYSwweDU3LDB4NWIsMHgxZCwweDE1LDB4ZTcsMHg5MCwweDYzLDB4Y2MsMHg1YiwweDZmLDB4YmYsCi0gIDB4ODEsMHgwZiwweDc4LDB4NTgsMHgyNCwweDRmLDB4OTQsMHhlMCwweDE4LDB4NzQsMHhhZCwweDVhLDB4ZmEsMHhiOCwweDQ4LDB4MjYsCi0gIDB4ZjcsMHgwZiwweDkzLDB4ZWUsMHg4MCwweDY2LDB4NDAsMHg1MCwweDE3LDB4MjUsMHhiNywweDM0LDB4MzUsMHgxYiwweGVkLDB4ZjUsCi0gIDB4ZWUsMHgzNiwweGU3LDB4NmMsMHg2OCwweDdlLDB4YWQsMHg0YywweGEzLDB4ZGIsMHg2ZCwweDg1LDB4MGEsMHhjYSwweDkzLDB4MjAsCi0gIDB4ZGQsMHg5MiwweGVhLDB4ZmYsMHg4MSwweDE2LDB4ZWEsMHgwYywweDA1LDB4OTQsMHhmNCwweDQyLDB4YWQsMHhmOSwweDdhLDB4YTcsCi0gIDB4N2YsMHg1YiwweDM0LDB4NWMsMHg1OCwweGRmLDB4Y2MsMHg2MSwweGNjLDB4OGYsMHhjNiwweGY5LDB4NDIsMHg3OCwweGFiLDB4YWMsCi0gIDB4YzksMHhmZCwweDA2LDB4NjgsMHg3ZiwweDM1LDB4NzMsMHgzMywweDJkLDB4ZDcsMHg5NiwweDA4LDB4N2IsMHhlNSwweDcxLDB4ZmYsCi0gIDB4NGYsMHgyMywweDE0LDB4OWEsMHhmYywweDY3LDB4ZDIsMHhkMCwweGEzLDB4MDYsMHg1ZCwweGI5LDB4MDQsMHg3ZiwweDM3LDB4ZmUsCi0gIDB4NTMsMHg5ZSwweDE5LDB4MjIsMHgxMSwweGU4LDB4MTIsMHhlYywweDkwLDB4M2QsMHg4MSwweDc2LDB4NzIsMHg1NCwweDI1LDB4MzEsCi0gIDB4ZjgsMHhhZSwweDM5LDB4NjAsMHg3NiwweDY2LDB4ZjEsMHhmZiwweDljLDB4YjksMHhlOSwweDAyLDB4MmMsMHhjNiwweGRkLDB4YjIsCi0gIDB4YWMsMHgzZiwweGU3LDB4MzMsMHhlZSwweGVkLDB4ZTksMHhjZiwweDNhLDB4MmQsMHg1ZiwweDg2LDB4NGYsMHhiNCwweGFhLDB4YTAsCi0gIDB4OGMsMHg4OCwweDQ4LDB4MzIsMHhmMSwweGNmLDB4N2QsMHhlMiwweGI5LDB4YzksMHhmNSwweGNjLDB4OWIsMHg3MSwweDAxLDB4NWUsCi0gIDB4ODEsMHhmOSwweGRhLDB4ZDIsMHhiNiwweDljLDB4MDUsMHhmYSwweDJiLDB4NWEsMHhkNSwweGYyLDB4OTksMHhmZCwweGUyLDB4YWQsCi0gIDB4ZjAsMHg4YSwweDBiLDB4ZDcsMHgyNywweGQ4LDB4YjgsMHg4MCwweDdkLDB4MTYsMHgyYSwweGQ1LDB4ZGMsMHhhZiwweDU5LDB4ZTIsCi0gIDB4NWYsMHg2YiwweDk0LDB4YjgsMHgxNCwweDgxLDB4NzYsMHg4MSwweDAyLDB4ZDksMHhjNSwweDIyLDB4NWEsMHg0OSwweDVlLDB4MjAsCi0gIDB4ZmMsMHg1NSwweGNlLDB4ZmYsMHgyOSwweGEyLDB4OWQsMHhjYywweDk2LDB4MGYsMHhkZCwweGFiLDB4OWUsMHhiOSwweDgxLDB4YWUsCi0gIDB4MGIsMHg5ZiwweDlhLDB4NWMsMHg0ZiwweDlhLDB4MzYsMHgwNCwweDNmLDB4MTMsMHg3MCwweDM1LDB4YjIsMHhiMywweDliLDB4ZDQsCi0gIDB4MDYsMHg2ZCwweDc1LDB4OTAsMHhlNiwweDZlLDB4ZTAsMHhmZSwweDJlLDB4ZDcsMHg0MywweDM2LDB4NGYsMHg3YSwweDFhLDB4ZWMsCi0gIDB4MzUsMHg0MiwweDQxLDB4M2EsMHg5ZCwweGJjLDB4MjYsMHg0YywweGNjLDB4Y2YsMHg0YiwweGRiLDB4Y2QsMHg2MSwweDY0LDB4YjUsCi0gIDB4NmIsMHg3MywweDc4LDB4YjcsMHhkNCwweGMyLDB4YTMsMHg4ZCwweGQxLDB4YjAsMHhiYiwweGJhLDB4MTksMHg4YSwweDM0LDB4ZGIsCi0gIDB4MTYsMHg1MiwweDE4LDB4MzksMHhkOCwweDU0LDB4MTQsMHhhMCwweDljLDB4ZmYsMHgzYywweDMxLDB4NWYsMHgxNywweDVlLDB4ODIsCi0gIDB4ZjcsMHhiOSwweDEzLDB4NmYsMHg5YiwweGZjLDB4OTQsMHhmZiwweDE4LDB4ZjMsMHg2OSwweGFlLDB4ZWQsMHg2OCwweDM4LDB4OWIsCi0gIDB4MWUsMHhiZiwweDZkLDB4NjIsMHgyMSwweDFiLDB4YzUsMHgwZiwweDYxLDB4ZmYsMHhiMSwweDg1LDB4ZmYsMHhjYywweGUzLDB4NWYsCi0gIDB4NmYsMHhkNCwweDFlLDB4NzksMHgyOCwweDExLDB4ZjYsMHhjYSwweGFiLDB4YWMsMHg3MywweDY0LDB4OGIsMHgyZiwweDIxLDB4ZDAsCi0gIDB4YWUsMHgwYywweDY0LDB4ZTYsMHgxNSwweGUwLDB4NTEsMHhiMiwweGZiLDB4YWEsMHgxZCwweDViLDB4YjYsMHg5ZSwweDRmLDB4ZmEsCi0gIDB4N2YsMHg0MCwweGU3LDB4YjQsMHgyYiwweGM5LDB4ZGUsMHgyNCwweGU2LDB4NDMsMHhkZiwweGJkLDB4OWMsMHhlZCwweDkzLDB4OTMsCi0gIDB4Y2YsMHgwNiwweDU1LDB4ODQsMHgzZCwweDljLDB4MDgsMHhkNCwweDI3LDB4ZjksMHhhOCwweGJkLDB4NDksMHgyNiwweDE2LDB4ZmYsCi0gIDB4NGYsMHgzOSwweGVjLDB4ODcsMHg3YywweDlkLDB4ZWEsMHhjMiwweGY3LDB4ZmQsMHgxYiwweGQ5LDB4Y2UsMHgzNiwweDNhLDB4NDAsCi0gIDB4Y2EsMHg2MSwweDlkLDB4NDYsMHg1OCwweDIwLDB4NmUsMHg3MywweGMxLDB4NDYsMHhhZCwweDIwLDB4ZTIsMHgxYSwweGIwLDB4ZTIsCi0gIDB4OWYsMHgxOSwweDAxLDB4NjEsMHg2ZiwweGM4LDB4MzQsMHhjMywweDY3LDB4NmIsMHg5YiwweGI1LDB4YzIsMHg1NSwweDA4LDB4ODQsCi0gIDB4ZDIsMHg2MSwweGFiLDB4YTYsMHgxYSwweDE5LDB4MmEsMHhiOSwweDgzLDB4MzYsMHg2YSwweGFlLDB4N2UsMHg1YSwweGVlLDB4YjQsCi0gIDB4NTksMHhmYywweDNmLDB4NzksMHhmMCwweGJjLDB4OTAsMHg2ZiwweGI4LDB4MWUsMHgyNCwweGY3LDB4NDEsMHgxYiwweDQzLDB4ZWIsCi0gIDB4ZWMsMHg3YiwweDY0LDB4MDYsMHgzYywweDA2LDB4NmEsMHg1ZiwweDQ2LDB4M2QsMHg1OSwweDI2LDB4YWQsMHhlNywweDFlLDB4OTUsCi0gIDB4ODcsMHhkMSwweGZlLDB4OWQsMHhiOCwweDdmLDB4NjcsMHg4NCwweGIzLDB4N2QsMHhlNiwweGM3LDB4OTcsMHhmZSwweDkzLDB4ZWMsCi0gIDB4ODUsMHhkZiwweDIyLDB4ZmUsMHg3MSwweDlmLDB4OTEsMHgyYiwweGM4LDB4YTcsMHg0ZCwweGYzLDB4MDcsMHgzMywweGQ3LDB4ODgsCi0gIDB4NWYsMHhjMywweDEzLDB4YjksMHg0OCwweGI3LDB4OGYsMHhjOCwweDRlLDB4YWIsMHhmZiwweDA3LDB4YTUsMHg5ZiwweGNmLDB4NTgsCi0gIDB4YjYsMHgyZiwweDI3LDB4MGUsMHg0MywweGIwLDB4ODgsMHgxMywweDU5LDB4NDcsMHg3OCwweDlhLDB4YzAsMHgwYiwweGRmLDB4NDYsCi0gIDB4MDksMHg0MywweDJlLDB4NDEsMHg4NSwweGM5LDB4N2YsMHg0ZSwweGRhLDB4YmYsMHg2OSwweGFmLDB4NjksMHg3ZCwweGQxLDB4MmEsCi0gIDB4MWQsMHhjZCwweGY2LDB4MzIsMHhlMywweDU1LDB4NTYsMHhiYSwweGMyLDB4MGMsMHg3YiwweGJkLDB4MWMsMHg5ZCwweGZmLDB4YWUsCi0gIDB4N2QsMHhjZCwweGQ3LDB4N2QsMHhmMCwweDZhLDB4ZGIsMHhmYywweGIzLDB4ZjYsMHg0MSwweDMxLDB4ZTksMHg5ZiwweDc5LDB4NjYsCi0gIDB4N2EsMHg0NCwweDViLDB4MWYsMHgyZCwweDY2LDB4YWUsMHg4NywweDQ4LDB4YWUsMHhmNiwweGJhLDB4OTIsMHg5ZiwweGViLDB4MGEsCi0gIDB4OTIsMHhkMywweDZhLDB4NjMsMHgxNCwweDFmLDB4ZmIsMHgyMSwweDMyLDB4NTMsMHg1YSwweGFmLDB4Y2YsMHhjZCwweGExLDB4YWIsCi0gIDB4NmMsMHg0NSwweGU5LDB4MTMsMHhmMywweDAxLDB4YjYsMHgyYiwweGViLDB4NTUsMHg4ZSwweDdmLDB4OWMsMHg3OSwweGVjLDB4NDksCi0gIDB4OTgsMHg2YiwweGQwLDB4MmYsMHg5MSwweDdlLDB4NmQsMHgzZCwweDE0LDB4ZjAsMHhmOCwweGQ3LDB4ZmQsMHhkYSwweGQzLDB4M2MsCi0gIDB4YjEsMHgyNSwweDY4LDB4ZjUsMHhmZiwweDI4LDB4MjcsMHhiNSwweDQ2LDB4YmIsMHg3YiwweDU1LDB4ZTQsMHgzOSwweDkyLDB4OGYsCi0gIDB4ZDIsMHhkMCwweGE1LDB4MjMsMHg0OCwweDdmLDB4YzUsMHhkNiwweDAwLDB4Y2UsMHg4MSwweDhjLDB4M2MsMHhiMiwweDc0LDB4ZjYsCi0gIDB4NGUsMHg2ZCwweDUwLDB4NzUsMHhkOSwweDA5LDB4OWQsMHg5YywweGRmLDB4MzksMHhhMywweDEzLDB4NWUsMHg2MCwweGJlLDB4MTcsCi0gIDB4MzMsMHg0NywweGU0LDB4ZDksMHhmMCwweDdlLDB4ZmMsMHhkMCwweDFhLDB4Y2EsMHgxYSwweGZmLDB4YTAsMHhiYywweDAwLDB4N2IsCi0gIDB4Y2YsMHg2NiwweDZlLDB4NmIsMHg3YywweDgwLDB4ZmQsMHhiMSwweDU3LDB4OGYsMHhkYiwweGJiLDB4YzMsMHg1NiwweDNjLDB4ZjYsCi0gIDB4YmUsMHhmMywweGQyLDB4NTEsMHg1ZiwweGJmLDB4NjMsMHgwZiwweGMyLDB4ZWMsMHhlNSwweGExLDB4ZWIsMHg3MiwweDFjLDB4ZmEsCi0gIDB4ZGUsMHg4MSwweDI4LDB4ZjcsMHg4NywweDk0LDB4YjQsMHg4OSwweGFkLDB4Y2EsMHhkZiwweDMxLDB4NWYsMHhjMywweGJjLDB4OGUsCi0gIDB4OTQsMHhmOCwweGQ3LDB4NDUsMHg4ZCwweDA3LDB4YjksMHhkYywweGMzLDB4OGQsMHgyYSwweDVhLDB4NWIsMHg1ZSwweGMzLDB4NjEsCi0gIDB4ODgsMHhhZSwweGI0LDB4MmIsMHg3YSwweGE5LDB4NjEsMHhlZiwweGU3LDB4ZjksMHgyOSwweDc0LDB4NmYsMHhiZiwweDdkLDB4NGYsCi0gIDB4NjMsMHg1ZiwweGQyLDB4ZmYsMHgyMywweDdkLDB4MWIsMHgwZSwweDM3LDB4NzgsMHhlMiwweDkxLDB4OTgsMHhlZCwweDBiLDB4MTAsCi0gIDB4ZTksMHg3MSwweDg2LDB4NTAsMHg3ZiwweDM5LDB4ZTEsMHg1MCwweGRjLDB4ZDksMHg4MywweGZiLDB4ZmYsMHhhMywweGRhLDB4YzYsCi0gIDB4YmUsMHhiMiwweGNkLDB4MGUsMHg0NiwweDA2LDB4MmQsMHhmZSwweDFmLDB4MTcsMHgzZCwweDRjLDB4OWQsMHhmNSwweDM0LDB4ZTYsCi0gIDB4NzcsMHhmMiwweGMwLDB4ZDAsMHgwYSwweGI5LDB4ZDUsMHgzNiwweDQ3LDB4ZTEsMHg4ZSwweGEzLDB4YmMsMHg2ZSwweDMyLDB4NDQsCi0gIDB4NWEsMHgxYSwweDRjLDB4OGYsMHg1MCwweDBhLDB4ZmYsMHhiOSwweGY2LDB4YjAsMHhhYSwweDAyLDB4ZjUsMHgzOCwweDQxLDB4ZTEsCi0gIDB4ZGUsMHgwZiwweDE5LDB4NzAsMHhmNSwweGY2LDB4NTIsMHhiZCwweGM3LDB4ZTYsMHhmMSwweDlmLDB4ODQsMHg4NiwweGZjLDB4MzksCi0gIDB4M2MsMHhiMCwweDdkLDB4NzQsMHhlZCwweGU0LDB4ZjIsMHg2NywweDdlLDB4MGIsMHgyZSwweDQ5LDB4NWUsMHg2ZCwweDY2LDB4N2QsCi0gIDB4OGUsMHg4YiwweDcwLDB4YjEsMHg3MywweDMzLDB4NDcsMHg1MywweDg3LDB4YjksMHgyMywweDBiLDB4ZjUsMHgwYiwweDM5LDB4Y2UsCi0gIDB4MDUsMHhlOSwweGIzLDB4YTIsMHhkMSwweDM4LDB4YjksMHgzZiwweDFmLDB4MWQsMHg2MSwweDU3LDB4OTUsMHhkYiwweGI0LDB4N2YsCi0gIDB4ZTMsMHhkYiwweDY2LDB4MGMsMHhiOCwweGI3LDB4MjcsMHg2NywweDE4LDB4MmUsMHhkMSwweDJhLDB4NDMsMHg0NiwweDQ1LDB4MjYsCi0gIDB4OGQsMHg2NCwweDU3LDB4OTksMHhmZSwweDlmLDB4YzIsMHgyNCwweGRlLDB4MTgsMHg4MiwweDU3LDB4NjEsMHgxMSwweDViLDB4NmEsCi0gIDB4MTQsMHg5NCwweGMwLDB4MTgsMHg1YiwweGJjLDB4NmEsMHhkYSwweDg4LDB4ZTgsMHg1MSwweDRlLDB4YTgsMHhhNSwweDI3LDB4MzcsCi0gIDB4YzYsMHhjNCwweDU5LDB4ZDAsMHhjYiwweDRhLDB4NDMsMHgzYywweGZlLDB4NjUsMHhmMSwweGZmLDB4MGMsMHhjMSwweDI2LDB4YTksCi0gIDB4OGIsMHg0NSwweDgwLDB4OTQsMHg0OCwweGRkLDB4MGQsMHgyNSwweGQ1LDB4NzIsMHgzNywweDcxLDB4MjksMHhiZiwweDMzLDB4NzYsCi0gIDB4OWMsMHg3OSwweGY0LDB4YjIsMHgxOSwweGE4LDB4NDIsMHhhMCwweGQyLDB4OWQsMHgxMiwweGZmLDB4M2EsMHgzOSwweGJkLDB4MTEsCi0gIDB4OGEsMHgxOCwweDU1LDB4NmQsMHg3NiwweDI5LDB4MDYsMHhlZSwweDgwLDB4ZWMsMHhiMSwweGI1LDB4ZTYsMHgzNSwweDJhLDB4ZWEsCi0gIDB4MTksMHg5YiwweGM3LDB4NjksMHg0ZiwweGM4LDB4NjcsMHgwZiwweGIxLDB4YzQsMHhiZiwweGQyLDB4NzYsMHg0MywweGEzLDB4MzIsCi0gIDB4MjcsMHg4YSwweGViLDB4ZWYsMHg4NiwweDgzLDB4NGQsMHgyNSwweDVhLDB4NGIsMHg4YywweGI0LDB4YWEsMHgzZiwweDM1LDB4ZjksCi0gIDB4ZTQsMHg3OCwweGE1LDB4ODUsMHhhOSwweDJiLDB4NjgsMHg0YSwweGZjLDB4MmIsMHg2ZCwweDg4LDB4MWUsMHg2MywweDE1LDB4NTEsCi0gIDB4NTcsMHhiMywweGVjLDB4ODYsMHg5MSwweDg4LDB4MmYsMHgyNCwweDdiLDB4NDgsMHhhNywweDQ5LDB4YmIsMHhjZCwweDhhLDB4ODksCi0gIDB4NTksMHg1YSwweDRmLDB4NWYsMHhmNiwweDc5LDB4N2IsMHhjYywweGMyLDB4N2YsMHg4ZSwweDBiLDB4YmIsMHg2MSwweDc0LDB4YzMsCi0gIDB4YTIsMHhmZSwweDRkLDB4ODgsMHgwZiwweDM5LDB4MWEsMHgwYywweDM4LDB4ODYsMHhiZiwweGI4LDB4MjYsMHgzNSwweGJlLDB4MzMsCi0gIDB4MmYsMHgyNSwweGZlLDB4MDUsMHhiYiwweGI5LDB4OTIsMHg2YSwweGIzLDB4YjcsMHhmMywweGZiLDB4YTMsMHhhMSwweDk3LDB4ZDksCi0gIDB4OGQsMHhlOCwweGU4LDB4MDQsMHgwMiwweDA5LDB4ZmIsMHg3YywweGRjLDB4M2YsMHhhOCwweGQxLDB4MDIsMHg4ZSwweDJlLDB4NzEsCi0gIDB4ZDgsMHg5MiwweGZmLDB4NTUsMHgzOSwweGJkLDB4NzksMHg4NSwweDdhLDB4N2EsMHgwMywweDhmLDB4ZDYsMHgxZCwweDdjLDB4YzMsCi0gIDB4YTksMHg2NSwweGM1LDB4NTAsMHg4NiwweDNkLDB4YWQsMHhjZSwweGViLDB4YTEsMHgyMywweGU0LDB4YTMsMHgyNiwweGRjLDB4MGYsCi0gIDB4MjMsMHhmMiwweDdlLDB4MmIsMHhmZSwweDk5LDB4ZjEsMHg4MCwweDdkLDB4YjMsMHhhMSwweDJiLDB4OTQsMHhkZCwweDYxLDB4ODcsCi0gIDB4NTgsMHhhMywweDRiLDB4NjMsMHg1ZSwweDg4LDB4ZDgsMHgxYiwweDk5LDB4ZGIsMHg2OCwweGY2LDB4MzgsMHg0ZiwweDkxLDB4NDYsCi0gIDB4ZGEsMHhkOSwweDJmLDB4MmYsMHgyMCwweDI5LDB4ZjEsMHgyZiwweGY1LDB4NDcsMHhkMSwweDViLDB4M2EsMHg2ZCwweDgxLDB4ZDcsCi0gIDB4NjcsMHg0OSwweDQ3LDB4ZjQsMHg4MiwweGQ1LDB4YjYsMHgzNSwweDcwLDB4MDMsMHgzYywweGFkLDB4MTcsMHgwZiwweGYyLDB4YzQsCi0gIDB4MjgsMHg2NSwweDEzLDB4OWIsMHgxYiwweDQ3LDB4NDMsMHhjYywweDFhLDB4ZmYsMHhjYSwweGQyLDB4MzYsMHhiNywweDIxLDB4M2UsCi0gIDB4NzEsMHg4YSwweDU5LDB4MzAsMHhhMiwweDk3LDB4MGYsMHhkOCwweDNkLDB4YzIsMHhhMCwweGY2LDB4MDIsMHhhYiwweDFjLDB4Y2MsCi0gIDB4YmMsMHg0ZCwweDNjLDB4MDksMHgyZiwweDQwLDB4YjksMHhlNiwweGE4LDB4YzgsMHhiMSwweGM2LDB4YmYsMHg5ZSwweDUzLDB4M2UsCi0gIDB4NjQsMHhiNywweGY1LDB4MzksMHg4NiwweDczLDB4YzYsMHhlOCwweDQ1LDB4YmUsMHgyYywweDBmLDB4OGEsMHgyMywweDBhLDB4NWYsCi0gIDB4OTYsMHg5MiwweGYzLDB4MzUsMHg2OCwweDRhLDB4MjgsMHgwYiwweGE3LDB4ZmEsMHg3ZiwweGQwLDB4M2EsMHgwYiwweDM5LDB4MzksCi0gIDB4MmQsMHg2MSwweDM1LDB4MmMsMHgxNywweDY2LDB4NjksMHg4OCwweDM2LDB4MDcsMHhlMSwweDkyLDB4ZTEsMHhlZCwweGNmLDB4ZGEsCi0gIDB4YjcsMHhkNSwweDBkLDB4N2YsMHgxNCwweGJjLDB4ZjEsMHg1NCwweGZmLDB4OGYsMHhmMCwweDJmLDB4YjAsMHg1NywweDMxLDB4ZjksCi0gIDB4M2YsMHgzMywweGUxLDB4YzcsMHg1MCwweDVjLDB4OWQsMHg1OSwweDRmLDB4Y2UsMHgyOCwweDA3LDB4ODIsMHhhZSwweDVlLDB4ZWUsCi0gIDB4ODgsMHgyNiwweGViLDB4MTMsMHgxZSwweGU5LDB4ZjMsMHgxNiwweGZmLDB4MWIsMHhkYSwweDZiLDB4NGMsMHhkNywweDMzLDB4MDIsCi0gIDB4ZTksMHg1ZiwweDEzLDB4ZGEsMHhkOCwweGJjLDB4NTAsMHhkZSwweDFhLDB4YzQsMHg3YiwweDdiLDB4YjksMHgwNywweGVjLDB4MzYsCi0gIDB4ZmYsMHgyYywweGUxLDB4NjksMHg3NiwweDhiLDB4ZTksMHhmZiwweDk5LDB4NWMsMHhmZiwweDgwLDB4MzQsMHhjNCwweGYxLDB4Y2YsCi0gIDB4NDksMHgxYSwweDRiLDB4NWYsMHgwYSwweDUxLDB4MjgsMHgwOSwweDY1LDB4NzAsMHhmNiwweGU2LDB4NWUsMHg3MCwweDE5LDB4MzgsCi0gIDB4OTgsMHgwMywweDhkLDB4Y2UsMHhjMiwweGVlLDB4M2IsMHgzZCwweGQ2LDB4ZjgsMHg1NywweDVhLDB4MjcsMHg1YywweGQ0LDB4ZTcsCi0gIDB4YjMsMHhlMiwweDc3LDB4YzUsMHgzYSwweDc4LDB4NDcsMHhmNSwweGU5LDB4NTQsMHgxNSwweDJmLDB4MzIsMHhjZSwweGZmLDB4YzksCi0gIDB4ZDIsMHgwYiwweDhhLDB4ZTAsMHgxYywweGVjLDB4ZGQsMHhlMiwweDRlLDB4OGQsMHg3ZiwweGM1LDB4NjEsMHgxOCwweGYxLDB4OGYsCi0gIDB4ODMsMHhlNywweDQzLDB4ZTUsMHg0MSwweDk2LDB4NjQsMHhhNiwweDdkLDB4MjUsMHgzYywweDQyLDB4MzIsMHgwNywweDQyLDB4MTUsCi0gIDB4OTAsMHg5NSwweGVhLDB4ZmYsMHgzOSwweGI3LDB4ZjksMHg1OCwweDEzLDB4MWUsMHhkMiwweGM3LDB4NmIsMHgwYSwweGU5LDB4NjgsCi0gIDB4YTEsMHhhZiwweDdhLDB4ZTksMHhiNiwweGVhLDB4NWEsMHg5MywweDFmLDB4NzIsMHhiNywweDIyLDB4YWUsMHg4MiwweDM3LDB4NzAsCi0gIDB4ZmYsMHgzYiwweDdlLDB4MjIsMHg1OCwweGY5LDB4M2YsMHhkZiwweGU0LDB4ZjEsMHhhOSwweGEwLDB4MmQsMHhlYSwweDJmLDB4ODQsCi0gIDB4ODMsMHhkNSwweDI1LDB4NWEsMHhlNiwweGY2LDB4ZjAsMHg3OCwweGZjLDB4MGIsMHgxMSwweDExLDB4MzQsMHhlNywweDNiLDB4YjUsCi0gIDB4MjUsMHhkYiwweGFjLDB4ZmMsMHg5ZiwweDE5LDB4ODUsMHg1MiwweGIzLDB4ODIsMHg4NywweDJlLDB4OWEsMHg1ZSwweDI4LDB4NzEsCi0gIDB4YjcsMHgwZiwweGEyLDB4YTMsMHgwMSwweDY4LDB4MjYsMHg2ZSwweDJkLDB4NjMsMHgxYiwweDU5LDB4YzUsMHgxZSwweDU3LDB4YmYsCi0gIDB4N2QsMHg4NywweDFjLDB4NGQsMHg0ZiwweGUxLDB4M2YsMHg2YiwweDhkLDB4YjUsMHhjZSwweDdlLDB4NWIsMHhlZSwweDFkLDB4NTIsCi0gIDB4ZGUsMHgxZSwweDcwLDB4ZjMsMHhlYywweGE3LDB4YjUsMHgzYywweDQyLDB4YzQsMHhmMSwweGNmLDB4MzQsMHg2OCwweGFlLDB4MWQsCi0gIDB4ZDQsMHg3ZSwweDlhLDB4NjcsMHhlNSwweGZmLDB4YTQsMHhhZCwweDY4LDB4OGYsMHhiOCwweGJhLDB4MTIsMHg2YywweDkzLDB4OGIsCi0gIDB4ZjgsMHg5YSwweGY3LDB4YjMsMHg5YywweGI4LDB4MTksMHhmZiwweGNhLDB4NjQsMHgzNSwweDIxLDB4ZTksMHgwYywweDMxLDB4YTksCi0gIDB4ZDEsMHhhNywweDg0LDB4NDksMHhmZiwweGNmLDB4OGMsMHg4MSwweGU4LDB4NjUsMHhlOSwweDY2LDB4MDQsMHgzOSwweGYyLDB4MDAsCi0gIDB4NWMsMHg4NiwweGM1LDB4ZGEsMHg5YywweGE4LDB4ZjgsMHhkZiwweGM5LDB4YTgsMHg5ZiwweGQzLDB4OWUsMHhlNSwweGQzLDB4ZjAsCi0gIDB4MTksMHhkYywweDZhLDB4N2EsMHgzYywweDkyLDB4ZjgsMHgyNywweGVkLDB4MDIsMHhmYywweGIzLDB4NTYsMHgxYSwweDRjLDB4M2YsCi0gIDB4NWQsMHg1NCwweGM4LDB4ODksMHhkMywweDA4LDB4N2IsMHhjNCwweGMyLDB4ZDAsMHgyYiwweDcwLDB4ODMsMHg5NiwweGQ1LDB4MmYsCi0gIDB4ZTYsMHhjMiwweDhiLDB4MjgsMHhkZiwweDk2LDB4NDUsMHg0NSwweDRiLDB4ZmUsMHg5NywweDcyLDB4NTYsMHg4YiwweDA1LDB4OWQsCi0gIDB4ZDEsMHg0OCwweDA3LDB4OGEsMHhjMSwweDQzLDB4ODQsMHhkMywweGIwLDB4YzUsMHgxNSwweDI0LDB4MTIsMHgyYywweDIzLDB4OGUsCi0gIDB4MDYsMHhhMiwweGI2LDB4NmYsMHgyOCwweDc0LDB4ODIsMHg2YywweGU1LDB4ZmYsMHhkMCwweGI0LDB4NWUsMHg3ZCwweGFmLDB4YWEsCi0gIDB4MmYsMHg5NywweGFmLDB4ZjMsMHg0YiwweDEyLDB4YmUsMHhlZiwweDVkLDB4ZjgsMHhiZSwweGFiLDB4YzIsMHgwZCwweDUyLDB4YmMsCi0gIDB4ZjYsMHgyZSwweGM0LDB4N2IsMHhhYywweDAxLDB4ODEsMHhiNywweDk5LDB4ZWYsMHg2NiwweDg5LDB4N2YsMHhkMSwweDgzLDB4ZjAsCi0gIDB4YWUsMHg5NiwweDExLDB4Y2QsMHhjMiwweGY1LDB4NTcsMHhkZCwweDVhLDB4NWUsMHg5NCwweGFjLDB4ODIsMHg2NiwweGU5LDB4OWIsCi0gIDB4NzgsMHg2NSwweDU2LDB4MjEsMHg2YiwweDg2LDB4OWQsMHg2NiwweDNlLDB4OWQsMHgyNSwweGZlLDB4YzUsMHhiZCwweDU1LDB4ZGUsCi0gIDB4NmEsMHg3YywweGJiLDB4YzIsMHhiYywweDUxLDB4OTgsMHhhNSwweDE1LDB4MjMsMHhkMCwweDY1LDB4ODgsMHg2ZiwweGFiLDB4NjcsCi0gIDB4NDUsMHg3MywweDM4LDB4ZmYsMHgyNywweDdiLDB4ZTUsMHgzMiwweDllLDB4ZmYsMHgzNSwweGIxLDB4M2UsMHg5ZCwweDljLDB4ZmYsCi0gIDB4NDMsMHgyYiwweGViLDB4YjMsMHg2ZSwweGUwLDB4ZjgsMHg0NywweGYyLDB4MDUsMHgzOCwweDEwLDB4NjIsMHg5YywweGZmLDB4ZjMsCi0gIDB4MzUsMHgxMywweDExLDB4ZDksMHhmOSwweDk1LDB4NDYsMHg2YiwweGZjLDB4NmIsMHg5YywweGU0LDB4ZGMsMHg4NCwweGViLDB4M2YsCi0gIDB4YTgsMHg3NSwweDA5LDB4OGUsMHg4NiwweGFmLDB4ZTcsMHhkMywweDM4LDB4YWQsMHhlMCwweGI0LDB4MmIsMHgxMywweDdmLDB4NTIsCi0gIDB4NDcsMHg2YSwweGZlLDB4OTcsMHg0YiwweDNkLDB4NDIsMHg3NiwweDg2LDB4NWQsMHg3MSwweDE0LDB4Y2IsMHg0NywweDk4LDB4YjMsCi0gIDB4NjEsMHhjOSwweDZhLDB4MTIsMHhjOSwweGJjLDB4NDIsMHg0YSwweDE4LDB4NzUsMHg4NSwweGJiLDB4ZDksMHhjNiwweDkwLDB4MzMsCi0gIDB4OWMsMHhkNSwweGVlLDB4NGQsMHg4OSwweDdmLDB4YzEsMHgyMSwweGFkLDB4NzAsMHgxYiwweGJkLDB4MzUsMHg2YywweDg3LDB4MWQsCi0gIDB4NTAsMHg2NywweGRjLDB4NzgsMHg1ZCwweGJhLDB4OWQsMHhiNiwweDQzLDB4OTEsMHg4MSwweDE2LDB4ZDksMHgzNywweGM5LDB4Y2YsCi0gIDB4N2EsMHg1ZCwweGYzLDB4NTEsMHg0MywweDU5LDB4ZTMsMHg1ZiwweDMzLDB4NjEsMHgxZiwweDE0LDB4MzIsMHg1NCwweGZhLDB4ZjcsCi0gIDB4YzMsMHhmZSwweGM4LDB4NWMsMHhlMywweGE3LDB4OWEsMHhmZiwweDM5LDB4NmQsMHg5ZiwweDUwLDB4NmMsMHhiOCwweGVhLDB4YzksCi0gIDB4ZTksMHhlYywweDdmLDB4ODMsMHg1ZCwweDg2LDB4YWQsMHgxZSwweGFjLDB4ZjEsMHhhZiwweGViLDB4NzgsMHhiNiwweDU3LDB4M2UsCi0gIDB4N2QsMHg0MywweDljLDB4MzUsMHhmMywweDVjLDB4ZDMsMHg2ZCwweDAzLDB4ZmYsMHg2ZCwweDc5LDB4Y2UsMHgyYywweGZkLDB4MjksCi0gIDB4YjYsMHhlOCwweGJjLDB4YmQsMHg1YywweGZjLDB4MWEsMHhmYywweDgxLDB4ZGQsMHgxNiwweDc3LDB4YTQsMHhjNCwweGJmLDB4MzIsCi0gIDB4M2IsMHhlMCwweGEyLDB4N2EsMHg4OCwweDZkLDB4NmEsMHg5MywweDc3LDB4NGIsMHgxNywweGExLDB4ZWMsMHhlNCwweGNkLDB4NTEsCi0gIDB4NzIsMHg5MiwweGUxLDB4ZjksMHgzYSwweDYzLDB4MTIsMHgzYiwweGRmLDB4ODIsMHgzMiwweDhkLDB4YzcsMHhiZiwweGM4LDB4YzQsCi0gIDB4ZmEsMHg3MCwweGZlLDB4Y2YsMHg1OCwweDdmLDB4NjksMHg2OCwweDY5LDB4OWQsMHhmOCwweDA4LDB4N2MsMHhjNiwweDJhLDB4MDYsCi0gIDB4YjIsMHhjZSwweGEwLDB4ZGEsMHhmYSwweGJiLDB4YTgsMHg2ZiwweDIwLDB4MGIsMHgxMSwweDExLDB4NWMsMHg2ZSwweDI4LDB4MWQsCi0gIDB4NzAsMHgxYywweDE0LDB4MGQsMHg4YiwweGZmLDB4YTcsMHgwZCwweGY2LDB4MzQsMHgxNCwweDI4LDB4ODEsMHg5NSwweGUyLDB4ZmQsCi0gIDB4ZGEsMHg3MCwweDU0LDB4MWQsMHg5NCwweDgzLDB4MDUsMHhmNywweGMzLDB4YmYsMHhjNywweDJiLDB4ZTMsMHg5OSwweGY1LDB4ZTIsCi0gIDB4ZmQsMHhmMCwweDRiLDB4OTgsMHhjYiwweGU0LDB4MjIsMHgwYiwweGZmLDB4MTksMHhhMCwweDBkLDB4ZjYsMHhhOSwweGY5LDB4ZDIsCi0gIDB4NWMsMHgwMywweGRmLDB4NzcsMHgxZiwweDlkLDB4NmIsMHhmYywweGU0LDB4NGIsMHg2OCwweGI4LDB4YWQsMHg4NywweGVmLDB4NzAsCi0gIDB4ZmYsMHhmYywweGNjLDB4ZDAsMHgwMSwweGM4LDB4M2YsMHhmYSwweDc3LDB4NDEsMHhhNywweDYxLDB4ZTEsMHhmZiwweDljLDB4ODQsCi0gIDB4MTgsMHgzOCwweDIxLDB4MjAsMHhhMCwweGZjLDB4ZDEsMHgxYiwweDM4LDB4YWQsMHhkNywweGI2LDB4MTQsMHgzNiwweGMzLDB4NmEsCi0gIDB4NDMsMHhmMCwweDkwLDB4M2IsMHg2MCwweGFmLDB4ZGYsMHg3NSwweDllLDB4M2IsMHhmNiwweDUzLDB4ZjgsMHgzZiwweDI4LDB4NmQsCi0gIDB4OWEsMHgzMiwweGJiLDB4ZTUsMHhkNSwweDUyLDB4NzcsMHg3NCwweDkxLDB4OTEsMHhhNSwweDg4LDB4OTUsMHhkMiwweDMxLDB4ZjgsCi0gIDB4YTEsMHhjOSwweGVmLDB4ZTUsMHg4MiwweDc0LDB4MTgsMHgwNywweDFmLDB4NTgsMHhmMCwweGNmLDB4MTAsMHg1YywweGQ0LDB4OGUsCi0gIDB4YjQsMHg2ZCwweGQyLDB4ZTUsMHgyMSwweDE4LDB4YTksMHg0NiwweGZiLDB4YjQsMHg0ZCwweGRjLDB4YWQsMHg4ZCwweGMyLDB4MGQsCi0gIDB4OWMsMHgyZiwweGZkLDB4NzMsMHgxOCwweGVkLDB4N2IsMHg4NCwweDVmLDB4YjEsMHhlMiwweDlmLDB4MGIsMHhmNCwweDBhLDB4N2MsCi0gIDB4OTcsMHgyZCwweDVkLDB4ZGUsMHhmOCwweDMwLDB4OGMsMHhlOSwweDBiLDB4OGQsMHhjYywweDMzLDB4MzksMHgwZiwweGUzLDB4YzEsCi0gIDB4ZjQsMHgxOCwweGFkLDB4OWYsMHg4OCwweGY1LDB4ZjAsMHgzYiwweGQ4LDB4YTksMHg2ZiwweDhhLDB4NWIsMHhlMywweDVmLDB4YjUsCi0gIDB4YWIsMHhlMCwweDUwLDB4OWYsMHg1MywweGE3LDB4MGQsMHgzYywweDVlLDB4NDMsMHg1NSwweGMzLDB4ZDYsMHg4NiwweDgyLDB4N2QsCi0gIDB4YjMsMHg1MSwweGM0LDB4NjEsMHgwYywweDkxLDB4MWEsMHg3YSwweDljLDB4ZTcsMHg5NywweDFjLDB4NGUsMHg4ZCwweDdmLDB4NDEsCi0gIDB4OGMsMHgwNywweDdkLDB4ZjQsMHgwZCwweDZlLDB4ZTgsMHg4NiwweDM5LDB4NDYsMHhkZSwweDhmLDB4YzksMHg2YSwweDNjLDB4MzgsCi0gIDB4MjYsMHhlYywweGY5LDB4MDcsMHg2OCwweDZlLDB4MmUsMHgwYSwweGM4LDB4YTksMHhmOCwweDI3LDB4MGQsMHg2MiwweGY5LDB4MmEsCi0gIDB4YTcsMHhjZCwweGQ4LDB4YTEsMHg1YiwweDcyLDB4ZjYsMHhkOSwweDM4LDB4ZWQsMHg2NywweDczLDB4YTgsMHhhZSwweDlmLDB4N2EsCi0gIDB4YjIsMHgzOSwweDFlLDB4NzAsMHgxOSwweDNmLDB4MmQsMHhiNSwweGU2LDB4N2YsMHg2NSwweDdlLDB4MDMsMHgyZSwweGRjLDB4ZWIsCi0gIDB4ODQsMHg1NiwweDQzLDB4MmMsMHhhZSwweDFkLDB4YTksMHg1ZiwweDc4LDB4MDYsMHhiNSwweGM5LDB4YzMsMHgzMCwweGFhLDB4OTUsCi0gIDB4MjIsMHg2YywweDEzLDB4NDMsMHhmNCwweDJkLDB4OWUsMHhhZiwweDE0LDB4NmIsMHhiNCwweGM0LDB4YmYsMHg2ZSwweDFhLDB4NjMsCi0gIDB4MjMsMHg2NSwweDI2LDB4YzgsMHgxOSwweDhiLDB4OGUsMHg4NCwweGFhLDB4NGUsMHgzOSwweDgyLDB4ZmMsMHg3ZCwweDNkLDB4NTUsCi0gIDB4MjcsMHg1MSwweGFkLDB4MGYsMHhkYiwweGM2LDB4NjAsMHgyMSwweDM4LDB4OGUsMHhlNiwweDU4LDB4ZmQsMHgzZiwweDlmLDB4MjMsCi0gIDB4YzgsMHhhOSwweGVhLDB4YzgsMHg4YywweGRiLDB4YmUsMHgwNywweDU3LDB4NmIsMHg0YiwweGYzLDB4YzUsMHg5ZSwweGNkLDB4MGYsCi0gIDB4MjksMHg3ZCwweGVjLDB4MGIsMHgyNCwweDczLDB4NTgsMHhmNCwweGIwLDB4MzMsMHg1MCwweDFhLDB4NzIsMHhiYywweDlmLDB4ODIsCi0gIDB4N2YsMHhjZSwweDQxLDB4MDQsMHg2MSwweDBmLDB4ZDUsMHhjOSwweDkzLDB4MDYsMHhjMiwweDNjLDB4OTUsMHhhZSwweDIzLDB4NzMsCi0gIDB4NjgsMHhjNCwweGU1LDB4ZjQsMHg0NCwweDNhLDB4NDksMHhjMSwweGJkLDB4Y2QsMHhkMSwweDIyLDB4NGQsMHhkNiwweDlkLDB4NTYsCi0gIDB4ZmMsMHhkMywweDhiLDB4ZGYsMHhhYywweDI0LDB4ZDIsMHhlYywweDdjLDB4YzksMHhmMCwweGVjLDB4NzQsMHgzYSwweGMxLDB4NDYsCi0gIDB4MDgsMHhjZiwweDFmLDB4NzEsMHg0MSwweDI3LDB4MDcsMHg3ZSwweGRjLDB4ZGYsMHg4NSwweGU4LDB4ZGYsMHhjYSwweGZmLDB4ZTksCi0gIDB4MjAsMHg5MSwweDQ4LDB4YzksMHg1MSwweGJjLDB4YmYsMHg4ZSwweDMwLDB4YjIsMHg1ZCwweGEzLDB4ZGIsMHg4OCwweDliLDB4MjAsCi0gIDB4YWMsMHg5MiwweGU4LDB4NzYsMHhhMiwweGIyLDB4OTYsMHg5ZSwweDZmLDB4NTcsMHhjYiwweDdhLDB4YmEsMHgwNSwweGZmLDB4Y2MsCi0gIDB4NzgsMHgwOSwweGZhLDB4YzIsMHhiZSwweDY4LDB4NjYsMHgyYywweDY3LDB4OTUsMHg3MiwweDA5LDB4M2MsMHhhYiwweDFjLDB4YWQsCi0gIDB4ZTIsMHg5ZCwweGY0LDB4NTgsMHg5YiwweGNkLDB4OTMsMHg1OSwweDJlLDB4YmIsMHhkOCwweDMxLDB4YzMsMHg2YiwweGJjLDB4YWEsCi0gIDB4MTcsMHg1OCwweGYxLDB4Y2YsMHgwMSwweDRlLDB4MDIsMHhlZiwweGRkLDB4NzQsMHhhOCwweGU2LDB4N2YsMHhiOCwweDUwLDB4YWQsCi0gIDB4YjMsMHg2NSwweGMxLDB4MWIsMHhjNywweGE0LDB4MzEsMHhmMCwweGE5LDB4OGUsMHhiOCwweDc4LDB4MWMsMHg4NiwweGE1LDB4YWEsCi0gIDB4NTUsMHgzOCwweGIwLDB4YzYsMHhiZiwweDNhLDB4NTgsMHg1ZiwweGEwLDB4MjIsMHg5YSwweGI1LDB4MGYsMHhmNSwweGUzLDB4MjUsCi0gIDB4YzUsMHhhNywweDJkLDB4ZDMsMHg2YiwweDdlLDB4OGYsMHgxMiwweGFmLDB4NWUsMHgyOSwweDY2LDB4YTIsMHgwYiwweDhlLDB4ODUsCi0gIDB4YjIsMHg4ZCwweDRkLDB4YmEsMHg2OCwweGNkLDB4N2YsMHgyZiwweDg0LDB4NDgsMHg0NCwweDM1LDB4NjgsMHgxNCwweDRmLDB4ZDIsCi0gIDB4ZjMsMHhkYywweDBkLDB4ZDgsMHg0NiwweDNlLDB4MGMsMHhlZSwweDBkLDB4YWUsMHg3YywweDFiLDB4MTEsMHhmMiwweDZlLDB4ZDgsCi0gIDB4YzAsMHg5YywweDc1LDB4NGIsMHg3ZSwweDJlLDB4N2EsMHhhZCwweGY5LDB4NWYsMHhjMCwweDdhLDB4NzEsMHg5YiwweGU5LDB4MjQsCi0gIDB4MTMsMHgwZSwweDZmLDB4NzAsMHg3NywweGM5LDB4YjcsMHg4NiwweDBkLDB4ZTgsMHg1MiwweDVjLDB4M2MsMHg1ZSwweDIzLDB4ODEsCi0gIDB4YWUsMHgxNSwweDZhLDB4YjIsMHhjYiwweGJmLDB4YzYsMHg4YSwweDdmLDB4NDgsMHg5MywweDllLDB4ZGYsMHgxOSwweGY5LDB4OTYsCi0gIDB4NmQsMHg5NiwweDc0LDB4NjAsMHg3MywweDcxLDB4NDEsMHhjYiwweDcyLDB4ZjIsMHgxYSwweGVjLDB4ZGYsMHgzMSwweDM3LDB4OGUsCi0gIDB4ZjgsMHhlYSwweGM3LDB4Y2EsMHg5MywweGJiLDB4NjYsMHhiZiwweDI3LDB4MGYsMHhhMiwweDYyLDB4OWUsMHhiOCwweDdmLDB4ODAsCi0gIDB4NGEsMHhhYSwweGExLDB4NTcsMHgxOCwweDI1LDB4YjksMHhhMiwweGJkLDB4ZWYsMHg1MywweGE5LDB4OTIsMHgzOSwweDBhLDB4YzUsCi0gIDB4MTcsMHgxMSwweDA4LDB4NzUsMHhmNiwweGRhLDB4NTUsMHg1MSwweDIyLDB4NjcsMHhmNSwweDdkLDB4ZGEsMHgzMiwweGI1LDB4ZTUsCi0gIDB4NWUsMHgwYiwweGZlLDB4NjksMHg4NSwweGIxLDB4ZTksMHhjZiwweDQ3LDB4MWMsMHg0NiwweGNkLDB4NzMsMHgxYywweDE2LDB4NmEsCi0gIDB4OGUsMHg1ZiwweDE1LDB4NWMsMHg1NiwweDJmLDB4MDksMHgwYiwweDBkLDB4MTIsMHgzMiwweGY5LDB4Y2YsMHg4YiwweDBjLDB4NDcsCi0gIDB4MjgsMHg5NSwweGZmLDB4Y2MsMHg0OSwweGIwLDB4M2QsMHgzYywweDFiLDB4OTEsMHhkMywweGY2LDB4ZmEsMHgzMiwweDhkLDB4ZmEsCi0gIDB4NWQsMHhkMSwweDRiLDB4MTksMHg1ZSwweDYzLDB4OTksMHg5YSwweGUzLDB4ODYsMHg2ZiwweDQxLDB4YjYsMHg2MSwweDRmLDB4ZTUsCi0gIDB4M2YsMHg2ZiwweGU3LDB4ZDksMHg0NiwweDNjLDB4NDksMHgzNiwweDE3LDB4MGUsMHhjMCwweGRjLDB4ZWQsMHhhOCwweDRkLDB4ZjIsCi0gIDB4ZTgsMHgxMSwweGM4LDB4NjcsMHg3MiwweGE4LDB4NjAsMHgzOSwweGFjLDB4ZTMsMHhmOCwweDI3LDB4NDQsMHhhYywweGZjLDB4OWYsCi0gIDB4MWYsMHhjMywweDVhLDB4ZjYsMHg5ZCwweGY4LDB4YWUsMHhlNSwweGY3LDB4ZGMsMHgwYywweDdiLDB4YTMsMHhmOSwweDljLDB4ZWQsCi0gIDB4N2MsMHg5ZCwweGZkLDB4NTksMHgzNiwweGJiLDB4YmUsMHg2NSwweGVjLDB4ZGUsMHgzYiwweGE2LDB4MzcsMHhiMCwweDgyLDB4NzgsCi0gIDB4NDYsMHg1ZCwweDRhLDB4ZmMsMHhlYiwweDI0LDB4NjksMHg4NCwweDkyLDB4MGUsMHg2YSwweDRmLDB4Y2YsMHhhMiwweDg3LDB4YzEsCi0gIDB4ZDUsMHgyZiwweDJiLDB4NzgsMHhkMCwweDBlLDB4NmIsMHg5YywweDA4LDB4NGQsMHhlZSwweDc5LDB4YTksMHgzMSwweGJkLDB4YmQsCi0gIDB4NzcsMHhhZSwweDllLDB4YzIsMHhmZiwweDg5LDB4YzAsMHgyOSwweGFkLDB4OGEsMHgxNSwweDBmLDB4OGEsMHgxNSwweDVjLDB4MTAsCi0gIDB4NzUsMHgzZSwweGZhLDB4ODEsMHhlYywweDgyLDB4OGIsMHhjYSwweDAxLDB4ZTYsMHhmOCwweDk2LDB4ZjgsMHg3ZCwweGY4LDB4NDgsCi0gIDB4ZjMsMHhiMiwweGNjLDB4MjksMHhmYywweDY3LDB4MTgsMHgwOSwweGY4LDB4YzAsMHhkMSwweDUwLDB4OWEsMHhhMCwweDNkLDB4M2IsCi0gIDB4ZDYsMHhlNSwweGM0LDB4NGQsMHgyMiwweDkwLDB4YTMsMHg4OSwweDI3LDB4ODIsMHhlMSwweGFmLDB4NTIsMHhmMSwweDhmLDB4MzIsCi0gIDB4YTAsMHhiZCwweGFmLDB4ZmEsMHhiNCwweGFjLDB4NjgsMHhlMywweDUzLDB4ODEsMHg2MywweGJhLDB4ZDcsMHhlZiwweDUwLDB4ZjgsCi0gIDB4NDIsMHhhOSwweDFlLDB4NGQsMHg4YSwweDhhLDB4M2MsMHg3NSwweGRhLDB4NWIsMHg2NywweDdmLDB4ZGMsMHhjYSwweGZmLDB4OTEsCi0gIDB4ZmUsMHg3ZSwweDAyLDB4ZWQsMHgxNCwweGEyLDB4MmUsMHg3MSwweGYyLDB4ZmQsMHhlMywweGE2LDB4MDcsMHhiNSwweDJlLDB4YWQsCi0gIDB4YWUsMHg4ZCwweGM3LDB4YmYsMHhiNCwweDc2LDB4MmQsMHgzMywweDZhLDB4YjMsMHhmYSwweDdmLDB4NjYsMHhkMywweDVkLDB4MzgsCi0gIDB4MWYsMHhjNSwweDQ4LDB4YWIsMHg2MiwweGE2LDB4MjksMHg2ZCwweGM2LDB4M2YsMHgzYywweGE4LDB4MTUsMHgxOSwweGI2LDB4NjgsCi0gIDB4ZmEsMHgyYSwweDc1LDB4ZGMsMHhmZiwweDkzLDB4OWUsMHhlMiwweDdmLDB4NmUsMHgxNCwweDc4LDB4ZDIsMHg5MywweDNmLDB4MTMsCi0gIDB4NzgsMHhmZSwweDdiLDB4MjIsMHgxMSwweGFjLDB4ZGEsMHhhNSwweGQ5LDB4MzgsMHg2MywweGFhLDB4MDEsMHgyMCwweGY4LDB4NzgsCi0gIDB4YWUsMHgzNSwweGZlLDB4OTUsMHgxOSwweDQyLDB4NmQsMHg1NiwweDA5LDB4NTksMHg0MCwweDc0LDB4Y2UsMHgwZiwweDA3LDB4ODcsCi0gIDB4MmUsMHhhYiwweDI4LDB4ZTgsMHg3ZSwweDAwLDB4NTksMHgzYSwweGUyLDB4MWYsMHg3ZSwweDA1LDB4YmYsMHg2ZiwweDJhLDB4ZmYsCi0gIDB4ZTcsMHgzMiwweDU0LDB4NTUsMHg0ZiwweDFiLDB4Y2YsMHg3NiwweGU3LDB4ZjksMHg1ZiwweDFjLDB4MjEsMHg5NCwweDdlLDB4MjksCi0gIDB4OTMsMHg1ZiwweGI5LDB4YWMsMHgyZCwweGU2LDB4ZjgsMHhlNywweDliLDB4ZDYsMHhmYywweDc3LDB4ZjgsMHgxMywweDU0LDB4ZDYsCi0gIDB4ZGUsMHhiZCwweGU1LDB4YWYsMHhiZSwweGE3LDB4ZGUsMHg5ZCwweGUzLDB4YWQsMHgxNiwweDVmLDB4NjMsMHg2ZSwweGJjLDB4MDMsCi0gIDB4ZDEsMHhkMiwweGEzLDB4NjIsMHg0NywweGU0LDB4OGYsMHhhZSwweGQyLDB4NWEsMHhjNywweGFmLDB4NTIsMHhmMCwweDBmLDB4YWUsCi0gIDB4YjYsMHg1MCwweDAyLDB4MzQsMHgxYywweGNlLDB4OTcsMHhjZSwweDc4LDB4OGEsMHg0MCwweDZlLDB4ZTcsMHg0MCwweDA4LDB4MzUsCi0gIDB4MGUsMHg0YSwweDZjLDB4MTUsMHg1YSwweGExLDB4ODgsMHhjYSwweDBjLDB4NTIsMHhmMCwweDhmLDB4MTksMHhlZCwweGNhLDB4YzgsCi0gIDB4NDksMHg2ZiwweDQyLDB4NzUsMHg4NCwweGRiLDB4MjAsMHg3YiwweDQzLDB4M2EsMHgxYywweGE0LDB4MmIsMHg1NiwweDA1LDB4ODYsCi0gIDB4YzksMHg4ZiwweGI1LDB4YjUsMHhhMCwweDA2LDB4ZTQsMHhlYywweDNiLDB4YWMsMHhmOCwweDY3LDB4ZjcsMHhmNCwweDVkLDB4ODYsCi0gIDB4M2IsMHg5MCwweGE3LDB4ODQsMHg5ZiwweDg0LDB4YzcsMHhhMSwweGM4LDB4ZGYsMHg4MiwweDFmLDB4MjIsMHg3OCwweDEwLDB4ZGEsCi0gIDB4NDMsMHhiNCwweDNmLDB4YmMsMHgwZiwweDFlLDB4ZDUsMHg2YywweDlhLDB4MTgsMHhkNSwweDUyLDB4ZjEsMHhjZiwweDQxLDB4YzMsCi0gIDB4MTcsMHhjYSwweGRjLDB4OWUsMHhjMywweDg5LDB4NWUsMHg1ZSwweDRkLDB4ZGUsMHgyNiwweGNlLDB4ODEsMHhkMSwweGE4LDB4MzcsCi0gIDB4ZTgsMHg2ZSwweDEzLDB4OWYsMHgyNCwweDI4LDB4N2YsMHhmOCwweGZiLDB4MGUsMHg1YSwweGY5LDB4M2YsMHg4NSwweGEzLDB4M2MsCi0gIDB4YzksMHg3ZCwweDhiLDB4YmMsMHgwYSwweDNlLDB4MTEsMHg3MSwweDkwLDB4ZGQsMHg3OCwweGFlLDB4ZGMsMHgwYywweDg0LDB4NmQsCi0gIDB4MTcsMHg1NywweGIxLDB4NWYsMHhlOSwweDY2LDB4NDQsMHgyYywweDA1LDB4ZmYsMHgwOCwweDIzLDB4ODEsMHgzMiwweGM4LDB4NmMsCi0gIDB4YWEsMHhkNiwweGQ0LDB4M2UsMHgyNywweDQ3LDB4M2IsMHg1ZiwweDU3LDB4NjEsMHhjNCwweDU2LDB4MjksMHhkOCwweDU5LDB4OGQsCi0gIDB4MDYsMHgyNywweGNkLDB4OGMsMHgzYywweDcxLDB4NDMsMHg4YSwweGZmLDB4ZTcsMHgwOCwweDM4LDB4NTksMHg5ZCwweDRlLDB4MmIsCi0gIDB4M2MsMHhiZiwweDMwLDB4ZGEsMHhhMywweDU5LDB4NDMsMHg2OCwweGM4LDB4ZWYsMHhkNywweDFlLDB4NjEsMHgyZSwweDE1LDB4NWMsCi0gIDB4NzQsMHgwMywweDk0LDB4ZTksMHg0YiwweDA2LDB4NDQsMHgyYiwweGZmLDB4ZjksMHg2ZSwweDZkLDB4NmYsMHhiNCwweDkwLDB4NGIsCi0gIDB4OWIsMHgyYywweGExLDB4MDEsMHg4ZiwweGM5LDB4OGQsMHg3OCwweDVlLDB4ZTgsMHg5ZSwweDJmLDB4ZjEsMHg3OCwweDMxLDB4ZGMsCi0gIDB4OTMsMHgxNiwweDI2LDB4OWQsMHhjNiwweDhkLDB4M2UsMHg0YiwweGZjLDB4NGIsMHgxNywweDcyLDB4ZTEsMHgzOSwweDU2LDB4NjAsCi0gIDB4NDQsMHg4NiwweGQzLDB4NzMsMHhlMSwweDQ5LDB4NWIsMHhiZSwweDc2LDB4YzMsMHg3ZCwweGQ5LDB4OGEsMHhiYSwweDBmLDB4ZTUsCi0gIDB4NzksMHhkZSwweDMwLDB4YjksMHgwOSwweGMyLDB4NTAsMHhkYywweDJmLDB4YWYsMHhjZSwweDc2LDB4YTUsMHhlMCwweDlmLDB4NjcsCi0gIDB4YzMsMHhiNywweGJlLDB4NmIsMHg3ZiwweDI0LDB4ZWMsMHg4MywweDkzLDB4NmMsMHg3ZSwweGRjLDB4MzEsMHg0OCwweDc4LDB4NDQsCi0gIDB4YWMsMHgzOCwweDZlLDB4YWYsMHgxMywweGVmLDB4MjIsMHgyZiwweGIzLDB4ZGIsMHhjZSwweDNhLDB4NDYsMHhlNCwweDZmLDB4NWIsCi0gIDB4ZmMsMHgzZiwweDFkLDB4MDIsMHg0NywweDNiLDB4ZDQsMHgzYiwweDRkLDB4NDcsMHhmYiwweGQ0LDB4NzcsMHgyZiwweDJhLDB4YjIsCi0gIDB4YjMsMHg3NCwweDBjLDB4ODEsMHhhZSwweGE4LDB4YTIsMHg2MCwweGJiLDB4MDQsMHhmYiwweGFiLDB4MTEsMHgwZiwweGY4LDB4MmQsCi0gIDB4ZmMsMHhlNywweGQ3LDB4YjUsMHhhMSwweDY4LDB4ZDUsMHhiYiwweDk5LDB4YTMsMHhlNCwweDA3LDB4ODEsMHg1NywweGQ5LDB4Y2QsCi0gIDB4M2IsMHgzOCwweGZmLDB4OTksMHg1ZSwweDY2LDB4ZjMsMHhlMiwweGVlLDB4ZTUsMHgwNSwweDY1LDB4ZjQsMHgyNSwweDU2LDB4MWEsCi0gIDB4NzcsMHg3NCwweGE3LDB4ZjAsMHg3ZiwweDdlLDB4YWMsMHhiMywweGZhLDB4NzksMHg3ZCwweDkxLDB4ZWYsMHg5MiwweGJjLDB4ZGUsCi0gIDB4ZGYsMHg0MCwweDMxLDB4MjAsMHhmYSwweGZkLDB4NmQsMHhlZSwweGJlLDB4ZWUsMHg2MiwweDRhLDB4ODMsMHhmZSwweDVjLDB4MDUsCi0gIDB4ZTUsMHg0ZiwweGFmLDB4ZmMsMHg4MSwweDk1LDB4ZmYsMHgwYywweDZkLDB4MGQsMHgxZCwweGRhLDB4NzcsMHg4YywweGViLDB4ZWIsCi0gIDB4YjMsMHhlZSwweDgzLDB4MjYsMHgxNCwweDVjLDB4NzIsMHhjOCwweDRjLDB4N2IsMHg3NywweDFiLDB4MTksMHgxYSwweDg5LDB4YzIsCi0gIDB4MDEsMHg4NiwweGY4LDB4ZDksMHg2ZiwweGY1LDB4ZmYsMHhlNCwweGY2LDB4NTIsMHgxNiwweDJkLDB4ZTksMHhhNywweGNmLDB4ZTIsCi0gIDB4YzUsMHhhZCwweGUwLDB4YTYsMHhiMiwweGNlLDB4NjksMHhiZCwweGNjLDB4OWQsMHg5NywweDYxLDB4MjcsMHg4YywweDZkLDB4ZDUsCi0gIDB4ZjQsMHg1YSwweDU5LDB4NGQsMHhlMSwweDNmLDB4NzcsMHhjMCwweGZiLDB4YTQsMHhjYSwweDc4LDB4NzQsMHgwNCwweDYxLDB4YzYsCi0gIDB4MzEsMHhjZSwweGU3LDB4ODksMHgzNiwweDdlLDB4ODQsMHhmYiwweGM3LDB4MTcsMHhjZiwweGRjLDB4MmYsMHhmZSwweDFiLDB4NGEsCi0gIDB4MTgsMHg2ZiwweGRjLDB4OTEsMHhjYSwweDdmLDB4MWUsMHhlMCwweDQ5LDB4YTYsMHgyZiwweDk5LDB4NDksMHg1ZSwweGEzLDB4M2MsCi0gIDB4MWEsMHhkOCwweGQ2LDB4NzgsMHg1NiwweDFiLDB4YTksMHhhZSwweDU0LDB4ZWYsMHg4OSwweDg5LDB4ZjcsMHhjMCwweGEwLDB4ZmUsCi0gIDB4NDgsMHhjZiwweDE0LDB4ZmUsMHhmMywweDA1LDB4ZGMsMHgyNCwweGRjLDB4NWIsMHhkMiwweGUwLDB4YzYsMHgzZiwweDJkLDB4ZWQsCi0gIDB4Y2IsMHg4YSwweDhiLDB4OGYsMHhlOCwweDU3LDB4YTUsMHgyYSwweGMzLDB4MWUsMHg2YSwweDc0LDB4YzEsMHg4YiwweDZjLDB4MjEsCi0gIDB4NjcsMHgwNCwweDU5LDB4ZjAsMHgwZiwweGEwLDB4M2UsMHg2MiwweDRlLDB4MjMsMHgxMCwweDEzLDB4NDMsMHhjYSwweDYwLDB4YmIsCi0gIDB4MzMsMHhkMiwweGIyLDB4NmQsMHhhNSwweDRhLDB4YmIsMHhlMywweDI1LDB4NTAsMHhhNywweDkzLDB4NGUsMHhhNSwweDk5LDB4YTgsCi0gIDB4OWEsMHg2YiwweDliLDB4YTgsMHgyNywweGYxLDB4OGYsMHgzMCwweDA3LDB4MjIsMHgyYSwweGNmLDB4MmUsMHgyMSwweDlkLDB4ZDIsCi0gIDB4NjEsMHg0ZSwweDhjLDB4ZDksMHhiNiwweDRlLDB4ODUsMHhjNywweGQ5LDB4MDMsMHg4NiwweDI5LDB4YzEsMHgyMiwweDBhLDB4MDIsCi0gIDB4YTEsMHhjZSwweGIwLDB4MTUsMHhmZiwweDE0LDB4YjIsMHgwOCwweDg0LDB4MzgsMHhkYiwweGE3LDB4MGYsMHg3NCwweGZjLDB4NGYsCi0gIDB4ODYsMHhiYiwweDAwLDB4NjIsMHhkYSwweDZhLDB4NGUsMHg4MywweDY5LDB4NGEsMHg2MywweDFhLDB4Y2UsMHg1NywweDJkLDB4ZjIsCi0gIDB4MDcsMHgzMiwweDU3LDB4YjEsMHgzZSwweDhkLDB4ZDMsMHg5NiwweGU0LDB4MGUsMHgxZSwweDdmLDB4ZDcsMHhlZSwweDYxLDB4MzksCi0gIDB4NmEsMHhlZSwweDg4LDB4NTYsMHhkMiwweDYzLDB4NjcsMHgwNSwweDJhLDB4MWMsMHhkMywweGNhLDB4NzgsMHg3YywweGMxLDB4OGEsCi0gIDB4N2YsMHhlMiwweGZlLDB4MzEsMHg5NywweGU5LDB4Y2QsMHhhOCwweDQ3LDB4YTgsMHg2OCwweDAyLDB4YTEsMHg2MSwweDljLDB4M2YsCi0gIDB4NGYsMHhlMCwweDAzLDB4ZTUsMHhiMiwweDgwLDB4MWEsMHhhZCwweDU3LDB4ZWMsMHhiNCwweGUwLDB4OWYsMHgzMSwweDM2LDB4MDYsCi0gIDB4ZjMsMHhlMywweDc3LDB4OWYsMHgyZiwweGY4LDB4NWIsMHg5ZSwweDA2LDB4YzUsMHhkYywweGMzLDB4NWYsMHhhOCwweDg0LDB4MTMsCi0gIDB4MGQsMHgxNSwweDcxLDB4YzcsMHhlYiwweDM5LDB4MGIsMHgyMiwweDk3LDB4ZDUsMHgyYSwweGRjLDB4M2YsMHg1ZiwweGI3LDB4ZTIsCi0gIDB4OWYsMHhiNywweDExLDB4MjQsMHgzYiwweGUzLDB4ODEsMHg2NywweDQ5LDB4MTEsMHg2YywweDNhLDB4NWEsMHgxMiwweDhkLDB4N2MsCi0gIDB4ZDYsMHg3ZSwweDkzLDB4ZDYsMHg1MiwweDU0LDB4MTIsMHg5NywweGI3LDB4MTIsMHhiNywweDcxLDB4ZDAsMHhjMCwweDQxLDB4YWEsCi0gIDB4ZmYsMHhlNywweDE1LDB4OGUsMHg4NywweGI5LDB4ZjUsMHhkZCwweDg5LDB4ODYsMHg3ZiwweDQ5LDB4MTMsMHhmNSwweGZhLDB4NGQsCi0gIDB4M2UsMHg1OCwweDRmLDB4OGIsMHgyNywweDViLDB4NTIsMHhmNywweDJhLDB4MjYsMHhkMSwweGM1LDB4ODIsMHg3ZiwweGE2LDB4ZWYsCi0gIDB4ODYsMHg4MywweDUyLDB4N2IsMHg5YywweGYyLDB4NjgsMHg2MywweDBiLDB4OTQsMHgzNCwweDQ1LDB4NjIsMHg0ZSwweDNiLDB4MWYsCi0gIDB4ZjQsMHhkYywweGQ4LDB4ODksMHhmZiwweGUyLDB4YTEsMHg0NCwweDZhLDB4YmMsMHg5NSwweGZmLDB4M2MsMHhjNCwweDYxLDB4Y2YsCi0gIDB4NDMsMHg3NywweGM3LDB4ZTQsMHgwOCwweDI3LDB4ODYsMHg2NSwweGRiLDB4M2QsMHgzOSwweDljLDB4ZmYsMHhmYywweDAzLDB4NjMsCi0gIDB4ZDksMHgyMSwweDcxLDB4MWUsMHhiZCwweGE0LDB4ZjMsMHg3YywweGMwLDB4NjksMHg1NiwweGZjLDB4ZjMsMHgxYywweDVjLDB4ZWQsCi0gIDB4ZTAsMHgyNCwweGRlLDB4ZjksMHhkZCwweDBjLDB4ZjUsMHhiYiwweDJhLDB4OWEsMHg2ZSwweDFmLDB4ZGMsMHg4MSwweDM3LDB4YzcsCi0gIDB4NjUsMHg5ZSwweDVmLDB4NjAsMHgyZSwweDlkLDB4MTUsMHhmZiwweGVjLDB4ODYsMHhkZiwweDQzLDB4ODUsMHhkZiwweGJlLDB4NTcsCi0gIDB4NzQsMHg2OSwweDI3LDB4MzgsMHhjZCwweDIzLDB4MjYsMHgwZSwweDg1LDB4Y2QsMHhmOCwweDIzLDB4NDcsMHg0NCwweDI3LDB4ODgsCi0gIDB4OTksMHg4OCwweDY3LDB4ZjUsMHhmZiwweDJjLDB4MGUsMHhiNCwweDA0LDB4OWQsMHhmZCwweGFlLDB4MGIsMHhjMiwweDc3LDB4YjQsCi0gIDB4ZGYsMHgyMSwweDg2LDB4OTYsMHgzZiwweDc5LDB4ZWQsMHgyYSwweDZiLDB4ODEsMHgwNywweDBjLDB4NTksMHhjZiwweGU2LDB4ZjUsCi0gIDB4MzcsMHhjYywweDhjLDB4YjYsMHgxNCwweGZlLDB4YjMsMHg1ZiwweDU3LDB4ZWEsMHgwYywweGJhLDB4Y2YsMHg2ZiwweGUzLDB4Y2IsCi0gIDB4YTIsMHhjOSwweDk1LDB4NzgsMHg1ZSwweDFhLDB4ODksMHg4YiwweGYzLDB4ZTcsMHg3YiwweDcxLDB4M2IsMHg5YSwweDhhLDB4M2IsCi0gIDB4YzUsMHhmZiwweDkzLDB4ZjEsMHg2OCwweDUzLDB4YzEsMHgwMCwweDVkLDB4ZTMsMHhmZiwweDAxLDB4YTcsMHhmZCwweDdjLDB4NDMsCi0gIDB4ZmUsMHgzZSwweDc5LDB4MDcsMHhkNiwweDM3LDB4MTUsMHg5ZiwweDk1LDB4NzksMHgyMCwweDZjLDB4MmQsMHhjZiwweDkwLDB4ZmEsCi0gIDB4YzEsMHgxNCwweGZlLDB4NzMsMHg1YywweDJkLDB4MzcsMHhlYywweDFlLDB4OTEsMHg0NiwweDVmLDB4NjgsMHhhYSwweDU0LDB4MWQsCi0gIDB4MWUsMHhmMSwweGE0LDB4ZjAsMHgwMiwweGFiLDB4MWMsMHg5YSwweGE2LDB4OGEsMHhiNSwweGU0LDB4MjgsMHhjNCwweDBjLDB4NDcsCi0gIDB4NDUsMHgwYSwweGZmLDB4ZjksMHhlNywweGRhLDB4YjMsMHg3YywweDExLDB4M2UsMHg2OSwweDFjLDB4ZTQsMHhkZSwweDMwLDB4NjksCi0gIDB4ZDksMHhiMCwweDc4LDB4MTksMHhhZSwweDJhLDB4NzgsMHg4NSwweGYzLDB4NWQsMHhjNywweGY4LDB4ZTAsMHgxMywweGIxLDB4N2YsCi0gIDB4ZDIsMHhmZSwweGVhLDB4NGMsMHhmYiwweDEwLDB4NGUsMHhhYywweDJhLDB4ZTcsMHhkOSwweGVlLDB4N2QsMHhkMiwweDg5LDB4ZTgsCi0gIDB4MjEsMHhlNiwweGRlLDB4OWIsMHg1MywweDZjLDB4ZjAsMHhmNSwweGQ5LDB4YTQsMHhkNywweDdjLDB4ODAsMHgxYSwweGQzLDB4Y2MsCi0gIDB4YzcsMHhiNCwweGUyLDB4OWYsMHg1ZiwweGMyLDB4YTMsMHg0YSwweGJlLDB4ZjEsMHhlOCwweDQzLDB4ZjgsMHg5MCwweGViLDB4OTUsCi0gIDB4MDIsMHg0NiwweDFmLDB4MjQsMHgzMywweGQ5LDB4NmYsMHhkMCwweDdlLDB4OTQsMHgzNSwweGJjLDB4ZDIsMHg5NCwweGM4LDB4MjcsCi0gIDB4YjUsMHhlMiwweDFmLDB4OWUsMHhlZCwweDNlLDB4OTcsMHg0NywweGJiLDB4MmUsMHg0MiwweDIzLDB4Y2IsMHg3ZiwweDM3LDB4ODMsCi0gIDB4YTcsMHhhNSwweDk4LDB4N2MsMHhlZiwweGJhLDB4ZjAsMHg1MSwweDc1LDB4OWQsMHg0OSwweGZjLDB4NGUsMHhjMSwweDNmLDB4NDMsCi0gIDB4ZDAsMHhhOCwweGU5LDB4N2EsMHg0NiwweGNjLDB4ZDksMHhjNywweGMzLDB4NWUsMHhmMSwweDBjLDB4NGYsMHg5MSwweDNiLDB4NmIsCi0gIDB4YWIsMHg4NCwweGRiLDB4MmMsMHg5ZCwweGY0LDB4MDAsMHgzMywweGNjLDB4ZmQsMHg2NiwweGM1LDB4M2YsMHg5ZCwweGU0LDB4OTQsCi0gIDB4YjEsMHg2OCwweGViLDB4NTIsMHgzZCwweGZiLDB4NGMsMHhlOCwweDM4LDB4MmMsMHhkYSwweDc3LDB4YTcsMHg4ZSwweGIwLDB4ZjYsCi0gIDB4MzgsMHgxNywweDJjLDB4ODMsMHhlMiwweDQ1LDB4MzgsMHhhNSwweDliLDB4MTksMHgyOCwweDI5LDB4ZjgsMHg0NywweDE5LDB4NTksCi0gIDB4Y2UsMHg0OSwweDNlLDB4MDUsMHg2NywweDRkLDB4YjcsMHg0ZiwweDk2LDB4NjQsMHgxMiwweDgxLDB4N2MsMHg4MiwweDgzLDB4ZDUsCi0gIDB4YzQsMHhlNywweDhjLDB4ZDAsMHg2YiwweGYyLDB4YmYsMHgwNiwweGM2LDB4OTMsMHg4MCwweDcyLDB4MGEsMHg5NSwweDNiLDB4ODEsCi0gIDB4YTcsMHhiZCwweDhiLDB4ZGMsMHg5ZiwweDYzLDB4YWEsMHhjNSwweGYxLDB4N2MsMHhhOCwweGQ0LDB4ZmMsMHhhZiwweDU1LDB4YzQsCi0gIDB4MjQsMHhlMSwweDQ0LDB4YzksMHgxYywweGI2LDB4NGIsMHgyYSwweGQxLDB4MzYsMHhmYywweDk4LDB4ZTcsMHg3ZiwweGExLDB4ZDksCi0gIDB4MmIsMHg0NywweGM3LDB4ODksMHgzZCwweDI5LDB4ZjUsMHg3ZiwweDc4LDB4ZmMsMHhhYiwweDk5LDB4YjUsMHg2YiwweGI2LDB4Y2QsCi0gIDB4ZmUsMHg0MiwweGM2LDB4ODEsMHg1MCwweDI0LDB4ZWEsMHgyYywweGQ0LDB4NzcsMHgyNCwweGYyLDB4YjUsMHg4NywweDI2LDB4ZTYsCi0gIDB4YTcsMHhmYSwweDdmLDB4MWEsMHgzNCwweDY3LDB4YzgsMHg4NiwweGIwLDB4NDcsMHhkYSwweDQxLDB4ZGMsMHhjMSwweDFiLDB4NzgsCi0gIDB4ZmMsMHg2YiwweDQ3LDB4YjUsMHg5OSwweDA4LDB4OWYsMHgyMCwweGM2LDB4MjAsMHg2MiwweGI0LDB4ZTYsMHg3ZiwweGFkLDB4YzAsCi0gIDB4ZDUsMHhmMCwweGMyLDB4M2QsMHhjYywweGE2LDB4OWEsMHhkNSwweDhkLDB4NzgsMHhmYywweDhiLDB4MGMsMHg5YSwweDZhLDB4NzcsCi0gIDB4M2EsMHgyNywweDAyLDB4OTksMHhlZiwweDZiLDB4Y2QsMHhmZiwweDdhLDB4YWYsMHhlOSwweGIyLDB4NTYsMHhhNSwweGZkLDB4YmMsCi0gIDB4NmQsMHg5YywweGZmLDB4M2MsMHhhZiwweDRkLDB4N2MsMHg4ZiwweDY3LDB4YjgsMHg3MywweDIwLDB4ZjQsMHgxOSwweGJkLDB4YWMsCi0gIDB4MjUsMHgxOCwweDJmLDB4NTYsMHhmYywweDYzLDB4ZmMsMHg1NiwweDJiLDB4ZTUsMHhiZiwweGJkLDB4YzAsMHg4OSwweGM0LDB4MDEsCi0gIDB4ZmIsMHhlYiwweGUyLDB4MDIsMHhmNiwweDdlLDB4NjIsMHg3ZCwweDBhLDB4YjUsMHg2MywweDJlLDB4NzMsMHg3ZSwweDhhLDB4ZmYsCi0gIDB4YzcsMHg4OCwweDY4LDB4NGUsMHg2OCwweDY5LDB4Y2EsMHg4ZSwweDkzLDB4MDgsMHg5NCwweGRjLDB4NzAsMHg1NywweDE4LDB4MzUsCi0gIDB4NTIsMHhhNywweGRhLDB4MGUsMHg3MiwweDE4LDB4MzcsMHg3MSwweDQ0LDB4MzMsMHgxOSwweDQxLDB4YTksMHhmOCwweDY3LDB4NzMsCi0gIDB4MDgsMHg4ZCwweGFjLDB4ZWIsMHhmOCwweDY5LDB4ZDIsMHhkYywweGI1LDB4MTksMHhkNywweGUxLDB4ZmIsMHhlZSwweGEyLDB4YWEsCi0gIDB4YjYsMHg2NCwweGU2LDB4ZDEsMHhiNCwweDg2LDB4ODYsMHg4OSwweGY3LDB4YjUsMHhmMiwweDdmLDB4OWEsMHg1MSwweDllLDB4ZTMsCi0gIDB4YTIsMHg3ZCwweDk4LDB4ZGUsMHg5YywweDU2LDB4MTIsMHg5NCwweGI5LDB4ZmYsMHg2NywweDE3LDB4YWMsMHgzNCwweDg5LDB4ZTgsCi0gIDB4MjIsMHhjZiwweGJmLDB4YmIsMHgzMSwweDNhLDB4YzUsMHhmZiwweGYzLDB4MDYsMHg3OCwweGI5LDB4MWIsMHhlNywweDY1LDB4N2YsCi0gIDB4MzMsMHhmOCwweDgyLDB4OTksMHhmYywweGZiLDB4OWUsMHhjNSwweGU3LDB4ZGYsMHhiNCwweDRkLDB4MmMsMHgzNCwweDhlLDB4MTksCi0gIDB4ZmMsMHhmOSwweDBiLDB4NTIsMHhmMCwweDhmLDB4M2EsMHgxYSwweDQ5LDB4MmMsMHg4MiwweGNhLDB4NjEsMHg4ZiwweGM5LDB4MDcsCi0gIDB4N2IsMHg4MywweGYzLDB4YzEsMHhiMiwweGU1LDB4NzMsMHgzMCwweDZhLDB4ZTIsMHg5ZiwweDY5LDB4NTYsMHhmYywweGMzLDB4YTAsCi0gIDB4NGYsMHhmMSwweDY1LDB4M2IsMHg1OCwweGEzLDB4MmEsMHhkNSwweDI1LDB4YTIsMHhhYiwweDgwLDB4YWEsMHhhMywweDhjLDB4MmYsCi0gIDB4N2IsMHgzZSwweGY0LDB4NjksMHhlNiwweGZhLDB4YTcsMHhmMCwweDlmLDB4NjEsMHgyMywweGNjLDB4OGIsMHhjYSwweDgzLDB4YTQsCi0gIDB4YmMsMHhmMCwweDIyLDB4OTQsMHgzNCwweGM4LDB4NzEsMHg1YiwweGI5LDB4OTksMHgxMSwweDI2LDB4MjcsMHhmMiwweGJmLDB4NzgsCi0gIDB4ZmQsMHg5NiwweDk1LDB4NTYsMHhmZiwweGNmLDB4ZWQsMHhkMCwweDYyLDB4YWMsMHg4ZSwweGNhLDB4ZTUsMHg0NCwweDM2LDB4ZjMsCi0gIDB4OTEsMHg3OSwweGJlLDB4MmQsMHgyNCwweDEyLDB4MjcsMHhjOSwweDZlLDB4YWUsMHhjMSwweGY5LDB4YzAsMHhlYSwweGZmLDB4YTEsCi0gIDB4YmMsMHg0OCwweDRlLDB4M2YsMHg4YSwweGE5LDB4ZmIsMHgzOSwweGVkLDB4YTcsMHg0ZiwweDA2LDB4YTIsMHgyOCwweGViLDB4M2QsCi0gIDB4YjMsMHgwZCwweGI5LDB4OTQsMHhmMCwweDU0LDB4NzEsMHg3ZSwweDdlLDB4OWQsMHhhOSwweGZlLDB4MWYsMHhjZSwweDc2LDB4NzYsCi0gIDB4ZjAsMHhiNCwweGY3LDB4M2YsMHhiMCwweGM1LDB4NjcsMHgxZCwweDc1LDB4YTIsMHgwZiwweDVlLDB4OGQsMHhkZCwweGNhLDB4YWYsCi0gIDB4M2MsMHgxMSwweGZlLDB4NGQsMHhlMiwweDU3LDB4NTYsMHhmZSwweDczLDB4YTcsMHgzNCwweDlhLDB4ZTYsMHg0MywweDI1LDB4M2UsCi0gIDB4Y2IsMHg5ZSwweDQ4LDB4N2IsMHg4ZiwweDhhLDB4NzEsMHg3YSwweDQ5LDB4ZTUsMHg2NiwweGJlLDB4ZmMsMHhhMSwweDQ5LDB4NzQsCi0gIDB4NDksMHhlNSwweDNmLDB4YTcsMHg3ZCwweGFlLDB4MWQsMHg4YiwweGNlLDB4MWYsMHhiMCwweDhmLDB4MjIsMHhlYywweDM5LDB4YzEsCi0gIDB4YmMsMHhlZiwweDNhLDB4NzgsMHhkOSwweDlmLDB4NTcsMHhjMywweGJlLDB4ZjgsMHhhNiwweDUxLDB4ZjEsMHhhYSwweDdhLDB4MzUsCi0gIDB4OTEsMHhmZiwweDZlLDB4ZTQsMHg1YSwweGY4LDB4M2YsMHhkMCwweGI0LDB4MjMsMHhiZiwweDM3LDB4ZjMsMHhlYiwweGUyLDB4MTMsCi0gIDB4ZmEsMHhjZSwweGQ4LDB4ZGMsMHgwMSwweDE0LDB4M2IsMHhmZCwweGRhLDB4N2EsMHhiNSwweDc4LDB4MTAsMHhjNSwweDA4LDB4MDcsCi0gIDB4MzYsMHg4YiwweGI5LDB4ZmMsMHhiMSwweGZhLDB4N2YsMHg3MiwweDYxLDB4MmQsMHgyOSwweDMwLDB4ZWUsMHhhYywweDI3LDB4Y2YsCi0gIDB4MzUsMHgzNSwweDBhLDB4ZjksMHgwNiwweGVlLDB4MzYsMHg5ZSwweGFmLDB4ZjEsMHg5ZCwweDNlLDB4ZjksMHhiYiwweGU0LDB4NmQsCi0gIDB4ZWQsMHg0MCwweDQyLDB4NWUsMHhhNSwweGZhLDB4N2YsMHgxYSwweDdhLDB4ZjQsMHg1ZiwweDY1LDB4MDAsMHhkOSwweGM0LDB4NzYsCi0gIDB4NDIsMHg5ZCwweDgxLDB4YmIsMHhjYiwweDgwLDB4NDYsMHhjOSwweDVjLDB4YzYsMHg5MywweDJiLDB4ZjYsMHg2YSwweDA5LDB4NjIsCi0gIDB4YTcsMHhkNSwweGZmLDB4OTMsMHg3ZSwweDIyLDB4ZDIsMHg1NSwweDhmLDB4ZjYsMHhlMywweDQ2LDB4MzgsMHg4MSwweDQwLDB4YzUsCi0gIDB4YzEsMHhmOSwweDRlLDB4YWYsMHgwMiwweGFlLDB4YzAsMHgxNSwweGYxLDB4YWEsMHg0OSwweGY0LDB4NzUsMHhjNCwweDZhLDB4OTIsCi0gIDB4ZmIsMHg4MSwweDY5LDB4MDgsMHgwMiwweGQ1LDB4MjMsMHhmNSwweGE4LDB4N2QsMHg3NiwweGMzLDB4MjUsMHgwOSwweGE3LDB4NzUsCi0gIDB4OTgsMHg3YywweDU0LDB4OWYsMHg3MSwweDczLDB4MTcsMHgyNywweDRhLDB4MjksMHhkNywweGU0LDB4N2YsMHg4ZCwweGExLDB4ZGEsCi0gIDB4YWEsMHhmMiwweDM3LDB4MGQsMHhjYiwweDhiLDB4NzksMHhmNiwweGFlLDB4ZTEsMHhiOCwweDRiLDB4YmMsMHg5NywweDI1LDB4ZjgsCi0gIDB4M2YsMHgwNSwweDYzLDB4ZjAsMHgyNywweDdiLDB4ODIsMHhmZiwweGFjLDB4MjUsMHhlMywweDVmLDB4NzUsMHhkMCwweGMyLDB4MGEsCi0gIDB4ZWIsMHhlOSwweDNlLDB4ZTcsMHg2YywweGM1LDB4YTQsMHhmMSwweGVjLDB4MjYsMHgzYSwweDFiLDB4ZTcsMHhmZiwweDBjLDB4OTksCi0gIDB4OGMsMHhlOCwweDI5LDB4ZjksMHhlZiwweDc2LDB4OTQsMHgzZiwweDI1LDB4ZjEsMHgxYiwweDNjLDB4ZTEsMHhkNSwweDI2LDB4ZWQsCi0gIDB4ZTcsMHhhNywweGVjLDB4OTksMHhkNSwweGNhLDB4MzUsMHhmMywweGFkLDB4ZmMsMHhlNywweDMwLDB4NTMsMHgwYiwweDhkLDB4MWIsCi0gIDB4M2MsMHhjNCwweGNlLDB4MWEsMHgxNSwweDNiLDB4Y2YsMHhjNiwweDZkLDB4OTUsMHg1MCwweGYxLDB4MWQsMHhiZCwweGQxLDB4OWIsCi0gIDB4OWQsMHgyOCwweGQ0LDB4MjYsMHg3YiwweGIyLDB4MmQsMHhmZSwweDFmLDB4ZmIsMHhkMiwweDBlLDB4MTQsMHgwYiwweDNkLDB4MWIsCi0gIDB4NjMsMHhmMiwweDZhLDB4ZTcsMHgwOSwweGQ1LDB4ZDcsMHg4YiwweGViLDB4MTMsMHg4MiwweDU3LDB4ODMsMHhiZSwweDMzLDB4OGUsCi0gIDB4MmUsMHg5MywweDk4LDB4ZTEsMHhlNSwweDhhLDB4ZDgsMHg4MiwweDdmLDB4ZWUsMHhkZSwweDBkLDB4OTcsMHg5NSwweDg1LDB4NDYsCi0gIDB4NWEsMHhiZiwweDc4LDB4MTIsMHhhZSwweDg2LDB4YWEsMHg3YSwweDFkLDB4NzEsMHhkMSwweDI0LDB4NDIsMHgxZiwweGNmLDB4ZGMsCi0gIDB4NTMsMHhjMCwweDEzLDB4YmQsMHhmMSwweGM1LDB4Y2YsMHgzNywweDVhLDB4ZmMsMHgzZiwweDMzLDB4YWUsMHhjMCwweGRiLDB4NmIsCi0gIDB4YWIsMHg1NiwweGVkLDB4M2UsMHgyYSwweDY2LDB4NzMsMHgzNiwweDE0LDB4YzcsMHg0YiwweDlmLDB4YzAsMHgyNSwweGI2LDB4ODcsCi0gIDB4ZGEsMHg1ZiwweDEwLDB4YWIsMHhhMCwweDU1LDB4OWQsMHgxZiwweDdmLDB4MzQsMHgzNSwweGZlLDB4ZjUsMHgxMSwweDFjLDB4MGMsCi0gIDB4YTMsMHg3ZCwweGRhLDB4OTQsMHhhZCwweGIyLDB4MTYsMHhhMywweDdkLDB4YmEsMHhkOCwweDRhLDB4ZjIsMHhlZCwweDk3LDB4YjgsCi0gIDB4MDcsMHgyYywweDRjLDB4MjgsMHhmYiwweDk5LDB4ZTEsMHhlYywweGNiLDB4OWMsMHgxMiwweGZmLDB4ODIsMHgyOCwweGFjLDB4ZDYsCi0gIDB4NjgsMHg3YSwweDU4LDB4NTUsMHhmNywweDZhLDB4YWUsMHgxYiwweDY0LDB4ODksMHhmNCwweGIwLDB4YzMsMHg4MiwweGFhLDB4NTAsCi0gIDB4YzEsMHhlZiwweGMyLDB4Y2YsMHg1OSwweDc3LDB4NzQsMHhlZSwweGQ0LDB4ZjgsMHhkNywweDQxLDB4NWUsMHhlZCwweDQ0LDB4ZDAsCi0gIDB4NTYsMHhiMCwweDlmLDB4ODEsMHg1MywweDk3LDB4M2IsMHhjOSwweDFjLDB4YmUsMHg4YywweDcxLDB4NzUsMHgxYiwweDllLDB4ZGYsCi0gIDB4NWQsMHg2OCwweGQ4LDB4NjYsMHg0YywweDg5LDB4N2YsMHhjMSwweDFiLDB4MDEsMHg1ZiwweDlkLDB4YmQsMHhiNSwweDcxLDB4MGUsCi0gIDB4OGYsMHgwZSwweGJiLDB4MWMsMHgzMywweGU1LDB4M2YsMHhjMCwweGE3LDB4YTIsMHgzNywweGQ0LDB4YmEsMHg1ZCwweGI0LDB4YzMsCi0gIDB4YjEsMHhlYSwweDcyLDB4YTMsMHgzOCwweDI2LDB4YTYsMHhlMiwweDlmLDB4Y2IsMHhkMSwweDJhLDB4OTAsMHhjZiwweDg4LDB4ZmIsCi0gIDB4ZTEsMHg2NSwweDJlLDB4OTYsMHhmOSwweDdlLDB4ZmIsMHg5OCwweGZlLDB4YjMsMHgzNiwweDJmLDB4OGEsMHhhZiwweGY5LDB4NWQsCi0gIDB4NTgsMHgzOCwweDA1LDB4ZmYsMHhjMCwweDZlLDB4ZWUsMHhkZiwweDBlLDB4YTIsMHg5MSwweGRiLDB4YzEsMHhkZSwweDAyLDB4ZGYsCi0gIDB4NzIsMHg3YiwweGQzLDB4Y2YsMHhkNCwweDZhLDB4ZDQsMHhlZiwweDRhLDB4ZDYsMHg5MywweGRjLDB4ZmYsMHg0MywweDJhLDB4NzgsCi0gIDB4YTAsMHhjZCwweDhhLDB4N2YsMHhkYywweDcwLDB4NWIsMHhhZiwweDkzLDB4ZDMsMHhiNiwweDVmLDB4NTYsMHgzNywweDcxLDB4NDMsCi0gIDB4N2UsMHgyMywweGI5LDB4ZTUsMHhmNiwweGI3LDB4NTAsMHg5MSwweGQxLDB4MWYsMHgyMSwweDdlLDB4N2IsMHgwMywweGM4LDB4NGIsCi0gIDB4OTksMHgyOSwweGY4LDB4NjcsMHhjNiwweDUyLDB4ZDgsMHhjMywweGU2LDB4NjgsMHg1NCwweGY1LDB4ZjcsMHhhMCwweGQ4LDB4NTksCi0gIDB4M2QsMHg3YywweDk3LDB4OWEsMHg0ZCwweDUxLDB4ODMsMHhhZiwweGQyLDB4YjksMHg0NywweGM4LDB4NjAsMHhlMCwweDFlLDB4YjYsCi0gIDB4NGQsMHhjMSwweDNmLDB4ZjAsMHg0YiwweGUzLDB4OTYsMHg1NSwweGFlLDB4NmYsMHg5MSwweGYzLDB4NjQsMHg3ZCwweDQzLDB4NzEsCi0gIDB4M2IsMHhmZCwweDNlLDB4YjksMHg0ZSwweDViLDB4MWYsMHgyYiwweDVlLDB4NjUsMHg1YiwweDNlLDB4ZTcsMHgwNiwweGU1LDB4YzcsCi0gIDB4M2QsMHhiMywweGUzLDB4MTksMHg1MywweGYzLDB4YmYsMHgzZSwweGM5LDB4ZGIsMHg3NywweDNiLDB4NTUsMHg0NCwweDgzLDB4YmQsCi0gIDB4NTAsMHg1OCwweDA5LDB4NDUsMHhiOSwweDIyLDB4ZjgsMHgxYiwweGEzLDB4MGIsMHhiNiwweDZjLDB4NTQsMHg0NSwweDRhLDB4MGMsCi0gIDB4YTUsMHhiMiwweDZmLDB4NGEsMHhmZSwweGQ3LDB4NzMsMHhmMCwweDA5LDB4ZGMsMHg1NiwweDNiLDB4OGQsMHg4NywweDRkLDB4M2YsCi0gIDB4MDYsMHhiMywweDEwLDB4ZTIsMHgwNSwweDMzLDB4M2UsMHhmOCwweGNhLDB4YWYsMHg3OCwweDQ0LDB4NTUsMHg1YSwweDY0LDB4YTQsCi0gIDB4YzYsMHhiZiwweGQyLDB4NzgsMHg1MSwweDBlLDB4NWYsMHhjOCwweGFlLDB4Y2IsMHg1OSwweGZjLDB4ZmMsMHg3MiwweGZlLDB4NmEsCi0gIDB4MzksMHgxZiwweDQwLDB4YTYsMHgyMSwweDBlLDB4MjksMHgyMywweGM0LDB4YzcsMHgxMywweDM5LDB4NTMsMHhmZCwweDNmLDB4NWMsCi0gIDB4NjgsMHhiOCwweDNjLDB4NjIsMHgyZSwweGFjLDB4MzcsMHg3OCwweGY0LDB4NDEsMHg3YywweDk4LDB4YWMsMHgxNywweGU2LDB4ZjIsCi0gIDB4NDQsMHhlMywweDdlLDB4ZDgsMHhhZiwweDE3LDB4ZjMsMHg1MiwweDFiLDB4NTYsMHhmYywweGYzLDB4MDQsMHgxYywweDY4LDB4ZmEsCi0gIDB4ODcsMHg5MCwweGVkLDB4NjEsMHhiZiwweDhmLDB4ZTMsMHg5ZiwweDkwLDB4N2MsMHhiZiwweDJkLDB4OWIsMHg2NywweDg0LDB4YTksCi0gIDB4Y2QsMHg3NSwweGUxLDB4MzcsMHg2MSwweDVmLDB4YWMsMHg5OCwweGJmLDB4NmYsMHg4YSwweGZmLDB4MDcsMHhmNiwweGY2LDB4YWYsCi0gIDB4ZWUsMHhiMSwweDNkLDB4ZTcsMHhiNywweDM1LDB4YTAsMHgxOCwweDBmLDB4Y2EsMHgzMywweDZkLDB4N2YsMHhhZiwweGUxLDB4ZjksCi0gIDB4ZmEsMHgxZSwweDdkLDB4ODIsMHgxYywweGQ3LDB4NjIsMHgzYywweDkxLDB4NzAsMHgwYSwweGZlLDB4ODEsMHhjZiwweGI1LDB4YWEsCi0gIDB4ZjYsMHhhYywweDAxLDB4YjEsMHg5YywweDA3LDB4Y2EsMHhkYSwweDUxLDB4M2UsMHg5NywweGMzLDB4NmIsMHg2OCwweGQ4LDB4NjUsCi0gIDB4MGUsMHg4YSwweDIzLDB4Y2EsMHgxNSwweGNkLDB4YWMsMHgyNywweDM2LDB4YzUsMHhmZiwweDEzLDB4Y2EsMHhhMiwweDk5LDB4ZTEsCi0gIDB4MDIsMHhiMywweDMwLDB4NGIsMHhiNiwweDIzLDB4MmMsMHg5ZSwweDY1LDB4MjMsMHg2MiwweDQ1LDB4OWUsMHhjMywweDY0LDB4NDQsCi0gIDB4ODcsMHhmZSwweDBjLDB4ZmUsMHgxOSwweDJmLDB4ZmIsMHg1MywweDg4LDB4MGIsMHg2YiwweDBlLDB4NjYsMHg0YiwweGM3LDB4YjQsCi0gIDB4OGEsMHg2MCwweGQ2LDB4YjYsMHg4MiwweDQyLDB4ZWUsMHhmZiwweGQxLDB4NGEsMHhhNiwweGUwLDB4MWYsMHgzOCwweGE4LDB4M2IsCi0gIDB4YjUsMHg5NiwweGU4LDB4NWQsMHg4NSwweGY0LDB4MjAsMHg3MSwweGQ2LDB4NzIsMHhiNSwweDFiLDB4NmUsMHg2NiwweDZhLDB4OTAsCi0gIDB4ZjMsMHg3ZiwweDQyLDB4OTcsMHgxMywweGZlLDB4OWMsMHg1NCwweGZjLDB4NzMsMHg1MCwweDc1LDB4NmEsMHg0YiwweGI4LDB4YjUsCi0gIDB4NzUsMHgxMCwweDdmLDB4OWIsMHgxMSwweDQ1LDB4ZDAsMHg2ZCwweGYyLDB4NTUsMHhmNiwweDEwLDB4ODksMHgwZiwweDQyLDB4YjYsCi0gIDB4ZTgsMHhkNCwweGZhLDB4M2YsMHg3YywweDU5LDB4NzIsMHhmZCwweDY5LDB4YjAsMHg0NywweGMwLDB4ODEsMHg5MiwweGNkLDB4ZjksCi0gIDB4M2YsMHgyMSwweDhkLDB4ZTYsMHg3YSwweGQzLDB4NzgsMHgwNSwweGFhLDB4MjAsMHg0ZCwweGM1LDB4M2YsMHhhMSwweGYxLDB4YjIsCi0gIDB4M2YsMHgwNSwweGJjLDB4ZmUsMHg0ZiwweDE3LDB4NmIsMHhlNiwweGY1LDB4N2YsMHhmYSwweGEwLDB4ODIsMHg2ZCwweGQ0LDB4YzcsCi0gIDB4MTMsMHhiMSwweDM3LDB4YTYsMHhlMiwweDlmLDB4MDEsMHhiOCwweDJjLDB4ZmMsMHgxMiwweGYxLDB4NGMsMHhjZSwweDE4LDB4ZTUsCi0gIDB4ZjgsMHg0NywweGJjLDB4MmYsMHhlNywweDMzLDB4ZjgsMHgwYywweDE2LDB4ZjcsMHgyZiwweDNiLDB4YWQsMHg1ZCwweDgwLDB4Y2IsCi0gIDB4ZDUsMHg5NSwweDUzLDB4ZjEsMHgwZiwweDBmLDB4OTMsMHg3OSwweGFhLDB4MWQsMHg2ZCwweGUyLDB4MDIsMHhmMiwweDhhLDB4YWIsCi0gIDB4MzQsMHg2OCwweGVmLDB4MTcsMHhmNywweGU5LDB4MmYsMHhlMiwweDQ2LDB4YjIsMHg5ZiwweDE2LDB4NjcsMHhjMywweGJmLDB4YzMsCi0gIDB4N2MsMHg5ZSwweDNmLDB4OTUsMHhlYSwweGZmLDB4ZTksMHhlNiwweGE0LDB4YjgsMHhiNSwweGQ5LDB4NDAsMHgzOSwweDEwLDB4YTIsCi0gIDB4NGYsMHhmYSwweGU3LDB4ZWEsMHgxMSwweDY4LDB4NTcsMHhlOCwweDNhLDB4NDIsMHhjZCwweGZhLDB4ODcsMHhhZSwweGE5LDB4ZjgsCi0gIDB4ZTcsMHgyMCwweGI4LDB4ZmMsMHg3MiwweGY2LDB4Y2EsMHg4MSwweGNlLDB4Y2QsMHhjMCwweGIzLDB4YmQsMHg0OCwweDEzLDB4NjcsCi0gIDB4NTgsMHgwNSwweDIzLDB4YjksMHhhNCwweDI5LDB4ZmEsMHg1MywweDcwLDB4NjksMHg1NCwweDQ5LDB4OGQsMHg3ZiwweDI5LDB4MDcsCi0gIDB4YTEsMHgyOCwweDI4LDB4YjcsMHg1NSwweDBjLDB4YzAsMHhlMywweDkyLDB4MzMsMHgxOCwweDg5LDB4NjYsMHgyNywweGVhLDB4ZmYsCi0gIDB4ZDAsMHgyZCwweGZjLDB4MGYsMHg5NSwweDIyLDB4OGQsMHg0ZSwweGM1LDB4M2YsMHg5ZiwweGIwLDB4MGEsMHhjZCwweGIxLDB4OGQsCi0gIDB4NzAsMHgxOCwweGQzLDB4NTUsMHg4ZiwweGY4LDB4YjYsMHgyMywweDgwLDB4OWYsMHhiNSwweDVlLDB4ZmEsMHhiMSwweGY4LDB4YTQsCi0gIDB4ZjYsMHgwNiwweDk0LDB4OWIsMHhmOSwweGVmLDB4NTYsMHhmYywweDAzLDB4YTMsMHg4NSwweGZiLDB4MzUsMHhjNywweGY1LDB4ZTIsCi0gIDB4OWMsMHhkMCwweDU5LDB4YTEsMHg3MiwweGQ1LDB4YmMsMHg5ZiwweDg4LDB4YmQsMHg2NCwweDU0LDB4YTgsMHgwYywweGNjLDB4Y2IsCi0gIDB4OTMsMHgxZiwweDgwLDB4ZDEsMHhkNiwweGZkLDB4ZmUsMHhhOSwweGZlLDB4MWYsMHhiZSwweGZlLDB4Y2EsMHg1MiwweDI2LDB4ZWYsCi0gIDB4MDAsMHhiMywweGVjLDB4MDAsMHhlMiwweDk3LDB4ZGEsMHgxMSwweGE1LDB4MmIsMHhkYiwweGRlLDB4OTQsMHg5MywweDRmLDB4YzYsCi0gIDB4ZjksMHhlNywweDI5LDB4ZjEsMHgyZiwweDM4LDB4YzIsMHhkOSwweDNlLDB4M2EsMHhiOSwweDAxLDB4OWUsMHg2MSwweDA1LDB4NTEsCi0gIDB4MWEsMHgwYSwweDJmLDB4ODIsMHgyMywweGIwLDB4MzAsMHg5YSwweDM5LDB4YjAsMHhlMSwweDBiLDB4ZWEsMHhlNywweDIwLDB4MzIsCi0gIDB4OTcsMHg5ZSwweDlhLDB4ZmYsMHgwNSwweDdiLDB4MDcsMHgxOCwweDllLDB4NDcsMHhiYSwweDA5LDB4YWQsMHhhZCwweGMyLDB4ODcsCi0gIDB4MzIsMHhjYSwweGQ3LDB4YWQsMHg1NSwweGY3LDB4MzAsMHhiNSwweGRmLDB4OTYsMHgxNywweDc2LDB4MzQsMHgzNSwweDZhLDB4YzAsCi0gIDB4YTgsMHhjNywweDk5LDB4MWEsMHhmZiwweGRhLDB4YWYsMHgxNSwweGYwLDB4ZmEsMHgzZiwweDc5LDB4ZWEsMHgwZSwweDNhLDB4M2IsCi0gIDB4NzgsMHgzZCwweDRmLDB4ODMsMHhkYSwweDA3LDB4ZGYsMHhlMCwweGMwLDB4NjAsMHhhNiwweGIyLDB4MWYsMHhmMiwweDhkLDB4YmEsCi0gIDB4YTksMHhmOSwweDVmLDB4OWMsMHhmZiwweGQzLDB4N2EsMHg5MSwweDNjLDB4ODEsMHhkNiwweGQ5LDB4YzIsMHhmOCwweDVjLDB4YjMsCi0gIDB4ZWMsMHg0ZiwweGMzLDB4ZmMsMHg3OCwweGM5LDB4OTksMHg4MiwweDFiLDB4YzgsMHg0YiwweDZjLDB4YjMsMHgzZSwweDM1LDB4ZmYsCi0gIDB4MGIsMHg4NiwweDM5LDB4ZmYsMHgyNywweGY2LDB4ZmIsMHg0MSwweDNjLDB4MzgsMHg4YiwweDc4LDB4NzYsMHhlYSwweDMwLDB4Y2YsCi0gIDB4MzcsMHhkMSwweDUwLDB4OWUsMHhiYywweGE3LDB4NWYsMHhlNCwweDEyLDB4M2IsMHgwNSwweGZmLDB4NjQsMHg1ZSwweDgxLDB4ZTcsCi0gIDB4ZjUsMHhhYSwweDc3LDB4ZWQsMHgxNywweDFiLDB4M2YsMHhhNywweGJmLDB4NjMsMHhhNSwweGFiLDB4ZWMsMHgyMywweDM3LDB4OTYsCi0gIDB4ZDEsMHg1NywweGQ5LDB4N2MsMHhkZCwweGNkLDB4MDMsMHg2MSwweGM2LDB4ZTYsMHg1MiwweGRkLDB4M2QsMHg2MiwweDhkLDB4N2YsCi0gIDB4MDksMHhkYiwweDYxLDB4YmYsMHgzMSwweDhmLDB4NDcsMHhkYiwweGM3LDB4ZDgsMHg2ZiwweDYwLDB4ZTcsMHgzZCwweDY4LDB4N2YsCi0gIDB4NGQsMHg1NywweGQzLDB4NjEsMHgyZSwweGIzLDB4YWQsMHgyMCwweDMzLDB4YjUsMHgyNiwweGI2LDB4MjMsMHg2MiwweDRiLDB4YzUsCi0gIDB4M2YsMHgyOCwweGFmLDB4NjgsMHgzMSwweDY3LDB4MDcsMHg5ZCwweDU2LDB4ZDYsMHhjMywweDZjLDB4YWQsMHg5YywweGQzLDB4N2UsCi0gIDB4NzAsMHhkMCwweDhiLDB4ZjIsMHhhYSwweDFlLDB4NWEsMHgzZCwweGIzLDB4MWIsMHhlOCwweDE0LDB4ZmMsMHgyMywweDc1LDB4NTUsCi0gIDB4YmIsMHg4ZCwweGYyLDB4MDUsMHg0NywweDRmLDB4YTksMHg1YiwweDYxLDB4NGUsMHgzNCwweGFmLDB4OGMsMHg3YywweGRiLDB4MzQsCi0gIDB4NmMsMHg2ZiwweDUwLDB4ZmQsMHhiNywweGUzLDB4NzcsMHgyOSwweDA0LDB4ZGIsMHhkNCwweGY4LDB4ZDcsMHgyNSwweGI2LDB4ZjgsCi0gIDB4MzUsMHg3YSwweDgxLDB4YmMsMHhlMiwweDc5LDB4MDEsMHhjYSwweDBhLDB4MjksMHg4OCwweDdmLDB4MGYsMHgyZiwweDQwLDB4ZTEsCi0gIDB4NzksMHhmNywweDEzLDB4ZjIsMHg3NywweGUwLDB4YTgsMHg1MSwweGM2LDB4ZGMsMHhkNywweGM0LDB4YmYsMHg0MiwweDU5LDB4N2QsCi0gIDB4YjgsMHgwOCwweDgzLDB4ZDIsMHgyNSwweDVlLDB4OTgsMHhlYiwweGQ5LDB4ODIsMHgxZCwweDBjLDB4MDcsMHg2NywweDM2LDB4YjUsCi0gIDB4OGIsMHhiYiwweDQzLDB4MTcsMHhmZiwweDBjLDB4ZmUsMHg4MSwweGFiLDB4N2EsMHhhOSwweGQxLDB4M2EsMHgyYywweDNmLDB4MDcsCi0gIDB4MjcsMHhhMiwweGE1LDB4MmMsMHhiMywweDQxLDB4NzQsMHgwYiwweGFmLDB4MzYsMHgyYywweDFhLDB4NDQsMHhhMCwweDNlLDB4MDIsCi0gIDB4YTcsMHhhMCwweDk0LDB4YjUsMHhhNiwweGY4LDB4N2YsMHhhNCwweGQ1LDB4MTAsMHgzYiwweGNhLDB4ZmQsMHgzZiwweDdlLDB4OTcsCi0gIDB4ZDIsMHgyMiwweGEwLDB4NWEsMHhlZiwweGIyLDB4MTUsMHhjMCwweDViLDB4ZjcsMHgzYSwweGUzLDB4MTQsMHg3NywweDc4LDB4ZmEsCi0gIDB4ODYsMHgwNiwweDU1LDB4OWIsMHgxNywweDliLDB4MTIsMHhmZiwweDNhLDB4NjQsMHhhNiwweDg5LDB4ZDksMHgzYSwweGUwLDB4YTcsCi0gIDB4YjAsMHhkMiwweDQ5LDB4NjMsMHg3MywweGU2LDB4NDgsMHgyZCwweGY2LDB4NmYsMHgxZiwweGE1LDB4ZGIsMHhjMiwweGFmLDB4ZDAsCi0gIDB4MGQsMHg4NiwweGIzLDB4NjEsMHgwYSwweGZmLDB4YzcsMHgwZSwweDVkLDB4ZWEsMHg3OCwweDVhLDB4MTksMHhjYSwweDY3LDB4YzEsCi0gIDB4YzUsMHhjMywweDFjLDB4MjYsMHgzZiwweDEzLDB4MTAsMHg1OCwweDg2LDB4ZDUsMHgxMCwweGZiLDB4ODIsMHhjNywweDlhLDB4ZmYsCi0gIDB4OTUsMHhiNiwweGRhLDB4MDQsMHgzOSwweGFlLDB4ZTEsMHg5YywweDBlLDB4ZjIsMHgxNiwweDc0LDB4NjksMHgzMywweDc5LDB4YTEsCi0gIDB4YjksMHgxNiwweDdjLDB4NGQsMHgzNywweGNiLDB4ODksMHg5MywweGUzLDB4ZjksMHg1ZSwweGJlLDB4M2UsMHgxNiwweGZjLDB4MzMsCi0gIDB4NjMsMHhjYywweGNjLDB4ZGYsMHhlMSwweGZjLDB4MGQsMHgwZSwweDdiLDB4NDAsMHgxZSwweDE2LDB4ODYsMHhmMywweGZlLDB4YTQsCi0gIDB4NTYsMHg3MSwweGUyLDB4ZDMsMHgzMCwweDVjLDB4NTEsMHgxNiwweDQzLDB4NmEsMHhmZCwweDlmLDB4YWYsMHg1YywweDUxLDB4MmUsCi0gIDB4ODUsMHg0YSwweGNmLDB4NmUsMHgzMiwweGM0LDB4N2IsMHhlMSwweDUyLDB4ODMsMHg1NywweGNkLDB4ZWMsMHgxMywweDJiLDB4OTUsCi0gIDB4NTYsMHhlOCwweDhhLDB4Y2YsMHgxYywweDJkLDB4YjgsMHg0ZSwweGJiLDB4OWMsMHg1ZCwweDFhLDB4YjcsMHg4ZiwweDg4LDB4YjEsCi0gIDB4MjQsMHhmZSwweDgxLDB4OGYsMHhlMCwweGY5LDB4NWEsMHgxMiwweDQyLDB4MjMsMHhjYiwweDI5LDB4YjUsMHhhOCwweDY1LDB4MjEsCi0gIDB4NzksMHgxYiwweDc5LDB4NWUsMHgzYiwweDFlLDB4NzIsMHhjNiwweGNkLDB4MGEsMHg5MCwweDg3LDB4ODMsMHgyYiwweGUzLDB4YjQsCi0gIDB4NWIsMHg0YywweGQ2LDB4N2YsMHgzNiwweGNmLDB4OTcsMHg0NywweDM1LDB4OTYsMHg4NCwweGI3LDB4YTgsMHhmNCwweGE3LDB4MmUsCi0gIDB4MTcsMHhiNywweGNlLDB4ZWMsMHgxMCwweGM5LDB4YzMsMHhmNywweGY1LDB4NjYsMHg0YiwweDZjLDB4YjMsMHhhYSwweGYyLDB4YTUsCi0gIDB4ZTgsMHg0YSwweGMxLDB4M2YsMHg4NywweDIxLDB4ZGMsMHgyZiwweGIzLDB4OTcsMHg5YywweDZhLDB4MGIsMHhjYywweDAxLDB4NzksCi0gIDB4MWQsMHgzMSwweDJiLDB4NDIsMHgxYiwweDc1LDB4MzEsMHg1MiwweDAyLDB4ODcsMHg5OSwweDE5LDB4NTgsMHg0YywweGQ2LDB4N2YsCi0gIDB4MDYsMHhjOSwweDJkLDB4MWQsMHgwNiwweGVmLDB4MzAsMHgyYSwweDFkLDB4NTEsMHhmOSwweDM1LDB4NTQsMHhhOCwweDk5LDB4OTIsCi0gIDB4ZTgsMHg0NiwweGIzLDB4YzgsMHg3MywweDllLDB4YzYsMHhhNiwweDk1LDB4YjAsMHg0YiwweGFjLDB4ZGQsMHg3MCwweGM3LDB4ODQsCi0gIDB4ZTgsMHhlNCwweGYzLDB4ZWYsMHhkMCwweDc4LDB4ZmUsMHg3YiwweGQ1LDB4MTcsMHgxZCwweGM3LDB4ZTQsMHg5OCwweGViLDB4NzcsCi0gIDB4NDYsMHhkNSwweGYwLDB4YTYsMHg5MSwweGM2LDB4YjcsMHg2ZCwweDFmLDB4NmQsMHhmZSwweGUxLDB4N2IsMHg5YywweGZmLDB4YTMsCi0gIDB4OGMsMHhmYiwweDdmLDB4ODYsMHgyYywweGZhLDB4NzcsMHgzNywweDQ3LDB4ZDcsMHgzMSwweDA3LDB4ZTcsMHgxZiwweGJlLDB4MjUsCi0gIDB4OTUsMHg2OSwweDhlLDB4YTYsMHg5YSwweDhmLDB4MzgsMHhmZiwweGUxLDB4YTgsMHgzZCwweDI2LDB4N2UsMHhjOCwweDRkLDB4NjMsCi0gIDB4YmUsMHhkZiwweDkyLDB4ZmMsMHhlNywweDNlLDB4YzksMHgwZCwweGNmLDB4NzMsMHgyMywweDBiLDB4ODgsMHhjYSwweDdlLDB4MTYsCi0gIDB4NzEsMHhjNiwweGU1LDB4Y2UsMHhlYywweDMxLDB4YTUsMHgxZCwweGQ1LDB4NmUsMHg2NiwweGNjLDB4M2YsMHg5NCwweGJiLDB4ODEsCi0gIDB4YTksMHhmMSwweDE0LDB4ZmYsMHg4ZiwweDkxLDB4NmIsMHg4NywweGMzLDB4NjgsMHg4NiwweGI3LDB4YTgsMHg0NCwweGUwLDB4MzQsCi0gIDB4OGMsMHg4ZSwweGJmLDB4MmIsMHhjNiwweDZkLDB4ZDAsMHgwZSwweDZlLDB4NWMsMHhjZiwweGVjLDB4OTMsMHhkOSwweGNkLDB4M2IsCi0gIDB4NzAsMHhiZSwweDA3LDB4ZjUsMHhmYiwweGM0LDB4NGYsMHgwOCwweDY2LDB4YzEsMHg4MSwweDFkLDB4YzUsMHg1YSwweGNiLDB4MDgsCi0gIDB4NzksMHg0OCwweDdiLDB4M2EsMHhkNiwweDUwLDB4NjcsMHhkMiwweDc2LDB4OWYsMHg4ZSwweDE2LDB4N2YsMHhkMCwweGJjLDB4YzYsCi0gIDB4NzksMHg0NSwweDQ5LDB4NjcsMHhmOSwweGVmLDB4ZTIsMHg5NSwweGIxLDB4YzksMHg3YSwweGUwLDB4ODEsMHhiYywweDJjLDB4ZWQsCi0gIDB4ZDMsMHg4NiwweGNhLDB4ZGEsMHg2NSwweDIwLDB4ZGIsMHg1OCwweDRiLDB4N2IsMHhlZSwweGVlLDB4ZmYsMHhlNiwweDExLDB4NGYsCi0gIDB4ZGEsMHhkZiwweGY1LDB4NTcsMHgwZSwweGRhLDB4MTcsMHhlNSwweDlmLDB4MDQsMHhjNCwweDY5LDB4OWMsMHhmOCwweDZkLDB4YzEsCi0gIDB4M2YsMHhmNiwweGU3LDB4YjQsMHhhYiwweDFhLDB4MmUsMHg4MiwweDI2LDB4M2UsMHhjNywweDNlLDB4MDYsMHg5ZiwweGU4LDB4ZjgsCi0gIDB4YTQsMHhmMSwweDZkLDB4YjgsMHhjMiwweDg5LDB4ZDMsMHhjMywweGUyLDB4YzMsMHg5YSwweDE5LDB4M2EsMHhlNCwweDc4LDB4NzIsCi0gIDB4ZTIsMHg3ZCwweDM5LDB4YmYsMHhmNCwweDkyLDB4NWEsMHgxOSwweGI3LDB4YzcsMHg0NSwweDQwLDB4ZDgsMHg1MywweGIyLDB4NjUsCi0gIDB4NTMsMHg1OCwweGZjLDB4MzAsMHg3NCwweDExLDB4M2MsMHhiOCwweGVjLDB4MzksMHg4OSwweGM0LDB4NGMsMHg1YywweGE4LDB4YTMsCi0gIDB4YzksMHhmYSwweDI3LDB4MWMsMHhmZiwweGQ0LDB4MTYsMHg3MywweGI2LDB4YjMsMHg4MiwweDc4LDB4N2IsMHhiZSwweGMxLDB4Y2QsCi0gIDB4MjgsMHg3NiwweDAwLDB4NzYsMHg3MCwweGQ4LDB4ZjMsMHgzNiwweDNkLDB4MDcsMHgxYywweGZmLDB4YWMsMHg0YywweGYyLDB4N2YsCi0gIDB4ODAsMHhlMywweDFmLDB4YmQsMHgzOCwweDRlLDB4MjksMHhiOSwweDQxLDB4NTgsMHhjZiwweGJlLDB4MzUsMHgyOCwweGZmLDB4MmQsCi0gIDB4YmUsMHg2ZiwweGQ3LDB4YmEsMHg5ZCwweDNjLDB4MTEsMHgwYywweGYxLDB4MGYsMHhjMywweDVmLDB4YWQsMHhmMSwweDZmLDB4NGIsCi0gIDB4YzUsMHgzZiwweGUwLDB4ZWUsMHg4ZiwweDMwLDB4NDIsMHgyMywweDViLDB4MjUsMHhiNSwweDVmLDB4YmUsMHgwZCwweGQ3LDB4YjMsCi0gIDB4MGIsMHhkNCwweGNlLDB4MWIsMHhiOCwweDE5LDB4YWIsMHgwNywweDU3LDB4NzMsMHhmYywweGYzLDB4NjYsMHgxMiwweGZmLDB4NDgsCi0gIDB4OWQsMHhkYywweGU5LDB4ZDcsMHg4NCwweGNmLDB4NWYsMHg0ZSwweDhmLDB4ZWYsMHhhOCwweGU4LDB4NzYsMHhlOCwweDM5LDB4ODMsCi0gIDB4ZjgsMHhiZSwweGYzLDB4YjcsMHgyMSwweGUyLDB4N2QsMHg2MywweGQ1LDB4OTUsMHhhNiwweDRhLDB4ODYsMHg4MywweDQzLDB4YzksCi0gIDB4ZmIsMHg5YiwweGZhLDB4YzgsMHhhNywweDM4LDB4ZDgsMHgxNywweDc4LDB4MWEsMHgwZSwweDc3LDB4MDQsMHhlNSwweDE4LDB4ZTMsCi0gIDB4NTcsMHhhNiwweGM1LDB4NzMsMHg0NywweDY4LDB4MTYsMHhjYywweDYzLDB4MDUsMHhhZiwweDI1LDB4ZDcsMHgyNywweDU4LDB4YTgsCi0gIDB4OGMsMHg0MiwweDM2LDB4MmYsMHhmMywweDNiLDB4NDcsMHgzOCwweGE2LDB4N2IsMHg2YiwweDk3LDB4NmQsMHgyYiwweDE4LDB4ODAsCi0gIDB4ZjcsMHhhMSwweDZjLDB4OTUsMHg5OSwweGRmLDB4ZDQsMHgwMywweGUzLDB4ZjUsMHgwZiwweDI3LDB4ZTYsMHhiMywweDQ0LDB4M2QsCi0gIDB4YzMsMHhmYSwweDk2LDB4MjgsMHg5OSwweDE2LDB4ZGQsMHhjMSwweDhhLDB4YjgsMHhmNSwweGM0LDB4MTUsMHhhYiwweDczLDB4NGQsCi0gIDB4YTYsMHg5OSwweDg4LDB4YWQsMHhiNSwweDI3LDB4ZjAsMHhjZiwweGM0LDB4NGYsMHg5ZSwweGQ0LDB4MDEsMHg3YiwweGEwLDB4ZTgsCi0gIDB4M2UsMHg4ZSwweDdmLDB4YjQsMHg2NiwweDg0LDB4ZDksMHg0YiwweDM2LDB4OTMsMHg3MywweGI4LDB4OTEsMHhlNiwweDY4LDB4ODksCi0gIDB4YzQsMHhlZCwweDY2LDB4MTMsMHgxMSwweDU5LDB4ZjAsMHg0ZiwweGFlLDB4MDQsMHg3YiwweDM0LDB4MzMsMHhkYiwweGFiLDB4OTAsCi0gIDB4ZWUsMHhhYywweGE2LDB4NWEsMHg4YiwweDkyLDB4ZGQsMHgyYiwweDZjLDB4ZDYsMHg3MCwweDVhLDB4YWUsMHhmZiwweDNkLDB4MWUsCi0gIDB4MDEsMHhkMSwweGU2LDB4YTYsMHhlMCwweDFmLDB4Y2EsMHhmMSwweDRmLDB4MDUsMHgxZSwweDViLDB4YzQsMHgzZiwweDk0LDB4OTgsCi0gIDB4ZDEsMHg5NiwweGI4LDB4ZDQsMHgwNywweGZiLDB4YzEsMHg5NCwweDNmLDB4ODksMHg4YSwweDM0LDB4MDUsMHgxZiwweDRkLDB4OWIsCi0gIDB4OTAsMHgzZiwweGRkLDB4YjksMHg4OCwweGY3LDB4NmEsMHhhYiwweDM0LDB4YzcsMHg4NSwweDAyLDB4NWUsMHgwOCwweDg4LDB4N2IsCi0gIDB4MzMsMHg4NCwweGY3LDB4ZTAsMHhiNywweDdlLDB4YmMsMHgxMiwweDI1LDB4NjMsMHhjMCwweGZkLDB4M2YsMHg1OSwweDUxLDB4ZjEsCi0gIDB4YTMsMHhjOSwweGZhLDB4YWIsMHhlNSwweDg4LDB4N2YsMHg0NiwweDVkLDB4YTUsMHg0NiwweDU2LDB4OWIsMHhiYywweDAwLDB4ZGUsCi0gIDB4MTMsMHg3YywweGQ1LDB4ZjYsMHg2OCwweGNlLDB4ZjcsMHhkNCwweDYzLDB4YjQsMHg0YSwweGIzLDB4NmYsMHgxNiwweDA3LDB4YjQsCi0gIDB4NTcsMHg1YywweGJjLDB4ZmUsMHhhMSwweGY4LDB4ZDEsMHhlNCwweGZlLDB4YzksMHg4MywweDM4LDB4MmQsMHhjZiwweDQ3LDB4ZDgsCi0gIDB4YjMsMHgwZSwweDlmLDB4MjcsMHhlMiwweGNhLDB4NjIsMHgzNiwweDk2LDB4MWQsMHg4MiwweDMzLDB4MmEsMHhlNywweDIzLDB4ODksCi0gIDB4NzEsMHg1YiwweGM0LDB4YzksMHhlYiwweDFmLDB4ZTIsMHhmYiwweDRlLDB4N2MsMHg1ZiwweDBkLDB4OWEsMHg2MCwweDhmLDB4NGIsCi0gIDB4ZTUsMHhmNSwweDlmLDB4NmIsMHhhNSwweDFkLDB4YTQsMHg0OCwweDhiLDB4ZjAsMHhmYSwweGNmLDB4MGQsMHhiNCwweDQ0LDB4NjMsCi0gIDB4ZjgsMHhlMiwweGFjLDB4YzEsMHhlNSwweGU2LDB4ZjgsMHgyNywweDU5LDB4YWYsMHgzMiwweDJmLDB4YjcsMHg4MywweGMzLDB4YzgsCi0gIDB4MDAsMHg4ZCwweGRlLDB4MzAsMHhkYiwweDBjLDB4NDQsMHhkYSwweGEyLDB4NmMsMHgzNSwweDAyLDB4YTEsMHhhMiwweGEwLDB4MTAsCi0gIDB4YzUsMHgzZiwweDM0LDB4ZWIsMHgyZiwweDcxLDB4ZmMsMHgzMywweGIxLDB4M2UsMHhiYywweGZlLDB4ZTEsMHg0MSwweGU4LDB4NWEsCi0gIDB4OTMsMHg4NSwweGJmLDB4NTUsMHhkZSwweDBmLDB4M2YsMHg4YywweGJmLDB4MTUsMHg1NywweGMxLDB4YjEsMHg5MCwweGJiLDB4OWUsCi0gIDB4NDYsMHg2ZiwweGMxLDB4ZjUsMHgzNywweDc4LDB4ZmQsMHg0MywweGM0LDB4MDMsMHgxMywweGY3LDB4MWYsMHg1NCwweDNhLDB4MTAsCi0gIDB4MDYsMHhlMywweGIyLDB4ZTQsMHg4YSwweDdmLDB4YTAsMHhhMywweDAxLDB4YjMsMHgxMCwweDIyLDB4Y2YsMHg3ZiwweGY3LDB4ZDUsCi0gIDB4MzksMHhhMiwweGQzLDB4M2EsMHgxMiwweDExLDB4YzMsMHgyOCwweGUyLDB4ZWQsMHg4OSwweGY5LDB4NDUsMHhlNiwweDdlLDB4MmIsCi0gIDB4ZTEsMHhjYiwweDFlLDB4NGEsMHg1NCwweDk3LDB4NmEsMHgxMiwweGUzLDB4ZWEsMHg3OCwweDIxLDB4YTAsMHgzOCwweGY0LDB4YTksCi0gIDB4NTMsMHhmMCwweDBmLDB4NGQsMHhlMywweGQ1LDB4MGUsMHg4YiwweDliLDB4OTYsMHhlOCwweDM1LDB4ODcsMHg4YywweDIzLDB4ZDUsCi0gIDB4ZGMsMHhlZCwweGEzLDB4OGQsMHg0OCwweDFiLDB4ZTAsMHhmNywweGQxLDB4MTYsMHg5ZCwweDBjLDB4MmEsMHgxYiwweGYxLDB4MjAsCi0gIDB4YjgsMHg3NCwweDMxLDB4M2MsMHhiOSwweDdmLDB4NjgsMHhkYSwweDUyLDB4MDUsMHhjZiwweDRiLDB4MWIsMHgwYSwweDE5LDB4MWIsCi0gIDB4YzQsMHg1OCwweGUxLDB4YmIsMHg3MiwweDM5LDB4NGYsMHg5MywweDE0LDB4ZDQsMHgzMSwweGIzLDB4NWUsMHg0ZCwweDM0LDB4YTgsCi0gIDB4MjYsMHhmOCwweDk5LDB4MTMsMHhmMywweDc5LDB4ZmQsMHhjMywweDAzLDB4ODUsMHhjNSwweDcwLDB4ZTMsMHhhNywweDc4LDB4ZTgsCi0gIDB4ZjYsMHgxOSwweGY5LDB4ZmQsMHg3MiwweDdkLDB4ZjgsMHhiNywweGI0LDB4YjEsMHgzZCwweDlmLDB4YmIsMHg0MSwweGRlLDB4MTYsCi0gIDB4ZDcsMHgzMSwweGNlLDB4ZGYsMHg0YiwweGVmLDB4NGIsMHhlMiwweGI3LDB4M2MsMHg0NCwweDNiLDB4M2IsMHhmZSwweDc5LDB4ODcsCi0gIDB4ZTMsMHgwNywweDY4LDB4NWYsMHg1ZiwweDYwLDB4YjcsMHhiZSwweGViLDB4ZjgsMHgxYiwweGYxLDB4NTQsMHhjNiwweGNiLDB4NDYsCi0gIDB4N2UsMHgzYywweGYzLDB4OTEsMHhjNiwweDJiLDB4ZGEsMHhkYiwweDZjLDB4NGYsMHg4OCwweGFlLDB4MTEsMHg4ZiwweGE3LDB4NGYsCi0gIDB4M2UsMHg0ZiwweDI2LDB4Y2EsMHhkYiwweDJmLDB4ZjksMHgxYSwweDFjLDB4ZTUsMHg3ZiwweDM1LDB4YTgsMHhmOCwweGUwLDB4MDgsCi0gIDB4OWEsMHhmOSwweDVjLDB4OGMsMHhiOCwweDdjLDB4MmMsMHhiMywweDJiLDB4NjcsMHg3NSwweGVmLDB4NzgsMHhlMiwweDZkLDB4NzgsCi0gIDB4ZDIsMHhmZiwweDFjLDB4OTIsMHg4ZSwweGMwLDB4NTUsMHg2MywweDdlLDB4ODcsMHhiNCwweDQ2LDB4YWMsMHhmMCwweDBmLDB4YjIsCi0gIDB4NDUsMHgyMSwweGM3LDB4ODgsMHg3OCwweDkxLDB4NzEsMHhiNywweDRmLDB4ZmEsMHg4OCwweGY4LDB4MGUsMHhiYywweGNkLDB4MTYsCi0gIDB4NzMsMHhmZCwweDc1LDB4MjYsMHhjOSwweDM3LDB4ODYsMHg1NiwweDM4LDB4YTAsMHhlYywweDY4LDB4Y2IsMHg3YywweDUwLDB4MGMsCi0gIDB4NjgsMHhhZCwweDJjLDB4N2YsMHg3NSwweGNiLDB4ODMsMHg2OCwweDJkLDB4MWUsMHg0MCwweDMzLDB4MGEsMHg1ZiwweGYzLDB4NmQsCi0gIDB4ZjYsMHg1MiwweGE4LDB4ZDgsMHhiMCwweGFmLDB4YzksMHhmZSwweDIwLDB4NzksMHgxZSwweDExLDB4ZmYsMHhlYywweGU1LDB4NDUsCi0gIDB4YjMsMHg4NywweDQ5LDB4YjksMHhmNCwweDI0LDB4Y2MsMHhlZCwweDk3LDB4ODMsMHhlNCwweDBjLDB4Y2EsMHhhYiwweGUyLDB4MWUsCi0gIDB4OTQsMHg1NywweDYzLDB4NTIsMHg4NywweGZkLDB4M2IsMHhmOCwweGJlLDB4ZmUsMHg1ZSwweDZkLDB4NjIsMHhiZSwweDk2LDB4ZGIsCi0gIDB4Y2EsMHg5ZCwweDE4LDB4MmMsMHhjMywweDQzLDB4MDIsMHhiOSwweDBkLDB4ZDMsMHg1NSwweDQzLDB4YWUsMHhjNCwweDQzLDB4NzIsCi0gIDB4ZjgsMHgzZSwweDM3LDB4NWYsMHhjNiwweDkzLDB4YTgsMHg3ZSwweGVjLDB4NDYsMHg4NiwweGM3LDB4ZmYsMHg5YSwweDQ1LDB4M2YsCi0gIDB4ZWUsMHg0NiwweDdkLDB4ZTQsMHgzNSwweDY2LDB4MGUsMHg4YiwweDljLDB4MTIsMHg1MiwweDgxLDB4ZGEsMHhhMSwweDcxLDB4MDAsCi0gIDB4YWUsMHg4NiwweDdkLDB4NzUsMHg1OSwweGMzLDB4ZTIsMHgzYiwweGVjLDB4MDMsMHg3YywweDVmLDB4ZDQsMHhlZiwweGE3LDB4OTIsCi0gIDB4ZjUsMHhhNiwweGE2LDB4OWIsMHhkOSwweDcwLDB4NmQsMHg4ZSwweDU4LDB4ZTMsMHg2MCwweDA0LDB4ZTUsMHg0ZiwweGFkLDB4YTMsCi0gIDB4ODMsMHhiYiwweDdkLDB4NTQsMHg5ZiwweGM2LDB4MGIsMHhhZiwweGMxLDB4NGYsMHg2YSwweDc5LDB4NjksMHhjNCwweDlhLDB4NDEsCi0gIDB4MjksMHg4OSwweDdmLDB4NGMsMHg3ZCwweGM3LDB4ZWIsMHg0YiwweDhmLDB4ZjAsMHg0MCwweGQ4LDB4MzEsMHhjNywweGY5LDB4NDYsCi0gIDB4NWUsMHhkOCwweDZkLDB4YTEsMHg5NiwweDM5LDB4N2MsMHg2MywweDI1LDB4OWMsMHhiMiwweDU1LDB4ZjEsMHhmOCwweDU3LDB4N2MsCi0gIDB4MTIsMHhmZiwweGY0LDB4MjAsMHhmZSwweDM5LDB4MGMsMHg2ZSwweGRkLDB4MTYsMHgyMywweGFmLDB4MTIsMHg3ZCwweDAzLDB4MWEsCi0gIDB4MDIsMHgzYSwweGY5LDB4MDgsMHhhZiwweDJjLDB4NTgsMHhjMywweGY1LDB4M2IsMHg2OSwweDMxLDB4ZTYsMHg3MCwweDQ1LDB4NmYsCi0gIDB4YzEsMHgzZiwweDkyLDB4OTksMHgxZCwweGNmLDB4MmYsMHhmZSwweDExLDB4YjYsMHgzMSwweDY3LDB4YTMsMHgxYywweDBkLDB4N2YsCi0gIDB4MDQsMHgzZiwweDgzLDB4MzksMHhhMSwweDBjLDB4NGYsMHhiNiwweDViLDB4NjksMHg2MSwweDI1LDB4MDEsMHgxMywweGZmLDB4NGMsCi0gIDB4YzgsMHgwNywweDBhLDB4NzYsMHg2ZCwweGVmLDB4NzQsMHhkMywweDA4LDB4ZWQsMHg0MywweDMwLDB4ZGEsMHgwOSwweDM3LDB4MDIsCi0gIDB4Y2YsMHg3NywweDJlLDB4MmMsMHhiYywweDJiLDB4ODAsMHg4OCwweDQ4LDB4NjgsMHg4NCwweDU1LDB4ODYsMHhjYiwweGViLDB4NGYsCi0gIDB4ZDYsMHgzZiwweDg0LDB4YmMsMHhlZiwweGYwLDB4NmMsMHg3ZCwweDY2LDB4OGYsMHg5MSwweDQxLDB4ZWQsMHhjYywweDk3LDB4YmMsCi0gIDB4NmQsMHg3OCwweDNhLDB4ODYsMHhhNCwweDhmLDB4NDksMHg1OSwweGYwLDB4ZWUsMHhjZiwweDBhLDB4MmEsMHgxMywweGY1LDB4ZDMsCi0gIDB4MTAsMHhlZiwweDI1LDB4ZWIsMHgxZiwweDY2LDB4OGUsMHg0OSwweDU3LDB4NTUsMHhkMywweDZjLDB4M2YsMHgwMywweDYzLDB4NWUsCi0gIDB4MTQsMHhjYiwweDg2LDB4MzgsMHgyNiwweDVkLDB4ZDIsMHgyYSwweGVmLDB4OWEsMHhjNywweDExLDB4ZDEsMHg2NSwweGFlLDB4ZGYsCi0gIDB4ZjcsMHg4OCwweDgzLDB4NzcsMHgyNCwweGZkLDB4M2YsMHg0NywweGUwLDB4MGQsMHg3NSwweGIxLDB4NmEsMHgzZiwweGNhLDB4MDMsCi0gIDB4MmYsMHg0NiwweGE5LDB4ZWEsMHgzOCwweDlhLDB4NTMsMHg1OSwweDNiLDB4OTYsMHg3ZiwweGEzLDB4ZGQsMHhkZSwweDg3LDB4NzgsCi0gIDB4ZTksMHhmMiwweDk2LDB4ODUsMHg2NywweDFkLDB4MjksMHhmZSwweDFmLDB4NmEsMHhmYSwweDdmLDB4NTQsMHhmYSwweDJmLDB4Y2UsCi0gIDB4NzksMHhkYywweGRhLDB4ZDIsMHhlNSwweDQ2LDB4ZmYsMHg2MiwweDU2LDB4ZWUsMHg3MSwweDJlLDB4YTUsMHgxMSwweDEyLDB4MzcsCi0gIDB4ZDAsMHgxNCwweGVkLDB4Y2IsMHhlOCwweDI2LDB4YzMsMHg5MywweGY5LDB4NWYsMHg1NCwweDNhLDB4MDksMHg3YiwweDE0LDB4ZGUsCi0gIDB4ZTQsMHhjMiwweDZiLDB4MGYsMHg3NCwweGU2LDB4YmIsMHg0MiwweDRiLDB4OTQsMHg3MCwweDI2LDB4ZGIsMHg0MywweGViLDB4ZjAsCi0gIDB4NjQsMHhhNywweGY3LDB4YWEsMHgwNywweDYxLDB4ZDUsMHg1MSwweDNjLDB4NjgsMHhlNywweDg1LDB4ODksMHhlZiwweDZiLDB4MDgsCi0gIDB4YmIsMHhlMSwweGEwLDB4ZjYsMHhjMCwweDhhLDB4Y2UsMHg2ZCwweDg4LDB4YTYsMHgzYSwweDU5LDB4NTEsMHhiNSwweDFjLDB4ZjEsCi0gIDB4YmEsMHhlMSwweDIwLDB4NWIsMHhhOSwweGRhLDB4YTIsMHhlOSwweGVmLDB4NjYsMHgxYywweDRlLDB4MTQsMHhkNiwweDFlLDB4OWUsCi0gIDB4YzQsMHg0YiwweDMwLDB4NjMsMHgwOCwweGRlLDB4OGEsMHg5NiwweGI4LDB4ZWMsMHg1NCwweGIwLDB4NGIsMHg3MSwweDc2LDB4MDgsCi0gIDB4MWMsMHgxYiwweDM4LDB4NTEsMHhiOSwweGFmLDB4NjIsMHg3ZSwweDk2LDB4M2UsMHhlZCwweGY3LDB4ZjAsMHhmZCwweGI2LDB4MzIsCi0gIDB4MWUsMHgzZiwweDM1LDB4YWMsMHhmOSwweDVmLDB4YzIsMHgwZiwweDc5LDB4NTgsMHg5MCwweGE3LDB4MzUsMHhiZCwweDAzLDB4N2YsCi0gIDB4YzUsMHg3MCwweGRiLDB4OGMsMHhkOSwweDQ3LDB4ODUsMHhjNSwweDcwLDB4ZjcsMHgyNywweDM5LDB4NzEsMHgzYSwweDQ2LDB4YWEsCi0gIDB4OGUsMHg3MywweDdjLDB4OTgsMHgxMiwweGZmLDB4YmEsMHhhNCwweGY5LDB4OTQsMHhhNSwweDZkLDB4ZTIsMHgxMCwweGViLDB4MGIsCi0gIDB4OTYsMHhiNSwweGEyLDB4YTEsMHhlYSwweDg2LDB4MGYsMHhjMCwweDFiLDB4NzUsMHhlOCwweGUyLDB4ZmIsMHhlNCwweDE4LDB4MWEsCi0gIDB4MTMsMHg3OCwweGZmLDB4NGYsMHhhYywweGZlLDB4MWYsMHhlMSwweDEyLDB4N2UsMHg2MywweGZhLDB4MmYsMHhmZSwweGNiLDB4NzAsCi0gIDB4YTYsMHhkZiwweDE5LDB4NzMsMHhmYywweDJiLDB4YTksMHhhYSwweDQ1LDB4ZmIsMHg1MSwweDVkLDB4MTIsMHg0YiwweGZmLDB4YmQsCi0gIDB4MTEsMHg1NiwweGRiLDB4NWYsMHhlMywweGYxLDB4M2IsMHg0YiwweGZmLDB4MGIsMHhiYiwweDE0LDB4NjMsMHg2ZSwweDRhLDB4ZDUsCi0gIDB4ZWMsMHg1NywweDAxLDB4ODgsMHhlZSwweGMxLDB4ZmQsMHg5NiwweDA1LDB4Y2YsMHg0MCwweDYxLDB4NjQsMHg0OSwweDNhLDB4ZTksCi0gIDB4NTMsMHhmNiwweDM0LDB4YTgsMHhjMywweDIyLDB4YzcsMHgzZiwweDEzLDB4ZGYsMHgxNywweGYxLDB4OGYsMHhkMiwweDYxLDB4MTQsCi0gIDB4MTcsMHhkMiwweGJmLDB4MjEsMHhlZiwweDY4LDB4ZGIsMHhhMywweGY5LDB4ZmEsMHg5MiwweDNiLDB4NzEsMHhmZSwweDVhLDB4MzYsCi0gIDB4ZmIsMHg5YiwweDcyLDB4ODAsMHhiYywweDBlLDB4Y2YsMHhiNiwweDliLDB4MTUsMHgwMiwweDkzLDB4ZjksMHg1ZiwweDgxLDB4M2MsCi0gIDB4YzQsMHhkYiwweDlkLDB4OTUsMHg5YSwweGZkLDB4ZDYsMHhjNiwweDkzLDB4YTEsMHgxZSwweGVkLDB4N2IsMHg5YSwweDQzLDB4OTAsCi0gIDB4ZWQsMHg2YSwweDFjLDB4MTYsMHhiYywweGU4LDB4ZjAsMHg5MCwweDU3LDB4YjQsMHhkMSwweDk4LDB4MjcsMHg4MSwweDdmLDB4MjYsCi0gIDB4ZTYsMHg2YiwweDc5LDB4Y2YsMHgyMSwweDQ4LDB4YWUsMHhkMiwweGU2LDB4ZmQsMHg0YSwweDdjLDB4M2IsMHhmNCwweDk5LDB4ZjQsCi0gIDB4ODgsMHhmZiwweDU0LDB4NGYsMHhjZSwweDk4LDB4NzQsMHgxOSwweDE2LDB4ZDUsMHgzYSwweDg2LDB4ZDksMHgwNSwweDc4LDB4NDUsCi0gIDB4NTksMHhkNCwweGNiLDB4ZWIsMHhmZiwweDRjLDB4ZTIsMHg0MywweDhhLDB4ZWIsMHgzZiwweDJhLDB4YTAsMHgxMCwweGVlLDB4OTYsCi0gIDB4NGIsMHhlMCwweGE4LDB4NTQsMHhlNiwweDc3LDB4MGMsMHgwYiwweDZlLDB4NWMsMHhkOCwweGFhLDB4NmEsMHg3YiwweDEzLDB4OGYsCi0gIDB4ODAsMHg5OCwweGZlLDB4NmEsMHhlMSwweGE4LDB4ODUsMHhmZiwweGJjLDB4MWQsMHhmNSwweDc1LDB4M2UsMHgwYiwweGQ0LDB4OTMsCi0gIDB4NTksMHg4NCwweGIzLDB4N2QsMHhlNCwweDdhLDB4ZmYsMHg0ZCwweGRhLDB4NWEsMHg4MiwweDg4LDB4ZTgsMHhjYiwweDY4LDB4NjEsCi0gIDB4ZWQsMHgxYiwweDhmLDB4N2YsMHg0ZCwweGRhLDB4NzcsMHgyYSwweGM3LDB4M2YsMHhhYywweDIwLDB4ZTQsMHgyYSwweDI3LDB4NTksCi0gIDB4YzIsMHhhMywweGVjLDB4YzksMHhjMSwweDk2LDB4YmMsMHhlYywweGFjLDB4ODYsMHgxZiwweGIzLDB4ZDUsMHhjMywweGI0LDB4MGUsCi0gIDB4ODEsMHhkMCwweGIzLDB4ODgsMHg3ZiwweDk2LDB4YWMsMHg0OSwweDRmLDB4Y2EsMHhiNywweDNhLDB4OGUsMHg3ZiwweDBjLDB4ZDUsCi0gIDB4ODgsMHg1NCwweDFlLDB4YjUsMHg1MywweDM0LDB4ZjMsMHg4ZiwweGNhLDB4NmQsMHg3ZSwweDc3LDB4NWEsMHg4MywweGYxLDB4NDAsCi0gIDB4MjgsMHhiMCwweDAwLDB4ODEsMHg0MSwweGI3LDB4NTYsMHhjMiwweDE5LDB4ZjIsMHg2ZiwweDI2LDB4ZjMsMHhiZiwweDcyLDB4M2IsCi0gIDB4ZTEsMHhjYSwweGI2LDB4ZDIsMHg3NiwweGZiLDB4NDcsMHgzOSwweDJlLDB4MzgsMHgxNSwweDI5LDB4NjMsMHgwZSwweGNlLDB4ZmYsCi0gIDB4NzksMHg0NywweGFmLDB4OGEsMHhiYSwweDc1LDB4NzEsMHg5NCwweDVkLDB4OTksMHhlZSwweGQzLDB4MzcsMHg3MSwweGZmLDB4Y2YsCi0gIDB4YzQsMHhmMywweDA3LDB4NzgsMHgzZSwweDRlLDB4MjIsMHhlOCwweDEwLDB4OTcsMHgzOCwweGRiLDB4MTksMHg2ZCwweGU0LDB4MzgsCi0gIDB4OGMsMHhkOCwweDdjLDB4MzksMHgwZSwweGQ2LDB4NzgsMHhiNiwweDcwLDB4ODQsMHg2NywweDA4LDB4YTYsMHhlNiwweDdmLDB4YTEsCi0gIDB4YmUsMHg2MywweGRlLDB4NTUsMHhlZSwweGNkLDB4MzksMHgwMywweDc0LDB4MzQsMHg1YSwweDY2LDB4ZDYsMHg3ZiwweGU2LDB4YjAsCi0gIDB4MjcsMHg5OCwweGM4LDB4ZWYsMHgxNiwweGJjLDB4ZjUsMHhhZCwweDUzLDB4ZjAsMHgwZiwweDNkLDB4ZTgsMHg1NCwweDQzLDB4YjQsCi0gIDB4OGQsMHgwYywweDQ0LDB4MGYsMHhmMiwweDQwLDB4Y2MsMHgxNiwweGRiLDB4OWMsMHhmMCwweDMxLDB4NzAsMHgyZSwweGNmLDB4OGIsCi0gIDB4ZjEsMHhmYSwweDNmLDB4NmEsMHg1MSwweGYwLDB4Y2YsMHhmYSwweDdmLDB4NWMsMHg2NiwweDlhLDB4M2MsMHhiYywweDZiLDB4ZjIsCi0gIDB4N2YsMHgzNCwweDMzLDB4YzMsMHg2YiwweDBiLDB4MTksMHhkMCwweDMzLDB4MTIsMHhmZSwweGEyLDB4NTMsMHg5MywweGZhLDB4OGIsCi0gIDB4ZmIsMHg3ZiwweGY2LDB4MjQsMHg5MiwweGRjLDB4N2IsMHgxMSwweDA4LDB4ODUsMHgzNCwweGQzLDB4MTEsMHhjNCwweDEzLDB4YzEsCi0gIDB4MjgsMHg0ZiwweDBjLDB4NmYsMHhkMCwweDVjLDB4ZjUsMHgyZSwweDg1LDB4MWMsMHg0ZiwweGU2LDB4N2YsMHhkZCwweDE0LDB4MzIsCi0gIDB4ZGQsMHgzZSwweDExLDB4NTYsMHgxMywweDFmLDB4NzcsMHgwNCwweDk5LDB4ZjksMHg1ZiwweDVkLDB4ZGMsMHhjZCwweDEyLDB4OWYsCi0gIDB4Y2MsMHg3ZiwweDlmLDB4YzQsMHhjZiwweGRkLDB4ZGMsMHhmZiwweGEzLDB4MmQsMHhkNiwweDk2LDB4OWQsMHhjZSwweDc5LDB4MGYsCi0gIDB4YTUsMHgwZCwweDVhLDB4YTMsMHhhNywweGM1LDB4ZjcsMHhlMCwweGMzLDB4NmEsMHg1ZSwweGY2LDB4YTcsMHhlNiwweDMyLDB4NmUsCi0gIDB4YTQsMHgyYSwweGQzLDB4ZmYsMHgyMywweDU4LDB4ZjEsMHhjZiwweDY1LDB4MTcsMHg0ZiwweGYyLDB4NmEsMHhiYywweGUwLDB4YjksCi0gIDB4MGMsMHg2NSwweDQ2LDB4ZmEsMHg2OSwweGYxLDB4NTYsMHg3OCwweGJmLDB4YmEsMHg3NCwweDM5LDB4OGEsMHhiNSwweDBiLDB4ZWMsCi0gIDB4ZjIsMHgxZCwweGE1LDB4ZGEsMHhiMiwweDI4LDB4MzksMHg2NywweGMxLDB4M2YsMHgzYSwweDc0LDB4ZmIsMHg5ZCwweDEwLDB4NjksCi0gIDB4MjIsMHg2NywweDgxLDB4ZDcsMHhmZiwweGExLDB4M2MsMHgzMCwweGQ3LDB4NTcsMHhlYiwweDg0LDB4MmMsMHg0NiwweGNlLDB4ZWEsCi0gIDB4ZGQsMHg1MCwweDg2LDB4NTAsMHhjZCwweDdmLDB4NmEsMHg1MiwweGZlLDB4MmMsMHg5NSwweDEwLDB4ZmYsMHg0MCwweGExLDB4NDYsCi0gIDB4ZjMsMHg0OCwweGFmLDB4NzQsMHg5MCwweGNlLDB4ZTEsMHg2MSwweGJlLDB4MzQsMHhmYiwweDhlLDB4OTAsMHg2YiwweDM5LDB4YmYsCi0gIDB4MTIsMHgzYywweGE4LDB4ZDYsMHhmMSwweGY4LDB4ZDcsMHg1NCwweGZjLDB4ODMsMHhlOCwweDkxLDB4NTcsMHgyYiwweGRkLDB4NDUsCi0gIDB4MzksMHg3YSwweDVjLDB4NTcsMHg4OCwweDAzLDB4YTIsMHg3ZCwweDAxLDB4ZjEsMHgyNCwweDNiLDB4YzgsMHhlNiwweDA0LDB4Y2MsCi0gIDB4NzgsMHhlMiwweGM0LDB4N2MsMHg1ZCwweGVhLDB4NTAsMHgzZSwweDgxLDB4MDUsMHgwMSwweDdiLDB4MWIsMHg4ZiwweDY2LDB4MWEsCi0gIDB4MGIsMHhlYSwweDFkLDB4ZGIsMHhjNSwweDQyLDB4ZmEsMHhiZSwweGUxLDB4N2QsMHhjOCwweGJlLDB4YWQsMHg2NiwweDAwLDB4MWUsCi0gIDB4ODQsMHg0NSwweGE5LDB4ZmMsMHgxZiwweDhlLDB4N2YsMHgwZSwweGY2LDB4MWMsMHhhYSwweGQ5LDB4MTQsMHg3NSwweGFlLDB4ODIsCi0gIDB4NTEsMHhkNSwweDU3LDB4OWIsMHg5NSwweDJkLDB4ZjYsMHg0MiwweDhmLDB4NzEsMHhhNCwweGRlLDB4YmUsMHhiZCwweDMxLDB4MTEsCi0gIDB4MTEsMHhkYiwweDE0LDB4MTUsMHhjZiwweDRmLDB4ZjEsMHhmZiwweGY4LDB4MTQsMHg3YiwweGIzLDB4NjgsMHhkNiwweDdmLDB4OTYsCi0gIDB4ZjgsMHhmYSwweDUzLDB4Y2UsMHgzZiwweDc3LDB4MzMsMHhmMSwweDJjLDB4ZjQsMHhlNSwweDk5LDB4ODgsMHgzNCwweGI5LDB4N2YsCi0gIDB4YTgsMHhlNCwweDgyLDB4MjMsMHg4MSwweDc5LDB4YmEsMHgyYiwweGVlLDB4YmMsMHhhNCwweGVlLDB4ZDcsMHg5YywweDdiLDB4ZTQsCi0gIDB4ODEsMHhlYywweGRiLDB4YzAsMHg0NiwweGU2LDB4ZWQsMHhhMywweDdhLDB4NDEsMHgzNywweDZjLDB4OTQsMHgwYSwweDEwLDB4MTEsCi0gIDB4ZjksMHg5MywweGZlLDB4MWYsMHhjYSwweGVkLDB4ZDMsMHg4MCwweDliLDB4NmIsMHhmZiwweDU3LDB4ZDksMHg5ZSwweDM4LDB4OWUsCi0gIDB4OTcsMHgxYiwweDljLDB4NzcsMHhlNCwweDM3LDB4NDIsMHg0OSwweDkwLDB4NTYsMHg5MiwweDk3LDB4NzIsMHhkYiwweDk5LDB4ZjQsCi0gIDB4NWEsMHg4YiwweDM1LDB4ZmUsMHhhNSwweDBhLDB4NjYsMHg5MSwweGQyLDB4MzAsMHhkNSwweGIyLDB4NGYsMHgyYiwweGZiLDB4YjUsCi0gIDB4N2MsMHg0ZCwweDVlLDB4NDUsMHhiZSwweDQ0LDB4ZDcsMHhhYiwweGM1LDB4N2UsMHhiYSwweDhhLDB4ZmMsMHgxNCwweDllLDB4MTIsCi0gIDB4OWUsMHhlNCwweDhkLDB4MzAsMHhlMiwweDkzLDB4ZjksMHg1ZiwweGFlLDB4M2MsMHhlZSwweGZmLDB4NTksMHhhYywweGRiLDB4ZWIsCi0gIDB4NmEsMHhkZSwweDgxLDB4Y2IsMHg2YywweGM3LDB4ODAsMHhlMywweDhjLDB4ZmMsMHgwOCwweDc5LDB4OTksMHg1NSwweGU5LDB4ZjYsCi0gIDB4ZTUsMHhlMiwweGU3LDB4ZTQsMHhlMywweGYwLDB4YWQsMHhmMSwweDY5LDB4NmIsMHhjNCwweDc3LDB4NTMsMHhmYywweDNmLDB4MDcsCi0gIDB4ODUsMHg0YSwweGY2LDB4MGYsMHhiYywweGJhLDB4Y2IsMHgxNSwweGYwLDB4MDUsMHgxYywweDcxLDB4N2MsMHhlYywweDRiLDB4ZjUsCi0gIDB4NTUsMHg0YywweDZlLDB4NmEsMHhlYywweDg2LDB4YjcsMHg2MCwweGQxLDB4MmEsMHhlZSwweGZmLDB4OTksMHg1YywweDFmLDB4OGUsCi0gIDB4N2YsMHhmZSwweGM0LDB4NGEsMHg3NSwweGZiLDB4YjEsMHg5YSwweGQ3LDB4ZTEsMHhjNSwweGYwLDB4YzIsMHhiOCwweGUzLDB4OGMsCi0gIDB4ZjAsMHgzOSwweDljLDB4ZTgsMHgyZiwweDBkLDB4ZDEsMHg1MSwweGIxLDB4MGMsMHg1ZSwweGU1LDB4ZmMsMHg5ZiwweDkxLDB4ODIsCi0gIDB4YTQsMHhiZCwweDE2LDB4NDEsMHgzYywweGIzLDB4NWYsMHhiYiwweDM1LDB4ZTIsMHhmYSwweDEyLDB4MzksMHg4ZCwweGQwLDB4NzgsCi0gIDB4NDcsMHhmNCwweDg0LDB4NDYsMHg4NiwweGMzLDB4ZWIsMHhkOSwweGFkLDB4NDEsMHhmYSwweGEwLDB4NWYsMHg1MSwweDlhLDB4ZjMsCi0gIDB4NmYsMHgzNSwweDk2LDB4ZmQsMHg4MCwweDI0LDB4ZWIsMHg2ZiwweDliLDB4ZmUsMHgxZiwweDI1LDB4MWYsMHhmMiwweGJlLDB4ZTQsCi0gIDB4ZWMsMHhkNywweDFlLDB4YTUsMHhiMywweDBkLDB4YzQsMHgzZiwweGE3LDB4ZTksMHhmYSwweGYyLDB4N2MsMHhhMCwweDlmLDB4MzgsCi0gIDB4ZWYsMHg4MywweGY1LDB4YjAsMHhjMiwweDkwLDB4MWYsMHg0YSwweGVmLDB4OWQsMHhiYywweGJmLDB4YTYsMHhiNCwweDQyLDB4OGMsCi0gIDB4MTQsMHg5MiwweDgwLDB4NDAsMHg4YywweGVjLDB4MzAsMHg1MywweDc1LDB4OTksMHgzYiwweGU5LDB4MWEsMHg5YiwweDBhLDB4NjMsCi0gIDB4NzUsMHgwYiwweGM4LDB4OWQsMHg2OCwweDk4LDB4N2MsMHg1MywweDQzLDB4ZjksMHg5MywweDk0LDB4NTcsMHgxYywweGZmLDB4NWMsCi0gIDB4MDIsMHg0ZiwweDhmLDB4N2QsMHg1NywweDQxLDB4MWYsMHgxYywweDYzLDB4ZmIsMHhjMywweDhlLDB4YzcsMHg3MSwweDIzLDB4YmQsCi0gIDB4NmEsMHg3OCwweGVmLDB4YjUsMHhlZiwweDkzLDB4YmYsMHg0MSwweDhlLDB4N2IsMHg0ZCwweGZlLDB4OGYsMHgwNSwweGZmLDB4MjgsCi0gIDB4YmMsMHhjOCwweGUxLDB4MjEsMHgxZCwweDM3LDB4ZDUsMHg1OSwweGI4LDB4ZTgsMHhmNywweDI5LDB4Y2IsMHgzYSwweGQwLDB4ZmUsCi0gIDB4NDIsMHhmYywweDEzLDB4NDQsMHg3ZCwweGQ0LDB4NjksMHg1YywweDA0LDB4ZGMsMHg1MSwweDMxLDB4ZmMsMHg5NSwweGQ1LDB4ZmYsCi0gIDB4NzMsMHgyNSwweDVhLDB4YzUsMHg4YiwweGQ4LDB4OGMsMHg0OCwweGFmLDB4NzAsMHg3ZiwweDdlLDB4YmYsMHg0OSwweGUzLDB4ZjQsCi0gIDB4ODUsMHg5NywweGJkLDB4ZGQsMHhkOCwweDBiLDB4YWYsMHgyNiwweDJhLDB4MDIsMHgwZCwweDI2LDB4ZWIsMHg0NSwweDIzLDB4ZmUsCi0gIDB4ZTksMHg2NiwweGJlLDB4N2MsMHhkYSwweDRhLDB4ZTIsMHhhNCwweDM5LDB4NTIsMHgwMiwweDJkLDB4OTEsMHhmMCwweDFmLDB4NzgsCi0gIDB4ZmQsMHgxOSwweDc1LDB4NDksMHg4NCwweDljLDB4OTMsMHgxYSwweDc5LDB4N2UsMHgxMywweDQyLDB4OTEsMHg2MCwweGQyLDB4ZmYsCi0gIDB4YjMsMHg1YSwweDM5LDB4MDgsMHgyNSwweGJhLDB4NmIsMHgzMywweDRhLDB4ODMsMHg2NiwweDU2LDB4YjIsMHg0MiwweGRlLDB4ODYsCi0gIDB4YTcsMHhmNSwweGE3LDB4NTAsMHhjMiwweDNkLDB4MjQsMHg3ZiwweDAwLDB4MTksMHg5YywweGVmLDB4NzIsMHhmYywweDMzLDB4YjksCi0gIDB4MWYsMHhhOCwweDY2LDB4ODcsMHg5OCwweGUwLDB4NjYsMHgxNCwweDg4LDB4NjEsMHg1NiwweDAzLDB4NDgsMHhjNCwweDA3LDB4YTksCi0gIDB4MWIsMHg5NiwweDUwLDB4NjIsMHgxMCwweDZlLDB4N2YsMHg1MSwweGFmLDB4ZDUsMHhmZiwweDkzLDB4YjcsMHhkYSwweDk0LDB4YjcsCi0gIDB4YWQsMHgyNiwweGRhLDB4MzcsMHhlMywweDM1LDB4NWYsMHg4ZSwweGMzLDB4NmYsMHhjYywweDQxLDB4NDEsMHgxYywweDRlLDB4ZDQsCi0gIDB4N2EsMHg5OSwweGJkLDB4YWIsMHgzMSwweDllLDB4NmYsMHhlMSwweDNmLDB4YzMsMHg5OCwweGVkLDB4MzYsMHhkNCwweGVmLDB4MzksCi0gIDB4NjYsMHhiNiwweGJiLDB4ZTAsMHgzMCwweDZhLDB4ODYsMHgzOSwweGJmLDB4MDUsMHhjYywweGZhLDB4M2YsMHg5NywweGQ1LDB4ZTcsCi0gIDB4MzUsMHhkMywweDc1LDB4MzYsMHg4OSwweDFmLDB4ODAsMHhlMCwweDJlLDB4MDAsMHgxNywweDI3LDB4NTAsMHhmZSwweGM3LDB4MDMsCi0gIDB4YjAsMHhmZSwweDQ4LDB4MjAsMHg3MCwweGJiLDB4NGEsMHhmOSwweGNmLDB4MDYsMHhkNiwweDlmLDB4MjYsMHhjMCwweGNkLDB4YTIsCi0gIDB4YTEsMHg4NiwweGZkLDB4NGYsMHgwNiwweGZmLDB4M2IsMHhmNywweDM3LDB4NmIsMHgwOCwweDhkLDB4OTMsMHhhOSwweGZmLDB4YTMsCi0gIDB4ODEsMHhlNSwweGU3LDB4M2YsMHg5ZiwweDk4LDB4MTgsMHhmYywweGVmLDB4ZGMsMHhmZiwweDdmLDB4ZjUsMHhlNywweGJmLDB4ZDgsCi0gIDB4ZmEsMHgyYiwweGJjLDB4OTcsMHhkZiwweDQ5LDB4ZjgsMHgyZSwweGNjLDB4MzQsMHhmZSwweDkzLDB4ODEsMHhmNCwweGZmLDB4ZjgsCi0gIDB4ZmUsMHhmZiwweDVmLDB4NWUsMHg3ZiwweDQ5LDB4NjEsMHg3ZiwweGMxLDB4OWEsMHgwYiwweDkzLDB4ZjIsMHhlYSwweDdmLDB4ZjUsCi0gIDB4YTcsMHhiMiwweGYyLDB4MmYsMHg5OSwweGU1LDB4NzAsMHhmYywweDNmLDB4YmMsMHhmZCwweGZmLDB4MGIsMHgzZiwweDU1LDB4NTcsCi0gIDB4YWYsMHg1ZSwweDM1LDB4ZmUsMHgyNywweDgzLDB4ZmYsMHg3ZiwweDllLDB4ZmYsMHg1ZiwweGVjLDB4M2MsMHhmZSwweDFmLDB4NzksCi0gIDB4ZjgsMHg3ZiwweGU0LDB4ZTEsMHhmZiwweGM2LDB4ZmEsMHhmZiwweDFmLDB4NzksMHhmOCwweDNmLDB4ZmIsMHhmOSwweGFmLDB4MjYsCi0gIDB4N2YsMHhmZSwweDZiLDB4Y2QsMHhlNywweGZjLDB4MjgsMHg1ZSwweDQ0LDB4NTQsMHgxZSwweDExLDB4MWYsMHg4NiwweDYzLDB4MGQsCi0gIDB4OGIsMHg0ZSwweDNhLDB4NDYsMHg2YSwweGM2LDB4ODIsMHhhZiwweGMyLDB4N2MsMHhmNSwweGU2LDB4ZjMsMHg4ZCwweGE1LDB4ZjQsCi0gIDB4MjQsMHgyYywweGVlLDB4NzAsMHhmYywweDdhLDB4MGEsMHgzZiwweGVhLDB4MTAsMHhlMywweGE0LDB4YWYsMHhmMCwweDU1LDB4ZWQsCi0gIDB4OGQsMHhjMiwweDgyLDB4ZGUsMHg5NiwweDZlLDB4ZjIsMHgzNiwweGZiLDB4ZGQsMHhiNywweDljLDB4YWEsMHg1YywweDRiLDB4NTQsCi0gIDB4NjgsMHgwZSwweDk0LDB4ZGMsMHg3OSwweGUyLDB4MzEsMHhmMiwweDg5LDB4MjUsMHgzZiwweGJhLDB4MzUsMHhmNywweDEwLDB4YzQsCi0gIDB4MGQsMHhkOSwweDRiLDB4NGUsMHgyYSwweGNkLDB4NTQsMHhlZCwweDkzLDB4M2QsMHhiYywweDVlLDB4MzEsMHg1YSwweDdkLDB4NjgsCi0gIDB4MjYsMHg0OCwweDkxLDB4ZjAsMHgwMiwweDc3LDB4ODYsMHhlOSwweDFmLDB4NGIsMHhmYSwweGViLDB4NTYsMHg5YiwweGYxLDB4NTYsCi0gIDB4OTksMHhkYiwweGE3LDB4OGYsMHgzNywweGI0LDB4ZjMsMHgzNiwweDJiLDB4MjcsMHhlMSwweDQ2LDB4YzEsMHhhOSwweGI2LDB4YjgsCi0gIDB4NmMsMHg3MywweDAwLDB4MTEsMHg3YiwweDlmLDB4ZGMsMHg2OSwweGUxLDB4NDcsMHgwOSwweDEyLDB4ZGEsMHg1MywweGY4LDB4M2MsCi0gIDB4MGUsMHhkZSwweDBkLDB4YTQsMHg0NywweGFmLDB4MzAsMHhjNCwweDZlLDB4YjMsMHg3ZSwweDk0LDB4ZDcsMHgyNSwweDc3LDB4OGIsCi0gIDB4MjUsMHhlNCwweDE4LDB4ZjMsMHg0NSwweDFkLDB4Y2YsMHgxNSwweGZjLDB4MmEsMHgxOSwweDFmLDB4ZTQsMHhmZSwweGQyLDB4NzYsCi0gIDB4MWUsMHgwNCwweDljLDB4ZmUsMHgzNiwweGU1LDB4ZmQsMHg0MSwweDVlLDB4MWQsMHgyZSwweDE4LDB4NGIsMHhiYiwweGM0LDB4M2QsCi0gIDB4NjYsMHhjMywweGE1LDB4NjMsMHhjYSwweGE4LDB4NTQsMHgxNSwweDcyLDB4ZTgsMHgzMCwweDk4LDB4OGMsMHgwZiwweDJhLDB4NjYsCi0gIDB4N2MsMHg5MCwweDkzLDB4N2MsMHhjNiwweGUwLDB4MTgsMHhkYSwweGVmLDB4ZDIsMHhiZSwweDQ0LDB4ZGIsMHgyZiwweDc4LDB4MzQsCi0gIDB4ZGUsMHgzOCwweDA3LDB4MmUsMHhmOSwweGJkLDB4OGEsMHgzYiwweDY2LDB4Y2QsMHg4ZiwweDkzLDB4ZGMsMHhiYywweGRlLDB4MWEsCi0gIDB4MGYsMHg2MiwweDVlLDB4ODEsMHg2NiwweGFkLDB4YzAsMHgwOCwweDQ0LDB4YzksMHg1OCwweGZhLDB4MjYsMHg2OCwweDA3LDB4ZmEsCi0gIDB4MGMsMHhmOSwweDc5LDB4ZTAsMHhhMCwweGVlLDB4MzQsMHhlOCwweGNmLDB4NTMsMHhmYSwweDgzLDB4MmMsMHgzNSwweGZiLDB4YzUsCi0gIDB4YzgsMHg2NiwweGY1LDB4NDIsMHg1OCwweDY1LDB4ZGMsMHg4NSwweDAzLDB4ZTEsMHhiMCwweGE0LDB4ODYsMHgwMiwweDFlLDB4YTcsCi0gIDB4NGIsMHg4OSwweDMxLDB4ZDUsMHgwOCwweGU0LDB4NTksMHg3YSwweDE2LDB4NzMsMHg3ZSwweGQ0LDB4N2UsMHhjNiwweGFiLDB4NDEsCi0gIDB4ZmEsMHhkZiwweDUxLDB4OWIsMHg4YywweGIzLDB4NDMsMHhiYywweDNmLDB4ODgsMHg3NiwweDYwLDB4OGIsMHhiOCwweDkyLDB4ZGUsCi0gIDB4MDksMHgzZiwweDA5LDB4ZWUsMHg0MywweGEzLDB4ODEsMHgyZSwweDBmLDB4MmYsMHg5OCwweDljLDB4MWYsMHhhMCwweDc2LDB4ZWQsCi0gIDB4M2MsMHhmOCwweDdhLDB4OTYsMHhjZCwweDE3LDB4NGYsMHhhMiwweGZkLDB4OTUsMHgzYiwweDY4LDB4MmYsMHgxNSwweDk3LDB4YzIsCi0gIDB4YTcsMHhhMCwweGI4LDB4ZGQsMHhmMywweDZiLDB4NzgsMHg3ZCwweGE0LDB4OTgsMHg2MSwweDc3LDB4Y2IsMHgzNywweDRjLDB4ZmEsCi0gIDB4ZTcsMHhiNSwweDliLDB4OWUsMHhiYiwweDhmLDB4MDcsMHg0OSwweDMzLDB4ODcsMHhjNSwweGRmLDB4YWEsMHg5NywweGE2LDB4ZmIsCi0gIDB4NGUsMHg2NywweDdlLDB4NTIsMHgzMCwweDA2LDB4YWYsMHgwYSwweDNlLDB4OTYsMHg3NSwweGI2LDB4NjYsMHhiYywweDkwLDB4ZTYsCi0gIDB4MGIsMHg2MiwweGZmLDB4NjQsMHhmZCwweDEwLDB4MTcsMHhhZSwweGZmLDB4MWIsMHgyYywweDUxLDB4Y2QsMHg5ZSwweGJkLDB4YzAsCi0gIDB4YmMsMHhlZiwweDY1LDB4ZTksMHhlMiwweDg3LDB4ZWEsMHg4OSwweGJhLDB4MGEsMHhjZCwweGYxLDB4MjYsMHgwZiwweGQ0LDB4MGEsCi0gIDB4OWMsMHgyOCwweDJlLDB4OTIsMHg2NCwweDdmLDB4NGMsMHg4NSwweGRiLDB4ZDcsMHg4OSwweDY4LDB4MDIsMHg1YiwweDBiLDB4MDUsCi0gIDB4NDYsMHg2NiwweDg4LDB4NWMsMHg4ZSwweGZjLDB4YmEsMHg5NiwweDEzLDB4YTUsMHgxYSwweGVmLDB4OTcsMHg5YSwweDQ4LDB4YjEsCi0gIDB4YjEsMHhjNCwweDIwLDB4ZGUsMHg2NCwweGZlLDB4MmYsMHhmMCwweGI2LDB4OTIsMHg3MywweGUzLDB4ZjIsMHg5YSwweDk1LDB4YTcsCi0gIDB4ZDgsMHhhMywweDBkLDB4M2IsMHgwNiwweGVmLDB4NWMsMHg5ZCwweGZlLDB4MGUsMHg1ZCwweGNmLDB4ZTYsMHhhYSwweDZmLDB4MDUsCi0gIDB4OWMsMHhiMywweGQ0LDB4YzcsMHg0YywweGEyLDB4ZjgsMHg0YSwweDZiLDB4N2QsMHhhNCwweDU2LDB4ZDgsMHhhYiwweGU5LDB4YzYsCi0gIDB4MTIsMHhiZSwweDllLDB4NWIsMHg1NSwweGQ1LDB4YzgsMHgyOCwweGMxLDB4ZmQsMHhiMywweDk1LDB4YTgsMHhhYSwweDljLDB4NjEsCi0gIDB4NWIsMHgwZCwweDViLDB4MzksMHgzZiwweGIzLDB4OTUsMHg2NCwweDViLDB4ZWEsMHgyMywweDc1LDB4YzIsMHgzYiwweGExLDB4NmMsCi0gIDB4OTYsMHhhOSwweDNiLDB4MDcsMHhlMSwweDE0LDB4NzgsMHg5OSwweDNjLDB4OTAsMHhjMywweDFiLDB4ODUsMHgyYywweGQyLDB4MWQsCi0gIDB4MDMsMHhmMiwweDIyLDB4ZmMsMHhjNywweDE3LDB4NzMsMHg4ZiwweDU5LDB4NDUsMHhiMiwweGZlLDB4MDAsMHhlNywweDQ3LDB4NTEsCi0gIDB4OWYsMHhiMCwweDg5LDB4ODcsMHgwNSwweDM5LDB4NWYsMHg3YSwweDFlLDB4MmYsMHgwYiwweDM5LDB4MGMsMHgzZSwweDY5LDB4NWEsCi0gIDB4YjgsMHgyNiwweDVlLDB4MzEsMHg0OCwweDdkLDB4YjAsMHhhOSwweGE5LDB4ZDEsMHhkMiwweDFmLDB4NGQsMHgxOSwweGEwLDB4ODksCi0gIDB4NmEsMHg5MCwweDY5LDB4MDMsMHhkYSwweDlkLDB4YWMsMHgyYywweGU0LDB4ZTAsMHg4ZCwweGQyLDB4OGUsMHg0MSwweDc2LDB4M2QsCi0gIDB4OGYsMHg3ZiwweDQxLDB4NzMsMHhiYiwweDRmLDB4YjMsMHhiNywweDU5LDB4ZWIsMHgyMywweGQ1LDB4YWUsMHgxYSwweDI3LDB4NzUsCi0gIDB4YTcsMHg5ZiwweDgzLDB4ZTYsMHg3ZSwweDM0LDB4MzMsMHg5NSwweDgyLDB4NDIsMHhkYSwweDJjLDB4NTQsMHg4NiwweDZjLDB4ZGIsCi0gIDB4NzksMHhiYywweGFmLDB4ODcsMHg1NywweDAwLDB4OTAsMHg5MywweGFiLDB4OTMsMHhlOCwweDhmLDB4NTYsMHhhMiwweGQ1LDB4NDQsCi0gIDB4OWQsMHgwMywweDQyLDB4MzMsMHg5ZCwweDEzLDB4ZTAsMHg4ZCwweGQyLDB4YTQsMHg2NiwweGExLDB4NDgsMHgwYiwweGI0LDB4ZTEsCi0gIDB4OTUsMHg1ZCwweGI0LDB4MjQsMHhiNSwweDNlLDB4MzYsMHg5OCwweGZlLDB4MzEsMHgzNywweDJmLDB4OGIsMHhkZCwweDRiLDB4ZjIsCi0gIDB4NmIsMHhkYywweDVmLDB4YWEsMHg4OSwweDY2LDB4YTcsMHg0OSwweDBkLDB4ZmUsMHgyMiwweGNkLDB4OTYsMHg0YiwweDVlLDB4OTQsCi0gIDB4MWEsMHhiNCwweDkyLDB4YTAsMHgyYiwweGY3LDB4NWUsMHhmZiwweGE0LDB4N2QsMHhiYSwweDg2LDB4YWEsMHhlMywweGYxLDB4MjksCi0gIDB4MzIsMHgzOCwweDdkLDB4OWMsMHg5NiwweGFjLDB4OTIsMHgzZSwweDUyLDB4MDQsMHhhZCwweDkwLDB4MTMsMHgyNywweDc1LDB4YjgsCi0gIDB4MDIsMHg0YiwweDk5LDB4NTgsMHgzMiwweDE5LDB4MWYsMHhlNCwweGZjLDB4YTgsMHhjZiwweDI0LDB4NWYsMHhiNSwweDIzLDB4OWEsCi0gIDB4YTAsMHg4NSwweDA3LDB4MzcsMHhmNSwweGNiLDB4NGYsMHg0ZSwweDM0LDB4NGEsMHgzYiwweDJkLDB4NWQsMHg0ZSwweDBjLDB4N2UsCi0gIDB4OTEsMHhjMiwweDhmLDB4ZTIsMHhmYywweGIxLDB4Y2MsMHhiNiwweDY5LDB4MTcsMHhkOCwweDJiLDB4NWEsMHg1NSwweGFkLDB4MjMsCi0gIDB4OWEsMHhmMywweDFlLDB4ZGIsMHg1NSwweGY4LDB4NWQsMHhjZCwweGIxLDB4YjksMHg3MSwweDlmLDB4NzYsMHhkOSwweGUzLDB4ZDUsCi0gIDB4ZWMsMHhhZiwweDhiLDB4MjUsMHg5MywweGU3LDB4YjEsMHg1YywweDg5LDB4ZDMsMHg2ZSwweDcwLDB4YTIsMHhlMSwweDlkLDB4N2QsCi0gIDB4OTYsMHg0NiwweDIwLDB4MmIsMHg3NywweDA5LDB4MjMsMHgzZCwweDkxLDB4NDgsMHg5ZCwweDE3LDB4NjQsMHhiNiwweDI0LDB4NGUsCi0gIDB4MDcsMHgxZiwweDcyLDB4ZGEsMHgzMiwweDNiLDB4ZmMsMHhlOSwweGM5LDB4ZjgsMHhhMCwweGM5LDB4OGYsMHgyYSwweGQ0LDB4YzQsCi0gIDB4NmMsMHhkMiwweGE0LDB4MzUsMHgxNCwweGJhLDB4ZmIsMHg2ZSwweDUwLDB4ZDIsMHg1ZiwweDg0LDB4MDYsMHhhNSwweDUwLDB4OTMsCi0gIDB4YjMsMHg4OSwweDlkLDB4ZWQsMHg5NSwweGQwLDB4MWUsMHhjZiwweDIxLDB4ZDksMHhjMiwweGM0LDB4ZmEsMHg2ZiwweDliLDB4ZDEsCi0gIDB4MDEsMHgwNywweDA1LDB4Y2UsMHg0ZiwweDIzLDB4MDMsMHhiNiwweGM3LDB4NTUsMHg5MywweDVkLDB4OGYsMHhjYiwweDJlLDB4OTgsCi0gIDB4ZmMsMHg3MCwweGRlLDB4MzEsMHg0ZCwweGQ3LDB4ZjIsMHhiNywweDY0LDB4YTcsMHgyNywweGViLDB4MjMsMHg3MSwweDdlLDB4NTQsCi0gIDB4ZmMsMHhjNywweGRjLDB4MDksMHhkNiwweDBiLDB4YzcsMHgyMiwweDY2LDB4ZjQsMHg3MywweGMwLDB4ZjYsMHgzZSwweDdjLDB4ZmUsCi0gIDB4MmQsMHg0NywweDc0LDB4NDMsMHhhMSwweDM2LDB4YmEsMHhjMCwweGJiLDB4ODIsMHg0NiwweGU1LDB4NjQsMHg3ZiwweGI0LDB4MGYsCi0gIDB4ODQsMHg0MiwweGIzLDB4NWYsMHgxZSwweGNmLDB4MGUsMHg1MCwweGRmLDB4NGYsMHhhNCwweGM1LDB4ZjUsMHhjMiwweDFiLDB4NTAsCi0gIDB4NTEsMHhlYiwweGI4LDB4NmQsMHhlYiwweDM5LDB4YmEsMHg4MywweGYxLDB4OGUsMHgyYSwweGUyLDB4YzUsMHhjOSwweDdhLDB4ODMsCi0gIDB4NjYsMHg3YywweDUwLDB4ZTMsMHg2ZCwweDY4LDB4NDAsMHg1NSwweDQ2LDB4MjQsMHgyZiwweGQ4LDB4NzgsMHg2MSwweDhhLDB4N2UsCi0gIDB4NTIsMHhhNiwweDY0LDB4MzEsMHg5OSwweDU3LDB4NjgsMHhlZiwweGUyLDB4MWUsMHg1YSwweDRiLDB4N2QsMHhjOCwweGI1LDB4MmUsCi0gIDB4NWUsMHgwZCwweDkyLDB4YjMsMHhjMSwweDJiLDB4YTIsMHg0NywweDg0LDB4MjIsMHhiNiwweDMxLDB4ZDEsMHgxNiwweGQ2LDB4ZDksCi0gIDB4NDksMHgzYiwweDQ4LDB4MzksMHgzZCwweGEyLDB4MzksMHg5OSwweDFjLDB4MjcsMHg0OSwweDg0LDB4ZTIsMHg5MiwweGM2LDB4OWIsCi0gIDB4ZTYsMHg3OCwweGQyLDB4OTcsMHg5OSwweDY1LDB4MzQsMHhmZSwweDk2LDB4OTcsMHhhOSwweGQ5LDB4MGEsMHhhYiwweDQyLDB4MzcsCi0gIDB4OTQsMHhhNywweGQzLDB4ZTksMHg1ZCwweDZhLDB4YzgsMHg5MCwweDIzLDB4ODQsMHgyNCwweGViLDB4NDMsMHhjMiwweDRjLDB4NmEsCi0gIDB4OTIsMHhhMiwweGQ3LDB4YTQsMHhjZiwweDA0LDB4MWYsMHhkYiwweDY1LDB4NmMsMHhlMCwweDA3LDB4YjksMHhkMSwweGZiLDB4ZjUsCi0gIDB4NTAsMHhmMywweGY3LDB4YzgsMHg0YywweGQ4LDB4NDcsMHhmMiwweGZiLDB4NjQsMHg4OSwweGQwLDB4MjQsMHhmZiwweDJhLDB4YzIsCi0gIDB4OWIsMHhmOCwweDJjLDB4OGUsMHgzYiwweGJlLDB4MmYsMHg1ZSwweDA3LDB4OWYsMHgzNSwweGNkLDB4MGYsMHg2NSwweGFkLDB4MjksCi0gIDB4NzgsMHg0MiwweGZiLDB4Y2QsMHgzMywweDBiLDB4NTcsMHg2NCwweDk1LDB4Y2IsMHgzNywweGEwLDB4ZWEsMHg5OSwweDNmLDB4MzYsCi0gIDB4YWQsMHg0ZSwweDRlLDB4ZjYsMHgzNywweGIxLDB4Y2QsMHg0YywweGM4LDB4NWIsMHhjNywweDFlLDB4NzksMHgwOCwweDhmLDB4ZDUsCi0gIDB4OWMsMHhlYSwweDQ0LDB4ZmYsMHg1MywweGExLDB4YzIsMHhjOCwweDZhLDB4NDIsMHhjMSwweGNiLDB4MjUsMHhmNiwweDMyLDB4ZmQsCi0gIDB4OGIsMHg0OSwweDdlLDB4OTQsMHhmZiwweDQ3LDB4MWYsMHhjMSwweGQ1LDB4YTYsMHhhYSwweDc4LDB4ZDYsMHhjOCwweGI0LDB4MGYsCi0gIDB4YTQsMHhhYiwweGUxLDB4YWEsMHg5MCwweDdkLDB4YTQsMHhlNiwweDhhLDB4ZmEsMHgzMSwweGRiLDB4MzMsMHg2NCwweDdmLDB4YWUsCi0gIDB4YzYsMHg5NywweGYwLDB4OGYsMHhmNSwweDk1LDB4OWUsMHg0OSwweGY2LDB4YTcsMHhiYiwweGZlLDB4MDksMHhlMywweDQwLDB4NmMsCi0gIDB4OWUsMHg0MSwweDNmLDB4MjEsMHhkOSwweGVjLDB4NWMsMHhjYywweGJkLDB4NmEsMHg2ZSwweDdkLDB4ZjgsMHg2ZCwweDU4LDB4MGYsCi0gIDB4ZWEsMHg2MCwweDY2LDB4ODAsMHhlNCwweDZhLDB4ZmYsMHhhZSwweGU0LDB4MWIsMHg4ZSwweGVjLDB4ZWMsMHhhNCwweDdmLDB4OGMsCi0gIDB4YzcsMHgwNywweDBmLDB4NjgsMHgyNiwweDY5LDB4YjMsMHg2ZCwweGRiLDB4YjMsMHhhYSwweGRiLDB4NjgsMHhlNiwweGZkLDB4NjQsCi0gIDB4OWYsMHg4NiwweGZjLDB4YTUsMHg3NywweDFhLDB4ZTQsMHg2MSwweGY4LDB4MTEsMHhlNCwweDFmLDB4OTUsMHg0MywweDI0LDB4MTksCi0gIDB4MWYsMHgwYywweDQ5LDB4MjcsMHg0ZCwweGY5LDB4MWYsMHg0MCwweGVkLDB4MjYsMHhlOSwweGNjLDB4NmQsMHhkYywweGU4LDB4MjEsCi0gIDB4NDMsMHg0MiwweDIzLDB4ODQsMHg3YSwweDMzLDB4YjIsMHhjOCwweDM3LDB4ZTEsMHg3MSwweDcwLDB4YzYsMHhlNSwweGRjLDB4ZWMsCi0gIDB4ZmUsMHhhNCwweDdmLDB4MGMsMHhlNSwweGU3LDB4YTcsMHgyOCwweDU0LDB4ZDMsMHg4NywweDc5LDB4ZjcsMHg5MywweDVmLDB4ZjksCi0gIDB4OGMsMHg0OCwweDM3LDB4MmEsMHg5YSwweDdmLDB4MDMsMHg2NywweGM4LDB4MWUsMHhmYiwweGQ5LDB4NGEsMHhmNiwweGE2LDB4ODEsCi0gIDB4YWEsMHg3OSwweGI3LDB4YzUsMHgzZiwweGM2LDB4YjgsMHgzZSwweDYyLDB4MjYsMHg0OSwweGZlLDB4MjQsMHg3YywweGEwLDB4ZjgsCi0gIDB4MTIsMHg2NSwweGU4LDB4MmUsMHhmMSwweDhjLDB4Y2IsMHgwMSwweDcxLDB4YjcsMHgzNCwweGUyLDB4ZjEsMHhmNSwweDY1LDB4ZWQsCi0gIDB4YjAsMHhmOCwweGJiLDB4MTIsMHhmMSwweGMxLDB4NTIsMHgyZSwweGNmLDB4ODcsMHhlMSwweDc3LDB4NTAsMHhhMCwweGM5LDB4OWMsCi0gIDB4MDYsMHhmMywweDFiLDB4YjIsMHg1MCwweDczLDB4N2MsMHg0YiwweGY2LDB4NjgsMHhjNywweDRjLDB4ZmYsMHg1OCwweGUzLDB4YzAsCi0gIDB4MjQsMHgzZiwweGJjLDB4YzcsMHg4YywweGY3LDB4OTksMHhmOSwweDZlLDB4NzUsMHg0YSwweGJiLDB4ZDEsMHhhZSwweGM5LDB4MzEsCi0gIDB4NzEsMHhiNywweGQyLDB4MjIsMHgxNCwweGY1LDB4Y2EsMHg4YywweGI4LDB4OTUsMHg2NiwweGNlLDB4Y2YsMHhlOSwweDllLDB4YzIsCi0gIDB4OGYsMHgxYSwweDBmLDB4NWEsMHg3NSwweGMyLDB4ODYsMHhiYywweDZmLDB4ZTMsMHg3YywweGIyLDB4MWIsMHg1YSwweGEwLDB4MDgsCi0gIDB4MDcsMHhlMSwweDBlLDB4NWUsMHgzMSwweGM5LDB4Y2MsMHg4ZiwweDliLDB4YWMsMHg4ZiwweGMxLDB4ZjksMHg1MSwweDg3LDB4MTMsCi0gIDB4YTQsMHgyMCwweGJmLDB4ZDIsMHgxZSwweDcyLDB4NzEsMHg2ZiwweDIxLDB4YWYsMHhjNywweGVlLDB4YWEsMHg5NiwweDlkLDB4NWIsCi0gIDB4OWEsMHg3OCwweDZhLDB4OGMsMHgwMSwweGQzLDB4YWQsMHhmMSwweGMxLDB4Y2MsMHhkNSwweGVjLDB4MTIsMHhkZSwweDFmLDB4OWYsCi0gIDB4NWYsMHg4ZiwweDllLDB4NTAsMHgyYiwweDhlLDB4ZTMsMHg4YiwweDZmLDB4ODcsMHg5NywweGExLDB4Y2MsMHhiZiwweGE5LDB4NWQsCi0gIDB4ZWMsMHg5MCwweDhlLDB4YzEsMHg1ZSwweGJlLDB4MDIsMHhmMSwweGY0LDB4YzksMHhmOCwweGUwLDB4NGQsMHg5NywweGUxLDB4OTIsCi0gIDB4OTIsMHhjOCwweDhmLDB4ZDMsMHgyZSwweDZhLDB4NjUsMHg0NywweDFkLDB4YzMsMHgwNSwweGNmLDB4YTUsMHg1ZCwweDg1LDB4NDcsCi0gIDB4OGUsMHhkZiwweGFjLDB4ODksMHhmNywweDk5LDB4ZjEsMHhjMSwweDc5LDB4YWYsMHg1OSwweGUyLDB4ODMsMHgzZCwweDY5LDB4MWMsCi0gIDB4ZmYsMHgyYywweGNjLDB4NzIsMHgxYywweGNkLDB4NzksMHg0ZCwweDc5LDB4MzUsMHg1YSwweDY1LDB4YjMsMHhiZiwweGU0LDB4ZjQsCi0gIDB4YzAsMHg0OSwweDg2LDB4ODMsMHgzNywweGM0LDB4N2EsMHhmNiwweGJiLDB4NjgsMHg2OSwweGZjLDB4ZTYsMHhlZSwweDJmLDB4YzcsCi0gIDB4MjYsMHhmOSwweDBjLDB4NDcsMHhlOSwweDQ3LDB4YmMsMHhlOSwweDQ5LDB4OWUsMHhmYywweDI4LDB4ODksMHg0MywweDhiLDB4NWEsCi0gIDB4OTIsMHhjNywweDUzLDB4YmEsMHhkNSwweDE2LDB4NTYsMHg5MiwweDY3LDB4ZWYsMHhjMiwweGJkLDB4ZmYsMHgzMywweGQ1LDB4MTcsCi0gIDB4NDcsMHhlMCwweDExLDB4OWIsMHg1YywweGZmLDB4M2UsMHg5NCwweDkzLDB4N2IsMHg1NSwweDE3LDB4YzgsMHhlYSwweDc1LDB4MTEsCi0gIDB4NjgsMHgyNCwweDZlLDB4NDIsMHhkMSwweDk0LDB4MzAsMHg5OCwweGUwLDB4ZjYsMHhmNywweDQ1LDB4ODksMHg1NiwweGIwLDB4MTUsCi0gIDB4ZGYsMHhkNywweDY2LDB4ZTUsMHg0NywweGM1LDB4ODEsMHhmMywweGEzLDB4OGEsMHg3NiwweGUyLDB4ZjksMHhmZCwweDgwLDB4YmIsCi0gIDB4MjUsMHhlMywweDc5LDB4ZGIsMHhmYywweDczLDB4ZjAsMHgxZiwweDdhLDB4NjAsMHg0NywweGM2LDB4MWUsMHg1MiwweDI0LDB4OGMsCi0gIDB4NjcsMHg3MCwweDI0LDB4ZjksMHg1MSwweGY5LDB4NjYsMHgzNSwweGU2LDB4MGEsMHhkNSwweGQxLDB4MzQsMHg2ZCwweDI3LDB4OWMsCi0gIDB4NjAsMHgzZSwweDk3LDB4N2QsMHg0MywweDgxLDB4OTMsMHhmYiwweGNmLDB4M2QsMHhhZCwweDc5LDB4ZTIsMHgzNywweGQ5LDB4NWIsCi0gIDB4MDksMHhmZSwweDUyLDB4OTIsMHgxZiwweGE1LDB4NGYsMHhlNywweGZiLDB4ZTEsMHgwMCwweDk4LDB4NDUsMHgwMCwweGFlLDB4NGUsCi0gIDB4NWYsMHgyYywweGNjLDB4MWIsMHg5NiwweGZiLDB4YzksMHg2NSwweGUxLDB4NjEsMHhlZCwweDgxLDB4NjEsMHg3MSwweGIyLDB4YTIsCi0gIDB4NzgsMHgxMiwweGZmLDB4OWMsMHgzNiwweGYxLDB4OGYsMHg1NywweGNhLDB4NmEsMHg5YSwweGI2LDB4OTIsMHg2NywweDY3LDB4NjgsCi0gIDB4NzYsMHhiNiwweGZlLDB4NDMsMHgzNiwweDEyLDB4N2EsMHg2NCwweDc5LDB4ZDYsMHgxNiwweDMxLDB4MGUsMHg4OSwweGZiLDB4ZDcsCi0gIDB4YTQsMHhmMiwweGMzLDB4MGYsMHg0YiwweGNlLDB4YjgsMHhmOCwweDY0LDB4Y2UsMHgwNywweGRhLDB4MDksMHgyOCwweGE5LDB4N2QsCi0gIDB4M2IsMHg0YSwweGZlLDB4MWUsMHgyNSwweGYwLDB4M2YsMHhkNiwweGQzLDB4N2QsMHhlMSwweDM4LDB4NjcsMHg1OCwweGUxLDB4ZjMsCi0gIDB4OGIsMHhmYiwweDUzLDB4ZTIsMHg4MywweDg3LDB4MDEsMHg5YSwweDM3LDB4NDgsMHg4OSwweGI2LDB4MjAsMHhjNiwweGNmLDB4NzgsCi0gIDB4N2YsMHhiNCwweDk4LDB4YjYsMHhiYSwweGU5LDB4ZjEsMHg1YywweGYyLDB4N2UsMHhjMywweDc4LDB4YTIsMHg0YSwweDkyLDB4MWYsCi0gIDB4MzUsMHhhYywweGNjLDB4MTIsMHgwZSwweGIwLDB4N2MsMHg1ZCwweDBlLDB4OTAsMHg0MywweGIwLDB4NWUsMHhmZiwweGNlLDB4NTMsCi0gIDB4YjYsMHgxZiwweDg0LDB4NWYsMHhkMywweGY2LDB4YjMsMHgxNSwweDg1LDB4MTksMHhjYiwweGM5LDB4M2IsMHhlNSwweDhmLDB4YjEsCi0gIDB4ZDksMHgzYywweDNmLDB4ZWUsMHhjYSwweGU0LDB4ZmMsMHhiYSwweDNjLDB4ZGMsMHg2ZiwweGUwLDB4YTEsMHg1OSwweDJhLDB4YjEsCi0gIDB4ODcsMHgzZiwweDU1LDB4N2MsMHg5YSwweGNjLDB4NjksMHg3OCwweGMzLDB4Y2MsMHhjZCwweDhhLDB4ZTcsMHhhMywweGZlLDB4M2QsCi0gIDB4YTEsMHg3YSwweGNjLDB4ZmMsMHhiOCwweGM5LDB4ZjksMHg1YSwweDJlLDB4YWUsMHg4ZiwweGYyLDB4M2MsMHgyZiwweDAyLDB4ODAsCi0gIDB4NjgsMHhjNywweGUzLDB4MzMsMHhlZSwweDdlLDB4YWQsMHhlNiwweDdiLDB4NzAsMHg1MSwweGZiLDB4MmIsMHhiNiwweDYxLDB4NzgsCi0gIDB4YmMsMHg1MCwweDI0LDB4NWYsMHhjZiwweGM5LDB4ZjUsMHhlMSwweGU3LDB4ZjcsMHgxMiwweDNjLDB4ZDQsMHg5MCwweGI5LDB4NGUsCi0gIDB4MWMsMHg5MiwweDk2LDB4ODQsMHg0YiwweDU1LDB4NzcsMHg1ZiwweDhlLDB4ODcsMHg5ZSwweDgwLDB4NDUsMHhkNSwweDEwLDB4MTUsCi0gIDB4MmYsMHg0OCwweDY2LDB4ZmUsMHg0MiwweGI5LDB4ZTgsMHg5ZiwweDVjLDB4ZmYsMHg5MywweDc0LDB4M2IsMHgyZiwweGNiLDB4Y2YsCi0gIDB4OTYsMHhkNCwweDZmLDB4ZGQsMHg4ZSwweDYyLDB4MDcsMHhjZCwweGM1LDB4ZTEsMHg2YywweDg1LDB4YWUsMHgwZiwweDJkLDB4ZTIsCi0gIDB4ZmMsMHhmMCwweGQzLDB4ZTMsMHhkMCwweGM4LDB4ZTYsMHg0ZCwweGU1LDB4NDcsMHhiMSwweDdjLDB4ZjUsMHhjZSwweGU1LDB4ZTQsCi0gIDB4NzcsMHhmMCwweGFmLDB4NGMsMHg1ZCwweDQ5LDB4MDMsMHgyNCwweDRiLDB4NDUsMHhmYywweDEzLDB4YTIsMHg2YiwweGZjLDB4YmYsCi0gIDB4ZTEsMHhiZiwweGUyLDB4ZjEsMHhkMCwweDI0LDB4M2YsMHg2YSwweGE5LDB4ZDQsMHhjYSwweGNmLDB4ZTMsMHhhZiwweDZmLDB4YWMsCi0gIDB4YzgsMHgzZSwweGI1LDB4NjEsMHg3MywweDliLDB4NWEsMHg0ZiwweDczLDB4ZmQsMHhiMywweDExLDB4NmYsMHgxNywweGQ1LDB4YmIsCi0gIDB4M2MsMHhhNCwweDU3LDB4MmQsMHg0ZCwweGFjLDB4ZTcsMHg1NCwweDdlLDB4NTQsMHgwMSwweDdiLDB4ZjQsMHgxOSwweDcxLDB4MTQsCi0gIDB4ZGUsMHg4NCwweGJkLDB4MzEsMHhmYiwweDM5LDB4ZjksMHgzNiwweDEzLDB4ZmYsMHhkOCwweGY1LDB4OWMsMHg1MSwweDdhLDB4ZDEsCi0gIDB4ZWMsMHg5OCwweDU2LDB4NzAsMHgzMSwweDg1LDB4MWYsMHhkNSwweDRkLDB4OGUsMHgyOCwweDA4LDB4MDMsMHg3NiwweGMwLDB4MjAsCi0gIDB4ZjEsMHhlNSwweDM5LDB4YzIsMHg2MiwweDNjLDB4M2MsMHhkMiwweGUzLDB4NGIsMHg3NywweGYwLDB4NzgsMHg0ZCwweDIyLDB4NWYsCi0gIDB4NGMsMHhjOCwweDRlLDB4YzYsMHg2YiwweDk0LDB4MGUsMHgxOCwweDRkLDB4MmIsMHg1YiwweDgxLDB4ODcsMHhmNCwweDVjLDB4ZDMsCi0gIDB4MzEsMHg5OCwweDE1LDB4YmEsMHgzOSwweDJhLDB4OWUsMHg2MywweGM3LDB4YTIsMHhkZSwweDVhLDB4M2IsMHg2ZiwweDI0LDB4ZjEsCi0gIDB4MDYsMHgxYywweDRhLDB4ZTQsMHhjNywweDRkLDB4Y2MsMHg2NywweGQyLDB4MmEsMHg3YSwweDEwLDB4OWMsMHg0YiwweDY5LDB4MzQsCi0gIDB4ZmIsMHhlNSwweDcwLDB4MzMsMHgzMSwweGZkLDB4ZWQsMHg3ZiwweDgwLDB4YzYsMHhiOCwweDczLDB4MjUsMHhkZCwweGVjLDB4N2MsCi0gIDB4OGYsMHg4ZCwweDIyLDB4YjAsMHg5MSwweGFkLDB4ZmMsMHhhOCwweDcyLDB4MWUsMHgxZiwweDg0LDB4NzQsMHg4ZCwweGM2LDB4YzIsCi0gIDB4NjYsMHgxYiwweDhiLDB4M2IsMHhlNCwweGNkLDB4NjYsMHgzZCwweGRiLDB4MzksMHgzZCwweDA4LDB4N2IsMHg3YSwweDg1LDB4Y2QsCi0gIDB4NTAsMHg5NCwweDlhLDB4MWYsMHhhNywweDlhLDB4ZmMsMHgyOCwweDk1LDB4NTcsMHg0MywweDdhLDB4NTEsMHhlMCwweGRkLDB4ZDAsCi0gIDB4ZTQsMHgwNSwweGU0LDB4MTUsMHhmYywweGMzLDB4NTAsMHg5MCwweDJlLDB4NDAsMHhmYywweDYzLDB4NTIsMHhhNywweDk0LDB4ZWIsCi0gIDB4OTIsMHhmZSwweGY5LDB4MzUsMHgzYywweDNlLDB4ODgsMHg3OCwweDdkLDB4ZTksMHhiOCwweDdmLDB4NWUsMHg5MCwweDcxLDB4NjAsCi0gIDB4ZDIsMHhhMiwweGRjLDB4N2MsMHhkMCwweDBmLDB4MTUsMHhiYywweDYzLDB4ODgsMHg4NSwweDFmLDB4NjUsMHhkNiwweDBiLDB4YWEsCi0gIDB4ZTIsMHg0ZCwweDYwLDB4NGYsMHgyMywweDEwLDB4MzIsMHhhYiwweDYxLDB4ZmYsMHg3NywweDQ0LDB4ODAsMHg4NywweDgzLDB4OGUsCi0gIDB4N2UsMHhiMywweDUwLDB4YjYsMHgxOSwweDIxLDB4ZmQsMHg2OCwweDEyLDB4ZmYsMHg5NCwweDliLDB4ZjMsMHgxNywweDJlLDB4YjUsCi0gIDB4ZjcsMHg0ZiwweGJiLDB4MDAsMHhjNywweDk0LDB4YWEsMHg0MCwweGQ2LDB4ZWIsMHg4ZCwweGNmLDB4MzIsMHhiYywweGMzLDB4NzIsCi0gIDB4YzcsMHhhZiwweDQ0LDB4NDQsMHg0NCwweGQ1LDB4MzgsMHhiZiwweDdmLDB4ZGEsMHg0NywweGE5LDB4ZjEsMHg0MSwweGE3LDB4NmEsCi0gIDB4Y2YsMHg2YywweDRhLDB4OGYsMHhhYiwweDExLDB4MjgsMHhiMSwweDg5LDB4NjEsMHhkYywweDMyLDB4ZGQsMHg1MCwweDkyLDB4MmIsCi0gIDB4ODcsMHg5ZCwweDgzLDB4M2EsMHg1MywweDhiLDB4MzgsMHgwMywweDMzLDB4YzksMHg4ZiwweDBhLDB4ZjAsMHhmOCwweGEwLDB4Y2IsCi0gIDB4ZGQsMHg2NywweGNiLDB4NGQsMHhlNywweGQ5LDB4YTYsMHhlZSwweGE1LDB4MzcsMHg2NiwweDgzLDB4YzQsMHgzNiwweDRiLDB4ZWUsCi0gIDB4ODAsMHhjYywweGUzLDB4YTEsMHgzYiwweGQ0LDB4YzIsMHhkNCwweGY4LDB4ZTAsMHhiNiwweDA0LDB4M2YsMHhlYSwweGVjLDB4ZjUsCi0gIDB4NmQsMHhlOSwweDQzLDB4OGMsMHhmMywweGEzLDB4OTYsMHg2YywweDBlLDB4MTcsMHg3MywweDg0LDB4ZTksMHg5NywweGY3LDB4MjAsCi0gIDB4MTAsMHhkYSwweDY1LDB4YWUsMHg2NywweGI2LDB4YTUsMHgzZSwweDY0LDB4YTIsMHhkZSwweDc1LDB4MjAsMHg2YiwweGJiLDB4ZmYsCi0gIDB4YmQsMHgwNSwweGM3LDB4OWEsMHg3YywweDdmLDB4YjMsMHgyYywweDJhLDB4M2UsMHhjNSwweGFmLDB4ZDQsMHgzYiwweGEyLDB4YzIsCi0gIDB4MzksMHhmMiwweGJlLDB4ZjksMHhiZSwweDE2LDB4N2UsMHg1NCwweDFmLDB4ZGYsMHgwZiwweGE0LDB4NTIsMHg3MywweDZjLDB4MTEsCi0gIDB4Y2YsMHg5MSwweDUxLDB4ZDUsMHhmNywweDkwLDB4MjMsMHhhZiwweDg1LDB4ZDcsMHg0NywweDMyLDB4MGIsMHgyNSwweGY1LDB4ZGUsCi0gIDB4ZmIsMHgwNiwweDRjLDB4ZTEsMHg0NywweDUxLDB4MzMsMHgzZSwweDU4LDB4YTYsMHhkYSwweGQ3LDB4ODksMHg3YSwweGZkLDB4ODgsCi0gIDB4NTksMHg5NiwweGFhLDB4MjAsMHg5ZiwweDM3LDB4MGEsMHg5OSwweGI5LDB4MTEsMHg4MSwweGE4LDB4N2EsMHg0NiwweGYxLDB4YTYsCi0gIDB4ZTYsMHhjNywweGYxLDB4ZjgsMHhlMCwweDIxLDB4ZGMsMHhjZiwweDc1LDB4ZWYsMHhlNiwweDFjLDB4YTQsMHgzZiwweDIxLDB4ZjMsCi0gIDB4ZjQsMHhjZSwweDIxLDB4N2YsMHg0NSwweGY5LDB4ODYsMHhmMCwweDJkLDB4YmMsMHg1MSwweGVjLDB4NmQsMHhlYywweDE5LDB4YzksCi0gIDB4NGMsMHg5NCwweGYzLDB4NGYsMHhlZSwweDFmLDB4MmEsMHgyZCwweGM1LDB4ZjMsMHg1MiwweDY4LDB4NjQsMHhiOCwweGM5LDB4MzMsCi0gIDB4YzIsMHg1ZSwweGRlLDB4MzYsMHgyNSwweGNmLDB4OTYsMHgwNiwweDhkLDB4NTEsMHgxYywweGNjLDB4YjIsMHg2ZCwweDI0LDB4M2YsCi0gIDB4NmQsMHgzMiwweGNmLDB4Y2IsMHhkMSwweDQ5LDB4ZmMsMHgwMywweGNhLDB4ZmQsMHg3MCwweDQwLDB4ZTUsMHhkZCwweGMxLDB4ZmMsCi0gIDB4ZGIsMHg4NCwweGM3LDB4ZDQsMHhlMiwweDk4LDB4NGQsMHg4ZCwweGZkLDB4MTgsMHhkMiwweDYxLDB4NzYsMHg5YywweGFlLDB4MDksCi0gIDB4NmYsMHhhNywweDRmLDB4MTMsMHgwMSwweGNmLDB4NmYsMHg3YSwweDIwLDB4MTksMHgxZiwweGRmLDB4ZjYsMHgzNSwweGI4LDB4YWEsCi0gIDB4ZGYsMHgxYSwweGNhLDB4NWMsMHgyMywweDNlLDB4MjEsMHhmZCwweGE5LDB4YTMsMHgyYSwweDM0LDB4NzMsMHhiOSwweDUwLDB4NDYsCi0gIDB4NWUsMHg4ZSwweGZlLDB4MzAsMHhlNCwweDNlLDB4MjMsMHgxZSwweDIxLDB4YmYsMHg2MSwweDliLDB4ZTMsMHhjYiwweGQ2LDB4NGMsCi0gIDB4NGIsMHhmMiwweGEzLDB4NmMsMHgzMywweDc2LDB4ZDMsMHg0YiwweGI5LDB4M2UsMHhkZSwweGVkLDB4OGIsMHg1NywweDAzLDB4YTgsCi0gIDB4MDIsMHg3YiwweDVjLDB4NDQsMHhmOSwweDkzLDB4M2YsMHg0ZCwweDEzLDB4ODcsMHg3OSwweGJmLDB4NGIsMHg2ZCwweDU2LDB4NmEsCi0gIDB4N2UsMHg1YywweDI4LDB4ZjcsMHgwOCwweGJjLDB4YzUsMHgxNiwweDIyLDB4YmUsMHgxMiwweDJhLDB4YTQsMHg1NywweDM3LDB4NTQsCi0gIDB4ODUsMHhiMiwweGNlLDB4N2MsMHhiOSwweDQyLDB4NzksMHhhNSwweGFkLDB4MmEsMHhkZiwweDcxLDB4NDYsMHhmNCwweGMxLDB4N2IsCi0gIDB4YmYsMHgyYSwweDNkLDB4YmIsMHhjOSwweGNhLDB4OGYsMHg3YSwweDA2LDB4ZjEsMHhjYywweGYzLDB4MmMsMHgzZiwweGVkLDB4OWUsCi0gIDB4ZmYsMHgyZSwweGFlLDB4ZDEsMHhkNiwweDRmLDB4MmYsMHg4ZSwweDgwLDB4NDEsMHhmMiwweDI0LDB4OTYsMHg1NywweGJjLDB4NDEsCi0gIDB4ZmUsMHg1NSwweDM4LDB4NTcsMHhmZCwweDhjLDB4ZjEsMHhkNiwweDI3LDB4NTMsMHhlMywweDgzLDB4YjAsMHg4MywweGM5LDB4MGYsCi0gIDB4ZGUsMHhhMSwweGE4LDB4NGYsMHhkMywweGUyLDB4NmEsMHhlMSwweDRiLDB4MDgsMHgxZSwweGQ3LDB4NGIsMHhjNSwweDkwLDB4MTEsCi0gIDB4MjQsMHhjYiwweGI1LDB4YjUsMHhlYSwweDZjLDB4NmUsMHhjYSwweGY1LDB4NGUsMHhjZSwweGQ3LDB4NzIsMHg1YiwweDg1LDB4YzMsCi0gIDB4YTAsMHhkMiwweDFiLDB4NmUsMHhiZCwweDZlLDB4MjUsMHg2YiwweDY5LDB4MjgsMHg2MSwweDE5LDB4YzUsMHhjNCwweGI1LDB4YWEsCi0gIDB4NWQsMHg3MywweDhmLDB4YzgsMHhiYSwweDMzLDB4MDQsMHg3YiwweDg0LDB4NDIsMHhlMywweDg0LDB4ODcsMHhiYywweGQ2LDB4MzQsCi0gIDB4MzEsMHhkZiwweDM1LDB4N2QsMHg4OCwweGYzLDB4YTMsMHhiYSwweDZlLDB4ZWUsMHgxNiwweGJmLDB4NDAsMHgzZSwweDY2LDB4YmUsCi0gIDB4M2EsMHg0NywweDliLDB4M2MsMHg4NywweGI0LDB4MzAsMHg1ZiwweGM4LDB4MTEsMHg5MSwweDFmLDB4OTAsMHhmZSwweDQ4LDB4MzgsCi0gIDB4ZmYsMHg4NCwweDljLDB4NjIsMHgxMywweGVmLDB4YWIsMHgwYiwweDVjLDB4ZGUsMHg1NiwweDQ0LDB4MWQsMHgxZSwweGYxLDB4N2QsCi0gIDB4MGUsMHgxNCwweGI3LDB4NjQsMHhiNSwweGEzLDB4MTgsMHg3ZiwweDJiLDB4ZTAsMHhlYiwweGU3LDB4NjUsMHhiMSwweGQ1LDB4NGIsCi0gIDB4NjAsMHhmMiwweGMzLDB4OTMsMHhmYywweGE4LDB4N2MsMHgxMywweGZmLDB4MmMsMHg0MiwweGViLDB4YmUsMHhmMSwweDYxLDB4ZWQsCi0gIDB4NTUsMHhjZSwweGM2LDB4MGMsMHg0ZSwweDJiLDB4ODQsMHg5MywweDUwLDB4YWMsMHhkOSwweDBkLDB4NzEsMHgzMSwweDdjLDB4YWMsCi0gIDB4NmMsMHg0NSwweDdkLDB4NDcsMHhmNCwweGM5LDB4ZmUsMHhiMCwweDNiLDB4NGMsMHg3ZSwweDk0LDB4NTMsMHg3MSwweDNjLDB4ZTcsCi0gIDB4ZGMsMHg4NSwweGRhLDB4Y2QsMHhhNywweDQ2LDB4YjYsMHg4NywweDBiLDB4YTAsMHgyZiwweDM0LDB4NDcsMHhhNSwweDExLDB4MjcsCi0gIDB4NmYsMHg3MywweGMxLDB4ZjUsMHg1NywweGJhLDB4MDUsMHhmZiwweDA4LDB4N2MsMHg3ZSwweDUxLDB4MmQsMHg4YSwweDI5LDB4MGUsCi0gIDB4N2IsMHg5YywweDJiLDB4ZjMsMHhiNiwweDkxLDB4NjcsMHhlMCwweDcxLDB4NTYsMHhlMiwweDQxLDB4ZWIsMHg2NCwweGI3LDB4YmEsCi0gIDB4MTMsMHgzOCwweGMzLDB4MzMsMHg1YiwweDRmLDB4ZjIsMHhhMywweDE0LDB4YzQsMHhkYiwweDZhLDB4MDgsMHg2YywweDBhLDB4MWEsCi0gIDB4NTEsMHg1YiwweDc5LDB4NWIsMHgyMiwweGIwLDB4MzUsMHhjMSwweDY2LDB4YTUsMHg5MCwweGZiLDB4ZjUsMHgyMiwweGE0LDB4OTEsCi0gIDB4ZWUsMHhlZSwweGE5LDB4YzEsMHhmZCwweGQ2LDB4MzAsMHhiMSwweGZhLDB4MjQsMHgwZiwweDNmLDB4YmEsMHhhYiwweDAyLDB4ZTQsCi0gIDB4YTgsMHhkOCwweGExLDB4OWMsMHgzMCwweGQ5LDB4MDgsMHg0NCwweDM3LDB4ZWIsMHhiMywweGI5LDB4YTIsMHg2MiwweDQ0LDB4ZmEsCi0gIDB4OTgsMHhkNywweDQ3LDB4ZGEsMHgyNywweGVhLDB4NGYsMHg0ZCwweGM2LDB4MDcsMHgzNywweDI3LDB4NjgsMHhlMSwweDhlLDB4ZmUsCi0gIDB4OWEsMHg2ZSwweDllLDB4ZGYsMHhjNCwweGYzLDB4ZGQsMHhlYSwweDUxLDB4MjIsMHhjZSwweGUzLDB4ODMsMHg4NywweDcxLDB4YzUsCi0gIDB4MTYsMHgxYSwweDhlLDB4ZjMsMHgyZiwweDBjLDB4NWEsMHhmYSwweGEzLDB4N2QsMHg2NCwweGUyLDB4NDMsMHhmNywweDg4LDB4NzgsCi0gIDB4OGUsMHg1ZSwweGY1LDB4NTQsMHg0OSwweGY2LDB4NDEsMHhmMSwweDNjLDB4OGMsMHhhOSwweGE1LDB4OWMsMHhmZiwweGZjLDB4MjcsCi0gIDB4NzgsMHgwNSwweDRhLDB4MjksMHg1ZSwweGIxLDB4ZjQsMHg4NywweGRkLDB4ZjYsMHgxMSwweDdkLDB4M2UsMHhlNCwweDI0LDB4YjQsCi0gIDB4MGIsMHgyNCwweGI2LDB4YzksMHg1MywweGMyLDB4NjgsMHhhNywweGYzLDB4NWQsMHhlNSwweDcwLDB4N2YsMHhkNSwweDE5LDB4M2EsCi0gIDB4YWMsMHgwZCwweDQwLDB4Y2IsMHg1MSwweGE3LDB4ODcsMHg3NiwweDVhLDB4ZjIsMHhlMywweGZhLDB4ZTAsMHhhNCwweGI0LDB4ZjcsCi0gIDB4NGUsMHg2NywweDVmLDB4YTcsMHhlNywweGE1LDB4NDIsMHg3ZCwweDI3LDB4YjgsMHhhOSwweDhkLDB4NzcsMHg5NywweDNjLDB4MjQsCi0gIDB4YTksMHg0NywweGU3LDB4N2EsMHg5YywweGJkLDB4YWMsMHg1MSwweDUzLDB4YTUsMHg4MCwweGVhLDB4M2MsMHgzYSwweGI5LDB4N2YsCi0gIDB4MTIsMHhmYywweDcwLDB4ZTcsMHg2OSwweDFhLDB4NWIsMHhkOSwweGMxLDB4ZjMsMHgwZCwweGQ5LDB4ODYsMHhhNywweGM4LDB4YTAsCi0gIDB4NzIsMHgzOCwweGUxLDB4NTEsMHgxOSwweGUwLDB4NzgsMHhmMiwweDM4LDB4ZTUsMHhmZCwweDYxLDB4MjcsMHhkZSwweGI3LDB4N2EsCi0gIDB4ZmEsMHgxMCwweGZkLDB4ODQsMHg3NSwweGY1LDB4ZGIsMHg2MywweDU5LDB4YjMsMHhlMSwweDY3LDB4NjAsMHgxZSwweDljLDB4NzcsCi0gIDB4ZDMsMHgyZSwweDFhLDB4ZGUsMHg5ZSwweGQ2LDB4OTgsMHhmOCwweDllLDB4ZmYsMHgxOCwweGYzLDB4ODAsMHg1YiwweDE3LDB4ZmIsCi0gIDB4NmIsMHgyZCwweGZjLDB4MjgsMHgxOCwweGRkLDB4ZTYsMHhlMywweDI0LDB4ZjksMHhjYSwweGQ2LDB4OGYsMHhjMSwweDM3LDB4OWMsCi0gIDB4MzksMHhkMiwweDM4LDB4ZmMsMHg4ZCwweGFiLDB4Y2EsMHgzNCwweGUzLDB4ZTYsMHhmMSwweDQyLDB4MDEsMHgzYSwweDQyLDB4YTMsCi0gIDB4NTQsMHg3ZSwweGQ0LDB4MjgsMHgyZiwweGZiLDB4MTMsMHgxMywweDU3LDB4ZTAsMHg3ZSwweGE4LDB4MGMsMHhkYSwweGY3LDB4ZTUsCi0gIDB4MGMsMHhkNSwweDVlLDB4MTQsMHhiYywweGM2LDB4YjQsMHhkOCwweGQ3LDB4MGIsMHhiNSwweDEzLDB4Y2MsMHgzYiwweGRkLDB4YmUsCi0gIDB4NzMsMHg0YSwweDdmLDB4ZDgsMHg4MywweDE0LDB4ZjEsMHg2ZCwweDRjLDB4ZTgsMHg4NSwweDRkLDB4NjksMHgwZiwweGYwLDB4MzYsCi0gIDB4MzEsMHgxZiwweGMzLDB4ZGUsMHg4ZSwweDg1LDB4MDYsMHgwMiwweGVmLDB4YmYsMHg1NywweDFhLDB4NzksMHg3ZiwweGM2LDB4NGUsCi0gIDB4OTIsMHhhYywweDhmLDB4ZDQsMHg4NywweGYyLDB4NjcsMHg0ZiwweDkzLDB4YWEsMHg2NCwweGM0LDB4YTAsMHg5NywweGE3LDB4NTEsCi0gIDB4MDAsMHhkOCwweGIzLDB4NWYsMHgzNCwweDFiLDB4ZWIsMHhjOCwweDFlLDB4MjgsMHg2YywweDMzLDB4MWQsMHhiZSwweGFhLDB4YTUsCi0gIDB4M2YsMHhlYywweGIwLDB4ZjIsMHgzNSwweDc4LDB4OTYsMHhlNSwweDc3LDB4ZDAsMHhlZiwweDkzLDB4MWYsMHhmMywweGIyLDB4MDAsCi0gIDB4YWUsMHhjOCwweDlhLDB4NzUsMHhhZiwweGMzLDB4ODEsMHhiNiwweGQ5LDB4NzEsMHhmMSwweDlmLDB4YzgsMHg1NywweGI1LDB4NGQsCi0gIDB4OGQsMHgzYiwweDc0LDB4ZmEsMHgzZSwweGIxLDB4ZDYsMHg0NywweGJhLDB4MDcsMHgzZSwweDYxLDB4MzEsMHgyMywweGQzLDB4NDMsCi0gIDB4NWUsMHg4NiwweDVmLDB4NDcsMHhkZCwweDAzLDB4NmUsMHg1MSwweDM0LDB4ZTAsMHhmYywweGJkLDB4OWUsMHg0MSwweGM3LDB4MjEsCi0gIDB4ZDEsMHgwNSwweDQ2LDB4YmUsMHg0NywweDczLDB4ZTcsMHg4YiwweDk2LDB4ZmUsMHhiMCwweDMzLDB4OWUsMHhkMywweGZlLDB4MzksCi0gIDB4Y2EsMHg0MSwweGUwLDB4OTcsMHgwNywweDRjLDB4YjQsMHgzMywweDZkLDB4NGYsMHg0ZCwweDVjLDB4ZmQsMHgzNCwweGI3LDB4ZWEsCi0gIDB4MjUsMHg0NywweGVjLDB4ODUsMHhlMSwweGVjLDB4M2YsMHg5MSwweGM1LDB4YmQsMHg4ZSwweDE1LDB4NzIsMHgzMiwweDNmLDB4OGUsCi0gIDB4NzIsMHhmYywweGEzLDB4YTMsMHgzNiwweGVjLDB4MTYsMHgyNSwweGY4LDB4ZTMsMHg4MywweDNlLDB4YzEsMHhkNiwweGIwLDB4NzUsCi0gIDB4MjgsMHg3YSwweDllLDB4NzUsMHg1ZCwweDVjLDB4MWEsMHg2YiwweDI5LDB4ODQsMHgxNywweGMwLDB4OWIsMHhiNywweDU0LDB4YWYsCi0gIDB4NDksMHhkYSwweDc3LDB4N2QsMHg3OSwweGRiLDB4NjEsMHgyZiwweGNkLDB4NjcsMHg3NCwweDU4LDB4Y2MsMHhhNSwweDJmLDB4ZGIsCi0gIDB4OGIsMHgwNSwweGY5LDB4MjEsMHhmMiwweGI2LDB4N2UsMHgwMCwweDZlLDB4MzUsMHgyMiwweGY1LDB4NjQsMHgwMSwweDU5LDB4MjcsCi0gIDB4YTgsMHg0ZCwweGFlLDB4OTAsMHhjZCwweDNiLDB4YjksMHg5ZSwweDI2LDB4M2YsMHhhYSwweDI5LDB4OWYsMHhkNywweDA3LDB4MjgsCi0gIDB4ZTMsMHg2NSwweDMwLDB4ZTMsMHhiNiwweDQwLDB4ZjYsMHgzYiwweDkxLDB4ZTcsMHgxYiwweDQyLDB4ZWYsMHhkMywweDFmLDB4OTAsCi0gIDB4ZWIsMHg1MCwweGY3LDB4ZTYsMHg4NywweGU4LDB4YTAsMHhhNSwweDNlLDB4NDksMHgxZCwweGUyLDB4OWYsMHhiZCwweDUxLDB4ZDMsCi0gIDB4YmUsMHhhOCwweDg1LDB4NDYsMHhhMSwweGM0LDB4NTgsMHhiMiwweDgwLDB4OWMsMHgxNCwweGY2LDB4MzIsMHhiMywweDAyLDB4NGMsCi0gIDB4M2EsMHg4NCwweGRmLDB4NTYsMHhjZiwweGUwLDB4N2EsMHgyNiwweGYxLDB4YzksMHhlMCwweDBjLDB4ZGUsMHgwZCwweDc2LDB4MmYsCi0gIDB4MjcsMHg4MSwweGU3LDB4MTksMHgxZiwweDkwLDB4YWEsMHgxZiwweDY1LDB4ZTksMHgzOSwweGVmLDB4YWIsMHg1NywweDg4LDB4OTcsCi0gIDB4NmQsMHhkNywweGM1LDB4ZGIsMHg5NCwweDk3LDB4MzQsMHhlZiwweDM2LDB4NzcsMHg0OCwweDVjLDB4NjQsMHhlOSwweDBmLDB4OTIsCi0gIDB4ZTAsMHhhYiwweDJjLDB4NDMsMHgzNSwweDgyLDB4NjAsMHg5ZCwweGEzLDB4OWQsMHhjNiwweDM4LDB4MWIsMHg4OSwweGUyLDB4MDAsCi0gIDB4YzQsMHg3OCwweDY4LDB4ODQsMHgzYywweDM3LDB4MzUsMHgzZiwweGNlLDB4ZDQsMHg4ZiwweDljLDB4ZTQsMHhkYywweGMxLDB4MTMsCi0gIDB4YzksMHhiNSwweGQ2LDB4MmQsMHg3OCwweDRjLDB4OGUsMHhmNSwweGZhLDB4MTIsMHg0NCwweGE5LDB4NjMsMHhiOCwweDkxLDB4ZWMsCi0gIDB4ZDEsMHgxYSwweDMxLDB4MzUsMHgzZiwweDBlLDB4NjEsMHhjOSwweDc4LDB4NWIsMHgyZSwweGE3LDB4ODYsMHhkNiwweGQ2LDB4NDksCi0gIDB4NjgsMHhmNiwweDliLDB4OGUsMHg4OCwweGI0LDB4ZTUsMHg2OCwweDdmLDB4ZjEsMHg1ZiwweDI1LDB4ZWIsMHgyMywweDk5LDB4ZjgsCi0gIDB4NDcsMHgyYiwweGUxLDB4NmQsMHhiYywweDNhLDB4ZDAsMHhiYSwweDZjLDB4MzcsMHg1YywweGJjLDB4MmMsMHg0MCwweDczLDB4YTIsCi0gIDB4MmMsMHg4MCwweDliLDB4YjQsMHhhOCwweDY2LDB4ODcsMHhhZiwweDNiLDB4YTYsMHhlMCwweDFmLDB4NWUsMHgxZiwweDg5LDB4YmMsCi0gIDB4MzcsMHg0MSwweDhiLDB4M2EsMHg0NywweDFhLDB4MjUsMHhlZSwweDExLDB4YmEsMHg5NywweDE3LDB4MjIsMHg1MCwweDM1LDB4ODQsCi0gIDB4NDYsMHg1YSwweDEyLDB4ZmYsMHg5OCwweGY5LDB4NzEsMHg5NSwweDFjLDB4ZWQsMHhlOCwweGY0LDB4NGMsMHg4MiwweDBkLDB4OTUsCi0gIDB4YTgsMHgwZiwweGI5LDB4MGMsMHg2ZCwweDFhLDB4M2EsMHg5ZSwweGIxLDB4ZjUsMHhiNSwweDY0LDB4N2UsMHhkYywweDhjLDB4ZjEsCi0gIDB4MjYsMHg2OCwweGZkLDB4MDUsMHgxNywweGNjLDB4ZmMsMHhiOCwweDRkLDB4YmMsMHhhZCwweGQ1LDB4NjUsMHg4ZCwweGQ3LDB4ODcsCi0gIDB4MTQsMHgyZiwweDk4LDB4ODMsMHg0ZCwweDQxLDB4NmIsMHg3ZiwweDEwLDB4Y2UsMHg4ZiwweDhhLDB4OTYsMHg3ZSwweGM5LDB4MWQsCi0gIDB4MjUsMHhhYiwweGU4LDB4ZTMsMHhhYSwweDM3LDB4YjgsMHg5NCwweDI3LDB4MTIsMHg1ZSwweDU2LDB4YmQsMHhjYiwweGVkLDB4M2YsCi0gIDB4MjYsMHhiNywweGUyLDB4YTAsMHgyYiwweDYwLDB4NGYsMHhjOSwweDhmLDB4Y2IsMHg4YiwweDRiLDB4ZGQsMHhmZCwweDZjLDB4NDEsCi0gIDB4MjYsMHgyZiwweDkzLDB4MWIsMHgyOSwweDcxLDB4NTIsMHg4YSwweGYyLDB4NTAsMHgzYSwweGE0LDB4MzksMHhhOSwweDJkLDB4NGMsCi0gIDB4NTAsMHg0NiwweGRmLDB4ZTcsMHg1NCwweDY4LDB4NGEsMHg3ZiwweDU4LDB4Y2UsMHgwZiwweDU3LDB4NTUsMHg4ZCwweDZlLDB4ZDksCi0gIDB4ZDAsMHhhMSwweGUzLDB4ZmIsMHgwNiwweDAyLDB4YmMsMHgwYywweGQ0LDB4OWUsMHhlOSwweDlkLDB4Y2IsMHhlOSwweDc1LDB4YTQsCi0gIDB4NTAsMHhkOSwweDAzLDB4M2IsMHg2ZSwweDQ3LDB4ZTAsMHg5ZCwweGVjLDB4MGYsMHhiYiwweDRkLDB4ZWEsMHhlMCwweGYyLDB4YTcsCi0gIDB4M2EsMHg4MywweGU3LDB4MWIsMHgzNiwweDA4LDB4ZWQsMHhjYiwweDIzLDB4NTEsMHgzZiwweGJmLDB4NTIsMHhjNCwweGViLDB4NDcsCi0gIDB4MTUsMHhiYSwweGYwLDB4OGIsMHhkYywweDQ3LDB4ZmIsMHhjOSwweGI5LDB4MjksMHhmNSwweDIxLDB4NjMsMHg3NywweGQ4LDB4OTUsCi0gIDB4ZWMsMHg2OSwweDIxLDB4NWUsMHgwOCwweGMyLDB4YWQsMHg4OCwweGIzLDB4OTUsMHhkMSwweDlhLDB4MjIsMHg2ZCwweDY5LDB4NTQsCi0gIDB4OWUsMHgwMywweGEzLDB4ZDMsMHhiZCwweGY1LDB4YWUsMHhhOCwweDkwLDB4ZTQsMHg2MywweGY0LDB4MDksMHg4OSwweGZkLDB4ZTAsCi0gIDB4ODgsMHhjMiwweDUzLDB4ODgsMHg4ZSwweDJhLDB4NTcsMHg3MCwweDdmLDB4OTcsMHhmNCwweDg5LDB4NWUsMHhhNiwweGJkLDB4YWEsCi0gIDB4ODgsMHhkZiwweGM4LDB4ZmUsMHg4NCwweDFkLDB4MzEsMHhmMSwweDhmLDB4ODUsMHg1ZiwweGE3LDB4YzMsMHhiMCwweGVhLDB4NTUsCi0gIDB4ZGQsMHhlYywweGNiLDB4NjcsMHg3OSwweDM1LDB4NmMsMHhjNSwweGNkLDB4MWIsMHhmNSwweDhlLDB4ZTAsMHhmZSwweGEyLDB4MjYsCi0gIDB4M2YsMHg4YSwweGM2LDB4NzgsMHg3ZiwweGQ4LDB4YTksMHhmOSwweDcxLDB4MDUsMHgzYSwweDM1LDB4ZGQsMHgzZSwweDUyLDB4NDksCi0gIDB4MDMsMHhlZCwweDIwLDB4N2YsMHg5NCwweDhlLDB4ZjQsMHg3NCwweGIxLDB4NGMsMHgzZCwweGZiLDB4MGMsMHg2YywweDVjLDB4ZTksCi0gIDB4NjQsMHg1NCwweGI3LDB4ZDYsMHg4NywweDQ0LDB4ZjksMHhiMywweDk3LDB4ZTksMHhlMywweGRkLDB4NzMsMHhkMCwweGZlLDB4ZmEsCi0gIDB4YzksMHhjMiwweGY0LDB4ZDYsMHhhNiwweGFlLDB4ZTUsMHg2MCwweGU0LDB4NzksMHg4OCwweDQxLDB4NTAsMHgzZSwweDFiLDB4NTQsCi0gIDB4MGQsMHgxZiwweDRmLDB4ZjYsMHgwMywweGU1LDB4ZjgsMHg0NywweGNiLDB4M2YsMHhjYSwweGRiLDB4ZmEsMHhiMCwweGY1LDB4YzQsCi0gIDB4YTQsMHg0OSwweGZmLDB4MTYsMHhmNiwweDgzLDB4ZDAsMHg5NywweGYxLDB4NTAsMHhmNiwweDI4LDB4NGEsMHgzMCwweGIzLDB4YmUsCi0gIDB4ZDksMHhlMCwweGU0LDB4ZmMsMHg0OCwweDA0LDB4ZjEsMHgwZiwweGRiLDB4MTMsMHg3NywweGFmLDB4MjEsMHg1NywweGQ0LDB4ZjUsCi0gIDB4ODMsMHg5NSwweDFmLDB4NjQsMHgyZCwweDE3LDB4OWYsMHg1MCwweDNmLDB4NjcsMHhhNSwweGU3LDB4ZWQsMHgwZiwweDM3LDB4YmUsCi0gIDB4MDYsMHgyZiwweGIzLDB4OTgsMHg2ZSwweGFmLDB4MTMsMHgzZiwweDcwLDB4NGUsMHhjYywweGE3LDB4MzMsMHg0YywweGZmLDB4Y2YsCi0gIDB4NWIsMHg4ZSwweDU4LDB4ZTksMHg4NywweGVjLDB4NTIsMHhjOCwweDY3LDB4M2MsMHgxYSwweDIzLDB4ZWYsMHg2ZiwweGVmLDB4ODIsCi0gIDB4OGEsMHgzMywweDhlLDB4ZmQsMHg2MiwweDFmLDB4ZGEsMHg1MywweDQ3LDB4ZDgsMHgzYywweDNkLDB4MjcsMHg1OSwweDFmLDB4OTIsCi0gIDB4MzQsMHgxZCwweDgxLDB4Y2IsMHhiYywweDJjLDB4ZjYsMHg0OCwweGEzLDB4MmYsMHhmNCwweDJhLDB4ZjMsMHg5ZSwweGIzLDB4NWYsCi0gIDB4MTYsMHhjZSwweDliLDB4MTEsMHg4ZCwweGRhLDB4NTEsMHgzYywweDg2LDB4YmYsMHg4YiwweGVkLDB4OGQsMHhiNywweDc2LDB4NWIsCi0gIDB4ZjMsMHhlMywweGYyLDB4YjYsMHg2YiwweGY4LDB4ZDEsMHgzNSwweGZhLDB4YTAsMHgzOCwweGQzLDB4ZDgsMHhkOSwweGFlLDB4MGUsCi0gIDB4ZTIsMHhkMywweGZlLDB4MTYsMHg5ZSwweDU1LDB4ZDUsMHgzZSwweGNhLDB4ODksMHhlMiwweGViLDB4M2QsMHhmOSwweDdkLDB4MjgsCi0gIDB4NmEsMHgzZSwweDk4LDB4ZWMsMHg0NywweGNmLDB4ZjEsMHhjZiwweGIzLDB4MzAsMHhiYiwweDllLDB4MGUsMHgxMywweGRlLDB4MTYsCi0gIDB4MmQsMHhiZiwweDM3LDB4MjMsMHgxOCwweGVlLDB4ZDcsMHhmNiwweDRiLDB4YjMsMHg4ZCwweGMwLDB4ODMsMHhmZSwweDYxLDB4ZmYsCi0gIDB4NjMsMHg5ZSwweDUwLDB4NDMsMHg2MCwweDhkLDB4MzUsMHgzZiwweDBlLDB4ZTUsMHg0ZiwweDBjLDB4OWUsMHhlMiwweDZjLDB4ZjAsCi0gIDB4MTIsMHhlZCwweDY3LDB4YTAsMHhiZSwweDg4LDB4YzAsMHhiMiwweDhmLDB4NzYsMHhmNSwweDliLDB4MTIsMHhlOSwweDAzLDB4NWUsCi0gIDB4NzgsMHg5YywweGQxLDB4ZDQsMHhmYywweDM4LDB4YjMsMHgwOSwweDZjLDB4YzAsMHgzZSwweDJjLDB4MmUsMHg5NiwweDM2LDB4NDksCi0gIDB4MDUsMHhmMSwweDQ3LDB4NzksMHhmZCwweGUxLDB4OGIsMHgzZCwweDlmLDB4NzIsMHhkYSwweGQyLDB4MDcsMHhlYywweGQ3LDB4YzQsCi0gIDB4N2IsMHhkZiwweDQ5LDB4MjYsMHg3ZSwweDkwLDB4ZWMsMHg0ZiwweDhhLDB4ZjgsMHhlNywweDEzLDB4YTgsMHhkMCwweDFjLDB4YjEsCi0gIDB4MjUsMHhiYiwweDU1LDB4Y2UsMHg5NiwweGNmLDB4ZTIsMHg3YywweGYyLDB4OGIsMHhmNCwweDExLDB4NjMsMHg1ZSwweGNjLDB4ZmYsCi0gIDB4YTEsMHhmMiwweDdlLDB4NWYsMHg2NSwweGM4LDB4NGMsMHhkNCwweDlkLDB4NzgsMHg3ZSwweGM0LDB4M2YsMHhjYSwweDI1LDB4YTUsCi0gIDB4NTQsMHg3MywweDczLDB4ZWQsMHhjNiwweGViLDB4MGYsMHhkOCwweDJmLDB4ZTQsMHg4YywweGEwLDB4NTksMHhiNywweGM4LDB4NTgsCi0gIDB4Y2EsMHgzYiwweDYwLDB4YmUsMHgyNSwweDk0LDB4ZTYsMHhkYiwweGZiLDB4NDQsMHhhMywweDc2LDB4ZTIsMHhmOSwweDM5LDB4ZmUsCi0gIDB4MzksMHgyOCwweDM5LDB4NTcsMHg5OSwweGRkLDB4ZDgsMHhkZiwweDMyLDB4ZmIsMHg5ZCwweDM5LDB4N2YsMHhhZiwweGYxLDB4YjIsCi0gIDB4M2MsMHg5OSwweDMxLDB4ZmYsMHg0NywweGQwLDB4NmMsMHhiNCwweGFiLDB4YWUsMHg4OCwweGQ1LDB4ZmYsMHgyMywweGI4LDB4YjksCi0gIDB4YmQsMHgxMCwweGE2LDB4MDksMHhiNywweDhmLDB4ZDMsMHgzMCwweGQ5LDB4OWIsMHg4NywweGQ2LDB4YmEsMHg4ZCwweDQ4LDB4OGMsCi0gIDB4N2MsMHhmMCwweDg1LDB4NmQsMHgxMSwweDY3LDB4ODAsMHg2ZSwweDk5LDB4OTIsMHgxZiwweGI3LDB4MTcsMHhlMiwweGNjLDB4YzUsCi0gIDB4ZDksMHhmMiwweDViLDB4NTEsMHg1MSwweGU2LDB4NDEsMHg3YSwweDJmLDB4ZWQsMHg5MiwweGRjLDB4NDYsMHhjNiwweDdjLDB4YmMsCi0gIDB4MTIsMHg0MSwweGY5LDB4MTMsMHg1MCwweGQ2LDB4NTksMHhmOCwweDUxLDB4OGYsMHhhZSwweGQ2LDB4NDYsMHg2MSwweDNlLDB4NGYsCi0gIDB4ODIsMHhmYiwweDE3LDB4NjUsMHg1MywweDY4LDB4ZmUsMHgxOSwweGIzLDB4MmQsMHhkYSwweDQ1LDB4NTgsMHhkYywweDZiLDB4MWYsCi0gIDB4MmUsMHgxOCwweDgyLDB4MzcsMHgwNSwweDU0LDB4M2QsMHg1YiwweDUyLDB4ZWEsMHgyMywweGExLDB4MTIsMHhhNywweDM3LDB4MWIsCi0gIDB4OGUsMHg3YSwweDcxLDB4NGMsMHhiZiwweDM0LDB4YjcsMHhlYSwweGNkLDB4NzksMHg4NiwweDM4LDB4NGMsMHhhZiwweDQwLDB4NTUsCi0gIDB4OWYsMHhlMywweDdjLDB4Y2UsMHgxOCwweDFmLDB4NzAsMHg2YSwweGI0LDB4YjUsMHgzZSwweDI0LDB4ZjcsMHhmZiwweGUwLDB4YzUsCi0gIDB4MzgsMHgyYSwweGU1LDB4Y2IsMHg5ZSwweGQyLDB4MDEsMHg0NywweDhmLDB4ZTgsMHg4NSwweDMxLDB4YTksMHg5NCwweDNhLDB4NDYsCi0gIDB4NmEsMHhhZSwweGUwLDB4NDEsMHgyYiwweDFkLDB4NmUsMHhmZCwweGY1LDB4OTQsMHhmZSwweDY4LDB4ODcsMHhjMywweDljLDB4ZmQsCi0gIDB4YjUsMHg0NSwweDY1LDB4OTEsMHg2YSwweDQ0LDB4NzcsMHg2YiwweDlkLDB4MjUsMHg1MCwweDVlLDB4ZWYsMHg1NCwweGU1LDB4NmUsCi0gIDB4NGUsMHhhNCwweDM3LDB4ZDQsMHg5ZSwweGMwLDB4NTYsMHg2YiwweDdmLDB4YjQsMHgzNCwweDMzLDB4NWYsMHhhOSwweDU2LDB4YWUsCi0gIDB4MjAsMHhiNSwweDFlLDB4ZGQsMHhhMywweDA2LDB4OTYsMHg2NCwweGEzLDB4MDEsMHgzNiwweGRmLDB4ZTUsMHgwYSwweDlhLDB4ZjksCi0gIDB4MTcsMHg1ZCwweDlhLDB4YWIsMHhjZiwweGU2LDB4NGMsMHhlOSwweDhmLDB4YzYsMHhmMSwweDRmLDB4NDksMHhhOCwweDI1LDB4NmEsCi0gIDB4NWIsMHgwOSwweDhkLDB4YWMsMHhhOCwweDQxLDB4ZWUsMHgzNiwweGRjLDB4Y2EsMHg0MSwweGEzLDB4NDgsMHgxZiwweGFmLDB4YjcsCi0gIDB4NTAsMHg2NCwweDIwLDB4N2UsMHhiMCwweGY0LDB4NDcsMHgzMywweGY3LDB4OGYsMHhjZiwweGUzLDB4MzgsMHgyYiwweGFlLDB4YTQsCi0gIDB4NjMsMHhiYywweDlhLDB4NjgsMHg0NCwweDU0LDB4ZDksMHg4OCwweDcxLDB4YzgsMHg2MywweDNhLDB4NGUsMHg0NywweGI0LDB4MGEsCi0gIDB4MjMsMHg2YiwweDliLDB4YTgsMHhhNCwweGQ2LDB4NDcsMHg4MiwweGFhLDB4NmEsMHg0NCwweDgzLDB4MzEsMHhiOCwweDBkLDB4NjEsCi0gIDB4OTAsMHgyMywweGY4LDB4ODUsMHg4YiwweGRhLDB4OWYsMHg2OCwweDE5LDB4MzgsMHgxMiwweGZlLDB4OGQsMHhiZiwweGUyLDB4MTUsCi0gIDB4MzksMHg1MiwweGViLDB4MjMsMHg1ZCwweGUyLDB4ZGQsMHg5ZCwweGJhLDB4NmEsMHg0YSwweGUwLDB4MmQsMHhjZCwweGJiLDB4YzYsCi0gIDB4ZGUsMHhkNCwweGU4LDB4NjQsMHgyMywweDlhLDB4NGYsMHgzMSwweGZiLDB4N2YsMHg5ZCwweDBmLDB4NzYsMHhiZCwweDliLDB4MWEsCi0gIDB4ZmYsMHgzMiwweGZkLDB4ODEsMHgyNSwweGI1LDB4NzIsMHg1YiwweGI4LDB4NDgsMHgzYSwweGJlLDB4ZGMsMHhiOSwweDE5LDB4ZGEsCi0gIDB4YzIsMHg3MywweGI5LDB4ODYsMHg1YSwweDAwLDB4ZTYsMHhmMywweDMzLDB4NjIsMHhkNCwweDNlLDB4NGIsMHhiYywweDI5LDB4ZjEsCi0gIDB4MmYsMHg1YywweDlmLDB4MGUsMHg3OSwweDliLDB4MmQsMHhhNCwweDZlLDB4NjEsMHg2YSwweDNmLDB4MmQsMHhiNCwweGY1LDB4ZjAsCi0gIDB4YTYsMHg2MiwweGJhLDB4OTksMHg0ZiwweDExLDB4MTMsMHg5YywweDg2LDB4YjAsMHhkNiwweDgyLDB4N2YsMHg3OCwweGZjLDB4ZWIsCi0gIDB4NDAsMHhiOCwweDM4LDB4MjQsMHg5ZiwweDIxLDB4NWYsMHg4NSwweGI1LDB4YWMsMHg2MCwweDgwLDB4MmUsMHg0ZiwweDdmLDB4MWQsCi0gIDB4OWUsMHg4ZCwweDE2LDB4MGYsMHhkMCwweDM1LDB4ZTksMHhlZiwweDQ4LDB4MDcsMHgxYSwweDEwLDB4MmEsMHhkNCwweGE1LDB4ZTAsCi0gIDB4MWYsMHgzYiwweDdjLDB4Y2EsMHgyYSwweDRmLDB4M2EsMHhiYywweGUyLDB4MmEsMHhmOCwweDM1LDB4OGYsMHg3NiwweGVkLDB4MTAsCi0gIDB4MGQsMHgyZCwweDQ2LDB4MmIsMHhlZiwweGI1LDB4N2IsMHhjNCwweDkzLDB4NzAsMHhkZSwweGYwLDB4ZjQsMHg2NSwweDdhLDB4NmEsCi0gIDB4MmMsMHhmOCwweGU3LDB4MjYsMHhlZSwweGZmLDB4YTksMHhhYSwweDlkLDB4NTYsMHgyZiwweGVlLDB4ZTMsMHhkZCwweDcyLDB4N2IsCi0gIDB4ZTYsMHgwZCwweDhiLDB4MGIsMHg5NCwweDUxLDB4YjMsMHg2MiwweDkyLDB4MzAsMHgwNiwweGJmLDB4MTMsMHgxMiwweGY1LDB4OTEsCi0gIDB4NTIsMHhlYSwweDAzLDB4NWMsMHg4MiwweDQ3LDB4MTAsMHg1ZiwweDg5LDB4MmEsMHgwNywweDhhLDB4NDYsMHg4OSwweDUxLDB4MzAsCi0gIDB4YTQsMHg1ZiwweDgxLDB4YmQsMHgyMSwweDczLDB4N2QsMHhmOCwweDE1LDB4ZGUsMHhkZiwweGY5LDB4OWEsMHhmYSwweDAwLDB4NzIsCi0gIDB4N2QsMHg3NiwweDZlLDB4ZGEsMHgzZSwweDYxLDB4MDUsMHhhZiwweGFlLDB4ZmYsMHhkYiwweGU4LDB4MDEsMHgzMCwweGZiLDB4ODMsCi0gIDB4YmMsMHg4ZCwweDRiLDB4YjEsMHg5MywweDE3LDB4ZGEsMHhmNSwweGE2LDB4ZDYsMHgwNywweDYwLDB4YzUsMHhhMSwweDEzLDB4MjMsCi0gIDB4ZDksMHhkNywweGMxLDB4N2UsMHg1NiwweDgwLDB4ZjgsMHgyNywweGZjLDB4MGUsMHg4YiwweDMxLDB4NTcsMHgzZCwweDBmLDB4ZmMsCi0gIDB4ZTEsMHhhZiwweGU2LDB4YzYsMHg2ZiwweDI4LDB4MjcsMHg5ZSwweGE5LDB4ZjksMHg3MSwweDVmLDB4ZTUsMHhkMSwweGQ1LDB4NWEsCi0gIDB4ZWUsMHg5OCwweGI1LDB4YjUsMHg5MSwweDU3LDB4NWUsMHgzYywweGI4LDB4OWMsMHgzZSwweDY0LDB4ZjMsMHg5OCwweGZkLDB4OTcsCi0gIDB4OGIsMHg4YywweDFiLDB4Y2EsMHg2YywweGQ5LDB4MjksMHhmNSwweDAxLDB4MmUsMHg0MiwweDU1LDB4MmMsMHgzMywweDJlLDB4NTcsCi0gIDB4YzAsMHg5NSwweGY4LDB4NWUsMHg5NiwweDM1LDB4MjQsMHhmZSwweDExLDB4YWUsMHgzNCwweGRjLDB4YTgsMHg2NywweGU5LDB4MjgsCi0gIDB4ODgsMHgzZSwweDRmLDB4YWIsMHg2OCwweGMwLDB4MmIsMHgxNSwweGE5LDB4ZjUsMHgwMSwweDc4LDB4MzYsMHg1YywweDEzLDB4YWYsCi0gIDB4MDYsMHg2MCwweGY3LDB4MjksMHhiNywweGFmLDB4ZTMsMHg2ZSwweDlmLDB4OWEsMHgzMiwweDI1LDB4ODMsMHhmMSwweGM2LDB4NjEsCi0gIDB4YWMsMHg0YywweDQ5LDB4NmIsMHhiOCwweGE2LDB4M2UsMHg4MCwweDRmLDB4NWIsMHhhNiwweDg4LDB4NGYsMHhiMSwweDUxLDB4ZTYsCi0gIDB4MGMsMHhkOSwweGI3LDB4YzgsMHg3MywweGQ4LDB4MzEsMHhkNSwweDg5LDB4NmEsMHhhZSwweDg2LDB4ZDcsMHg0NywweGYyLDB4ODYsCi0gIDB4NTYsMHhlNywweGE1LDB4ZDQsMHg4NywweDFjLDB4OGYsMHg3ZiwweDZkLDB4YjMsMHgxNSwweGIyLDB4ODMsMHg3ZCwweDY1LDB4MmIsCi0gIDB4NWMsMHhkYiwweDlkLDB4MGUsMHhkZSwweGU4LDB4ZTQsMHhkZSwweDhjLDB4YTgsMHhjOSwweDAwLDB4NmYsMHgwZiwweDA1LDB4YjYsCi0gIDB4NGYsMHhlOSwweDBmLDB4ODIsMHhmMywweDVmLDB4YmEsMHg3MSwweGNiLDB4ODYsMHhkZCwweGY0LDB4YjAsMHg1YSwweGY0LDB4MTIsCi0gIDB4OGQsMHhkYSwweDBhLDB4NDksMHg3MywweGMyLDB4ZWQsMHg4MywweGYzLDB4OWIsMHg5YywweGI1LDB4YWUsMHhmZCwweGE5LDB4ZmQsCi0gIDB4NjEsMHgxMywweDQ1LDB4OTAsMHg3OCwweDU5LDB4MjQsMHgxMywweDA4LDB4MmQsMHhlMCwweDhhLDB4NWUsMHhlYiwweGU0LDB4NmUsCi0gIDB4MTAsMHg1ZSwweDRhLDB4OTEsMHhmNywweDg3LDB4YmQsMHg4MSwweDA4LDB4MTMsMHhlYiwweDk5LDB4YTgsMHgwZiwweGUwLDB4ZTMsCi0gIDB4NGUsMHgxZSwweDU0LDB4YzQsMHhlOSwweDE1LDB4ODksMHhmZSwweGE0LDB4YzcsMHhjMSwweDJjLDB4OGIsMHg2ZCwweDMyLDB4YzYsCi0gIDB4NzksMHhlYiwweGU0LDB4OTIsMHgyNCwweGZlLDB4YjksMHgxZSwweDVmLDB4NGEsMHhhOCwweDBhLDB4MmUsMHgzYiwweDJkLDB4NWUsCi0gIDB4OTAsMHgyZSwweDZiLDB4YjcsMHgyNiwweGVhLDB4NDMsMHg1ZSwweGQ1LDB4MTYsMHhmMiwweGMyLDB4NDEsMHgwOCwweDc1LDB4ZmMsCi0gIDB4YjMsMHhmOCwweDk1LDB4OTQsMHhmYSwweDQ4LDB4ZGMsMHhmZiwweGEzLDB4MzksMHgyZSwweGQ0LDB4ZTQsMHg0YSwweDk3LDB4ZWQsCi0gIDB4YTUsMHg1YSwweGQ2LDB4ZTksMHgxYSwweGM0LDB4M2YsMHg5YSwweDk5LDB4MzYsMHg4OCwweGYzLDB4YTksMHg0OSwweDFkLDB4OWYsCi0gIDB4MzMsMHhhNSwweDNlLDB4NDAsMHgwOSwweGI0LDB4MzQsMHgxMSwweDk1LDB4NzUsMHg2YiwweDRlLDB4NWIsMHhhNiwweGVlLDB4NTQsCi0gIDB4MzksMHg2MywweDVjLDB4YTEsMHgyYywweDFiLDB4N2YsMHhjNSwweDJiLDB4MDYsMHhhYywweGIzLDB4NTksMHhmYiwweGMzLDB4ZTIsCi0gIDB4NGIsMHgxMSwweDc3LDB4NzAsMHhjOSwweDc1LDB4NzcsMHhiZCwweGE0LDB4ZWUsMHg3MSwweDM5LDB4ZjksMHg4YiwweDIzLDB4MjIsCi0gIDB4MGEsMHg3MSwweGUwLDB4OTcsMHhkZCwweDJiLDB4ZTAsMHhmYiwweGRlLDB4NDUsMHg5NSwweDcwLDB4NmEsMHg3ZiwweGQ4LDB4ODMsCi0gIDB4MDIsMHhjYSwweGI3LDB4NjgsMHhmYSwweDAwLDB4ZGIsMHgyMywweDM5LDB4YWIsMHhlZiwweDhjLDB4ZGEsMHgzYSwweGU4LDB4NjEsCi0gIDB4ODUsMHgyNCwweDEwLDB4ZTksMHg0MSwweDk0LDB4Y2YsMHg5MSwweDFmLDB4NTksMHhmYiwweGMzLDB4ZTYsMHgyMiwweDllLDB4MTEsCi0gIDB4Y2EsMHhkNiwweDZjLDB4ZGEsMHg5MiwweDMzLDB4MDAsMHhkZiwweDhmLDB4NzgsMHhkNiwweDM4LDB4YjYsMHgyMywweGQwLDB4MWQsCi0gIDB4NjUsMHg1ZCwweDlhLDB4ZGIsMHhhYywweDdmLDB4YTUsMHgyMCwweDIyLDB4ZGEsMHgyNiwweDI2LDB4ZTMsMHg1ZiwweDlkLDB4YTYsCi0gIDB4YmYsMHhhOCwweDQ0LDB4NzMsMHhkYywweDgwLDB4MzAsMHg2ZiwweGQ0LDB4MzgsMHhmMiwweGVkLDB4NTcsMHhiMywweDFiLDB4NTcsCi0gIDB4YzEsMHg2OCwweDZiLDB4NjUsMHhkZiwweGIyLDB4YTgsMHg4MCwweGYzLDB4MzksMHhmZSwweGQ5LDB4MjYsMHgyNywweGZkLDB4MGYsCi0gIDB4ZTMsMHhmYywweDcwLDB4ZDgsMHhkNCwweGI0LDB4NDQsMHg2NSwweDdkLDB4MzcsMHg3OCwweDczLDB4ZWQsMHhlNiwweGM2LDB4ZDMsCi0gIDB4MTIsMHg4OSwweDhhLDB4MzAsMHg4YywweGEyLDB4NjQsMHg1MywweDU4LDB4NGMsMHhlZCwweDhmLDB4NzYsMHg4OCwweGNjLDB4OGIsCi0gIDB4Y2EsMHgxZiwweGUxLDB4NTIsMHg2ZCwweDY0LDB4MDUsMHhjYywweDM1LDB4NDgsMHgwNiwweGU5LDB4MTEsMHhlNiwweDY0LDB4NGIsCi0gIDB4MzgsMHgyMiwweDNhLDB4MjQsMHgxNSwweGIwLDB4MjUsMHgwMywweDdlLDB4ZGIsMHhjNCwweDcxLDB4MDcsMHg3NywweDQyLDB4ZmUsCi0gIDB4YjgsMHhlNSwweDMyLDB4ZGIsMHg1MiwweGRlLDB4NmQsMHgyNywweDQ4LDB4YTcsMHgyYiwweGE3LDB4YjQsMHg4MywweDlhLDB4OTksCi0gIDB4OTYsMHg3YiwweDEyLDB4ZjYsMHgzMCwweGQ1LDB4NDAsMHhjMSwweDllLDB4ZWMsMHgwZiwweDMyLDB4Y2UsMHgwZiwweDY3LDB4NzIsCi0gIDB4OTAsMHhmYywweDkwLDB4ODcsMHg4MSwweDEyLDB4NjUsMHgzZCwweDllLDB4YTUsMHhiYiwweGZhLDB4NzksMHg0NCwweDFiLDB4NGEsCi0gIDB4ZmQsMHhmOSwweDQ3LDB4ZTUsMHhlZiwweDU5LDB4ZTMsMHg1ZiwweDY2LDB4N2QsMHg4MCwweGM1LDB4MjEsMHhjNywweGEwLDB4ZjgsCi0gIDB4MzUsMHhkYiwweGM3LDB4NmMsMHg2ZiwweGM4LDB4MWUsMHgxMCwweDM5LDB4NTEsMHg3YywweDdlLDB4YmIsMHg2MywweDhkLDB4YzgsCi0gIDB4MWIsMHhhNSwweGVkLDB4ODksMHgzYiwweDQ2LDB4NjQsMHg1YiwweDBhLDB4M2YsMHg5YywweGM3LDB4YmYsMHgzNiwweDMxLDB4NzksCi0gIDB4MWYsMHhlYSwweGRmLDB4MWYsMHg2YSwweDI4LDB4YTgsMHg4NywweDYyLDB4OTcsMHhhMSwweDZjLDB4OWIsMHgyMywweGM2LDB4MWIsCi0gIDB4YTEsMHhhNiwweDliLDB4ZjUsMHhjYSwweDkyLDB4ZmUsMHgxZiwweDZkLDB4YzYsMHgzYiwweGJjLDB4OWIsMHhhNywweDZhLDB4MWYsCi0gIDB4MTEsMHg3ZCwweGQyLDB4NTUsMHgzNiwweDlmLDB4NjcsMHhjMywweDVkLDB4ZTEsMHg4YywweDY4LDB4ZGUsMHhkNiwweGUxLDB4OGEsCi0gIDB4ODYsMHhhYSwweGVkLDB4M2QsMHg3YiwweGI3LDB4YjUsMHgzZiwweGRhLDB4ZjUsMHhkYiwweGUxLDB4ZDcsMHhmOCwweGZjLDB4NzksCi0gIDB4ZjcsMHhkYSwweDY2LDB4ZDIsMHgwMywweDRhLDB4YmUsMHg5MSwweDY5LDB4ZTIsMHg5OSwweDQ4LDB4YjEsMHg5NiwweGY5LDB4YTAsCi0gIDB4NTksMHgxZiwweGE5LDB4YjgsMHgyNywweGYyLDB4ZmQsMHg5NCwweGZhLDB4OTAsMHhkYywweDRkLDB4NWQsMHhhYywweDY1LDB4ODQsCi0gIDB4YjIsMHhiNiwweDY5LDB4MDcsMHhhMCwweDQwLDB4NDMsMHhiYywweDc0LDB4NWEsMHhkZCwweGE3LDB4MTYsMHgwMywweDk3LDB4NTcsCi0gIDB4Y2EsMHgwMSwweGE1LDB4NTgsMHgwYiwweGQ0LDB4ODcsMHhkMywweDI3LDB4YmYsMHgxNywweDhmLDB4N2YsMHg2ZCwweDA1LDB4NzcsCi0gIDB4ZjgsMHg3YSwweDIwLDB4MTEsMHhhOSwweDViLDB4NTMsMHhiYiwweDExLDB4ZmYsMHhiYywweDA0LDB4N2IsMHhmNSwweGQ1LDB4NzksCi0gIDB4MTksMHhiOCwweDllLDB4Y2EsMHg1ZSwweGE1LDB4MDQsMHgyOCwweGI1LDB4ZTUsMHgzNSwweDRkLDB4ZTYsMHhjNywweGNkLDB4NjgsCi0gIDB4ZTUsMHhkZCwweGJlLDB4ZDQsMHg2MiwweDhmLDB4YmMsMHgxYiwweDNmLDB4NzQsMHg4YywweGI2LDB4NDYsMHhjNSwweDhmLDB4ZTEsCi0gIDB4NjAsMHhhZiwweDZmLDB4OTAsMHgwNywweGI2LDB4MzIsMHhmOSwweDUyLDB4YTAsMHg2OSwweDY5LDB4NGIsMHhhOSwweDBmLDB4ODAsCi0gIDB4MTcsMHhmNSwweDhkLDB4M2YsMHgyMiwweGRmLDB4NTIsMHg0NywweGVlLDB4NDUsMHg0MSwweGQ0LDB4ODYsMHhmNiwweGQ3LDB4YTgsCi0gIDB4MzYsMHhjYiwweDJjLDB4ZGMsMHgyNywweDdjLDB4NGEsMHg3ZCwweDg2LDB4NTksMHg3OCwweGNkLDB4Y2EsMHgwZiwweDdmLDB4OTUsCi0gIDB4N2IsMHgxNywweDA3LDB4ZTUsMHg0YSwweGU1LDB4NjQsMHg1ZiwweDI5LDB4NjQsMHg2YSwweDYyLDB4MzksMHg3YywweDA2LDB4YTUsCi0gIDB4ZTMsMHhmZCwweDIwLDB4ZDQsMHg1MiwweDVlLDB4M2EsMHg0ZiwweDRkLDB4YTksMHgwZiwweGYwLDB4MzMsMHg1MiwweGEyLDB4MmMsCi0gIDB4ODksMHhlMywweDI3LDB4NjksMHgzNSwweGNhLDB4YmMsMHg3NCwweGZiLDB4OTYsMHhiOSwweDRkLDB4ZGQsMHg2MSwweDY3LDB4N2EsCi0gIDB4NDIsMHhmZiwweDMyLDB4NjcsMHgyMSwweDhkLDB4ZGMsMHhhNSwweDg2LDB4MmMsMHhmYywweDcwLDB4ZWUsMHhhNiwweDIwLDB4MzcsCi0gIDB4ZWUsMHhkOSwweGUyLDB4NTYsMHgyMywweDlhLDB4NzMsMHg0NywweDQ2LDB4MzcsMHg3MSwweGMzLDB4MjEsMHhiNiwweDcyLDB4YjIsCi0gIDB4M2UsMHg1MiwweDBmLDB4ZWQsMHgwZSwweGFiLDB4ZDYsMHhmYywweDM4LDB4ZDgsMHhhOSwweGI5LDB4NjEsMHgwOSwweDIzLDB4OTQsCi0gIDB4ODQsMHhhNSwweDM5LDB4ZDUsMHgxNCwweDcwLDB4MzMsMHhjNiwweDU0LDB4MTUsMHhlNCwweDg0LDB4N2MsMHg1NiwweDhkLDB4MDgsCi0gIDB4YjQsMHg1YiwweDE4LDB4NWUsMHg3NCwweDc1LDB4ZGUsMHgwOSwweGNkLDB4NTcsMHhlZCwweDUwLDB4NjQsMHgxNywweDRmLDB4YWIsCi0gIDB4ZTEsMHg2OSwweGExLDB4YWEsMHgzMCwweDQyLDB4YmMsMHgzZCwweDg5LDB4YzAsMHhhOCwweGU2LDB4MzEsMHhkYywweDVkLDB4YTIsCi0gIDB4OWEsMHhjYywweDhmLDB4YmIsMHhkZSwweDc0LDB4NjIsMHhjMCwweDMyLDB4NDMsMHgxYywweDkxLDB4YzYsMHhjNiwweGViLDB4NDMsCi0gIDB4YzIsMHg0OCwweGFkLDB4NTksMHgxNiwweDYwLDB4NGMsMHhiYSwweDVhLDB4ZjQsMHgzYywweGNjLDB4NGIsMHhjMSwweDNmLDB4MjYsCi0gIDB4ZmYsMHhhNywweGFhLDB4ZGYsMHhkZSwweDIzLDB4ZGUsMHgwZiwweDBmLDB4MzMsMHhhZiwweDlhLDB4NzksMHg0YywweDQ2LDB4ZmMsCi0gIDB4YzMsMHg3YywweGJhLDB4ZmQsMHgwYywweDU5LDB4YTAsMHg1ZCwweDUxLDB4NzAsMHhjNywweDc2LDB4NWIsMHhmOSwweDNmLDB4NzksCi0gIDB4MWYsMHhjMSwweDI1LDB4MzYsMHhhZiwweDk3LDB4ODYsMHg0OSwweDU1LDB4YTAsMHg5YiwweDE1LDB4YTksMHgzMiwweDIxLDB4NzMsCi0gIDB4YTAsMHg5YiwweDk1LDB4ZTgsMHhhZSwweDZkLDB4ZTQsMHg0OSwweGUzLDB4ZDAsMHhmNywweDljLDB4MDEsMHhkYiwweGQ0LDB4ZmEsCi0gIDB4NDgsMHg3OCwweGJlLDB4ZmEsMHg3OCwweDNkLDB4NzAsMHhhOSwweDliLDB4ODUsMHhkNCwweGViLDB4MTksMHgwMSwweDI5LDB4MGEsCi0gIDB4YWIsMHg1OSwweDVmLDB4ZDQsMHgyOSwweDA5LDB4NWQsMHg0YywweDVmLDB4MTksMHhmMCwweDU4LDB4ZmEsMHgzMywweGYyLDB4ZmMsCi0gIDB4YjgsMHg5ZiwweDQ5LDB4MjUsMHhiYywweDVhLDB4ODIsMHgxYiwweGJhLDB4NTUsMHgyNywweGRjLDB4ODgsMHg2NiwweDFkLDB4ZmMsCi0gIDB4MTQsMHgxZSwweGQwLDB4NTEsMHhmZSwweDNjLDB4NjUsMHhkNiwweDA3LDB4YjAsMHg1OSwweGViLDB4MjMsMHg0MSwweDFhLDB4NWYsCi0gIDB4NjQsMHg5ZiwweDYxLDB4ZGYsMHhmOCwweGY1LDB4ZDUsMHgxMCwweDYzLDB4NWQsMHgxZCwweDk5LDB4YWUsMHg5YywweDIyLDB4ZWQsCi0gIDB4OGQsMHhmMCwweGMzLDB4MjMsMHhmNiwweDZkLDB4YzIsMHgyZCwweDZjLDB4ODQsMHg3OSwweDU3LDB4ZDksMHhhZCwweGY5LDB4NzEsCi0gIDB4ZTMsMHhmOCwweGM3LDB4NzAsMHhiNCwweGNhLDB4NjMsMHhlYSwweDY1LDB4MzYsMHhkZSwweDE2LDB4ZTQsMHhmMiwweGVkLDB4MzgsCi0gIDB4NzgsMHg1YiwweGJjLDB4YTAsMHhlMiwweDhhLDB4ODUsMHhhZSwweGE5LDB4OGYsMHg4NCwweGZiLDB4MmQsMHg2ZSwweGRmLDB4YzcsCi0gIDB4ZDMsMHhlMiwweDcyLDB4ZjEsMHhmNCwweDM1LDB4ODksMHg2ZSwweDVlLDB4MTgsMHhhNywweGRmLDB4OGUsMHg4NiwweDFiLDB4MzksCi0gIDB4NGUsMHg1MSwweDUwLDB4NWYsMHgxMywweGZmLDB4YzIsMHgyNSwweGM2LDB4YTcsMHhhZCwweGUyLDB4ZjksMHhmMiwweGJjLDB4ZDAsCi0gIDB4NWMsMHgwOSwweDFjLDB4ZWUsMHhjYiwweDMyLDB4ZTgsMHgzNiwweDcyLDB4YWUsMHg3MCwweDAzLDB4NzMsMHhhZSwweGE0LDB4NTMsCi0gIDB4ZWEsMHg0MywweGMyLDB4NWUsMHhhOSwweGU0LDB4MDUsMHgzNCwweGMzLDB4OTcsMHg5MSwweDlkLDB4NGQsMHg2NiwweGZmLDB4NGEsCi0gIDB4MjIsMHg3NSwweDFkLDB4NzcsMHgzMywweGJhLDB4MmQsMHhmYywweDIyLDB4ZmMsMHg0NCwweDZiLDB4ZTcsMHgxZCwweDYzLDB4NTMsCi0gIDB4ZWIsMHgyMywweDFkLDB4NjAsMHhkZiwweGUxLDB4ZmUsMHg5MCwweDU5LDB4ZTEsMHhjNywweGY0LDB4ZTIsMHhkMCwweDhkLDB4N2YsCi0gIDB4NjMsMHhlMywweGMwLDB4NjAsMHhkZSwweDZlLDB4ZmEsMHg3NywweGUxLDB4NzcsMHg2MCwweDE2LDB4ZGIsMHgxOSwweGEyLDB4ZGYsCi0gIDB4NGYsMHhhZCwweDhmLDB4YTQsMHg3YywweGNhLDB4ZDcsMHg0NywweDk1LDB4ZWYsMHhkMSwweGNmLDB4ODYsMHgyYiwweDNmLDB4NzYsCi0gIDB4NTQsMHg4YSwweDM2LDB4NjMsMHg3OCwweDczLDB4ZTUsMHgyZiwweGRjLDB4MzcsMHhlMiwweDMxLDB4YjksMHg5NywweDdhLDB4MzQsCi0gIDB4N2IsMHhjNSwweDk0LDB4ZmEsMHg0OCwweGI4LDB4M2UsMHhhZiwweDRkLDB4OGIsMHhmZiwweGQ1LDB4ODcsMHhlYSwweDg3LDB4ZjQsCi0gIDB4ZTYsMHgxZSwweGM3LDB4ZGUsMHg5YSwweDExLDB4YjgsMHg5YSwweGJiLDB4ZDgsMHg2YywweDk0LDB4MjYsMHg5ZCwweDMzLDB4ZWIsCi0gIDB4NGIsMHg0YywweDliLDB4ODIsMHg3ZiwweGM4LDB4YWMsMHg0MSwweDk0LDB4ZjYsMHgzZSwweGY2LDB4NDEsMHhlOCwweDkxLDB4M2MsCi0gIDB4ODcsMHg1YSwweGEwLDB4MWEsMHg5NywweGQ0LDB4NGEsMHgzYywweDU2LDB4MDUsMHgyZSwweDM4LDB4MmYsMHg5NCwweDY5LDB4OGUsCi0gIDB4NmUsMHhkOSwweDhhLDB4N2YsMHg2NiwweDJhLDB4MDcsMHg2MCwweDVlLDB4MWYsMHgxZCwweDllLDB4NTMsMHhjOSwweDdlLDB4ZTMsCi0gIDB4NTksMHg1YywweDhiLDB4NjIsMHgzMywweDU3LDB4M2YsMHg5MCwweDUxLDB4NWMsMHg0ZCwweDc5LDB4N2QsMHhmZSwweGZkLDB4YjAsCi0gIDB4ODMsMHhmYiwweDkzLDB4OTMsMHhmOCwweGE3LDB4MjcsMHg4MSwweDdmLDB4ZjAsMHg3ZCwweDU3LDB4ZmEsMHhhNCwweDc1LDB4NmMsCi0gIDB4NzYsMHhjNywweDkyLDB4NDEsMHgzMiwweDBiLDB4ZjYsMHg0NSwweDhiLDB4NzksMHg1YiwweDkwLDB4NTksMHhmMCwweDNjLDB4OWIsCi0gIDB4MWQsMHg5MiwweGQ3LDB4NWMsMHg4YiwweDdmLDB4OGMsMHhjOCwweDAyLDB4NjIsMHg4NywweGFkLDB4NmEsMHhhMCwweDFmLDB4OGYsCi0gIDB4YTEsMHhhMywweDcwLDB4MmYsMHgyYSwweDdhLDB4OTQsMHgzZiwweDBmLDB4NTQsMHhlZiwweGQ1LDB4YjgsMHg2MywweDhkLDB4NTgsCi0gIDB4ZjAsMHhjZiwweDhmLDB4M2EsMHgxMywweGRkLDB4NjAsMHhlMywweGEyLDB4MGIsMHg5ZSwweDgxLDB4MzksMHgxZCwweGNiLDB4ODYsCi0gIDB4NmUsMHg3NCwweGE5LDB4MTcsMHg5NSwweGM1LDB4NGYsMHhiOSwweDNiLDB4NmIsMHgxMCwweDExLDB4YzEsMHhmZiwweGUwLDB4ODksCi0gIDB4OTAsMHhkNywweGUwLDB4MWYsMHhkNCwweDNlLDB4YjIsMHgzOSwweGM4LDB4NzUsMHgzNCwweDhjLDB4ODcsMHhiZCwweGVlLDB4NTksCi0gIDB4NmIsMHgzNiwweDBhLDB4MzksMHg0MiwweGZlLDB4NGMsMHg3ZCwweDI0LDB4NmUsMHhlZiwweDM3LDB4Y2UsMHg2MSwweGEzLDB4YWEsCi0gIDB4MmYsMHhiNCwweDI5LDB4OGEsMHhmYSwweGFlLDB4NTksMHhmMCwweDg1LDB4ZWMsMHg1MSwweDVlLDB4MWYsMHhhOSwweGU4LDB4ZDAsCi0gIDB4OTQsMHhmZSwweGIwLDB4MTMsMHhmOCwweDg3LDB4ZDcsMHg4NywweDQ0LDB4MjAsMHg3ZCwweDAxLDB4MDcsMHg5OSwweDVjLDB4YzIsCi0gIDB4NjgsMHgzNCwweDM3LDB4M2MsMHg1YiwweDdhLDB4NDMsMHg3MCwweDg2LDB4NWMsMHhkNywweGU0LDB4YzcsMHhmMSwweDZjLDB4MTQsCi0gIDB4ODUsMHgyNCwweDg4LDB4NDAsMHg0YiwweGEyLDB4MzcsMHhiYywweDA3LDB4YmIsMHhlMCwweDAxLDB4ZGUsMHhjNiwweGFiLDB4OTAsCi0gIDB4MzUsMHhkMywweDIyLDB4ZGUsMHg2YSwweGVkLDB4YTUsMHhhOSwweGY4LDB4YTcsMHg3ZSwweDQ5LDB4YWUsMHg1ZiwweDgyLDB4ZjksCi0gIDB4OWMsMHhmOCwweDkxLDB4NGIsMHgzYSwweGM4LDB4NGUsMHhhMSwweDQ0LDB4ZDMsMHhhMywweGI2LDB4NGMsMHhkOCwweGFjLDB4NGQsCi0gIDB4YTksMHg4ZiwweGQ0LDB4M2QsMHg4ZSwweDdmLDB4MzgsMHhlZCwweGM3LDB4MWMsMHg5YywweGUwLDB4NmEsMHgzNywweDUxLDB4MjgsCi0gIDB4NTIsMHhlNCwweGZlLDB4OWYsMHg0MywweDJjLDB4YjUsMHgzZiwweDZjLDB4ZTYsMHg0MCwweGEyLDB4MWIsMHhlYywweDY5LDB4ZjksCi0gIDB4M2QsMHgwNCwweDA2LDB4OGYsMHg2OCwweDhlLDB4ZmUsMHg5YSwweDU1LDB4ZjAsMHg4NiwweDY0LDB4MzYsMHg3ZSwweGU1LDB4ZjUsCi0gIDB4MjEsMHg5ZiwweGQ3LDB4MWMsMHg4YSwweDA1LDB4ZmYsMHg2YywweDMzLDB4ZjksMHgzZiwweDhiLDB4YWIsMHhlZCwweDUxLDB4ZTEsCi0gIDB4MDIsMHhlZiwweGY3LDB4OWQsMHgyOCwweDI0LDB4ODUsMHg1NywweDM0LDB4YTksMHg5ZiwweDdjLDB4YzYsMHhlNSwweDczLDB4YmYsCi0gIDB4OWIsMHgzYiwweGNhLDB4YTYsMHhlMCwweDlmLDB4NGEsMHhmYSwweDE0LDB4MzksMHg0YiwweGJiLDB4NzksMHhmZCwweDEwLDB4YjIsCi0gIDB4ODEsMHhkNywweGM3LDB4MzYsMHhjYiwweDAyLDB4ZTAsMHhhZiwweGVhLDB4NzksMHhjNiwweDljLDB4NzgsMHhjZiwweGU0LDB4N2EsCi0gIDB4NDIsMHhhMiwweDNlLDB4YjYsMHgxZiwweDU3LDB4YWYsMHg1NywweGRiLDB4MjMsMHhhZCwweGU2LDB4MzAsMHg0ZiwweGUyLDB4MGMsCi0gIDB4MGQsMHg5ZSwweDIxLDB4ZjgsMHgwYSwweGVjLDB4YjEsMHgzYiwweGVmLDB4NDQsMHgyMCwweDM0LDB4MDUsMHhmZiwweGMwLDB4MDMsCi0gIDB4ZDUsMHhkMSwweDA0LDB4ZGEsMHg3OSwweDgwLDB4Y2YsMHg3NywweDRiLDB4MDcsMHg5NSwweDEyLDB4Y2QsMHg2NSwweDVlLDB4ZDEsCi0gIDB4ZGEsMHgzOSwweDEwLDB4YmEsMHg2MywweDhhLDB4ZmYsMHhjNywweGE3LDB4NDksMHhkYiwweGIzLDB4Y2QsMHhjMSwweDhhLDB4NGQsCi0gIDB4NTEsMHhmMSwweDk2LDB4YzIsMHg1MSwweGIxLDB4NzIsMHgyNSwweGM3LDB4NmYsMHhlYSwweDI4LDB4ZjMsMHhkNiwweGRhLDB4MTUsCi0gIDB4YzQsMHgzZiwweDkzLDB4ZmEsMHg3NywweGRjLDB4ZmYsMHhmMywweDZmLDB4NWIsMHhjNCwweDAxLDB4M2EsMHhhYSwweDk3LDB4MDUsCi0gIDB4MzYsMHhmMSwweDMyLDB4MDgsMHhhMywweDkyLDB4ZDksMHgzZiwweDc3LDB4MDAsMHgzZSwweGMxLDB4MWQsMHgzMiwweGE1LDB4M2UsCi0gIDB4NjQsMHg2MiwweGQ5LDB4ZWQsMHg0YywweDBlLDB4ZDEsMHhiZSwweDdjLDB4NGUsMHgwNCwweDkyLDB4MTEsMHgxMSwweDY1LDB4NTQsCi0gIDB4NjQsMHhiYiwweGQxLDB4MTgsMHg1MCwweDQ3LDB4NTQsMHgyZiwweDQ5LDB4YWQsMHgwZiwweDI5LDB4ZjAsMHhmOCwweDk3LDB4YTMsCi0gIDB4MmQsMHg1MywweDI3LDB4OGIsMHg2MCwweDgzLDB4NTEsMHhkMiwweGRjLDB4YTIsMHgxNywweGI5LDB4ZTgsMHgwNywweGQ1LDB4ZjMsCi0gIDB4YTIsMHg3NCwweGMwLDB4M2IsMHhhYSwweDk4LDB4ODUsMHhlOCwweGUzLDB4ZDYsMHhmYSwweDQ4LDB4ODksMHhmZSwweGIwLDB4ZmMsCi0gIDB4NTAsMHhkOCwweDU5LDB4YTMsMHhiNiwweDFhLDB4NjEsMHg4ZiwweDZkLDB4NTMsMHhlZiwweDVlLDB4YmYsMHgyYiwweDllLDB4YjEsCi0gIDB4MjAsMHhmYywweDBhLDB4NGYsMHgzNSwweDdkLDB4NTEsMHg1NiwweGE3LDB4ZjQsMHgwNywweGUxLDB4ZjYsMHg0YiwweGNiLDB4MWEsCi0gIDB4NzIsMHgzMywweDU5LDB4OWIsMHg5MSwweGE5LDB4YzksMHhmNSwweDA4LDB4MjQsMHg5ZSwweDE2LDB4OGEsMHg4ZiwweDY2LDB4ZDQsCi0gIDB4YTMsMHhkOCwweDg5LDB4NjksMHgzYiwweDM0LDB4MzksMHg5NCwweDVhLDB4MWYsMHg0OSwweGUxLDB4ZGQsMHg2MCwweGU1LDB4YjEsCi0gIDB4YWQsMHhiMywweDk0LDB4OTcsMHgyMywweDM3LDB4YmQsMHhlYiwweDQ4LDB4ZDQsMHg0NywweGJhLDB4MmQsMHg5ZSwweGI5LDB4NDYsCi0gIDB4N2MsMHgxMywweDJlLDB4MzQsMHhjZCwweGQ3LDB4MWQsMHg3NSwweDI5LDB4ZmQsMHg0MSwweDRjLDB4NzksMHhhYiwweDM1LDB4YzcsCi0gIDB4YzQsMHgyNiwweDNlLDB4ZTAsMHg2ZSwweDlmLDB4MjEsMHhiOCwweDQ4LDB4N2MsMHhkYSwweDNkLDB4M2MsMHgyMiwweDc2LDB4OTEsCi0gIDB4NmIsMHgzNCwweDJiLDB4ZmUsMHhlMSwweGY2LDB4ZmIsMHhhNSwweDY4LDB4MTUsMHhlZiwweDBmLDB4YmIsMHgxZiwweDk2LDB4ZmMsCi0gIDB4YTgsMHg2NCwweDYwLDB4ZTksMHg1OCwweDRiLDB4ODEsMHg3NiwweGIxLDB4ZDcsMHg2NywweDE2LDB4MGEsMHg0MCwweDdjLDB4NzUsCi0gIDB4NGIsMHgwNywweDQyLDB4YWYsMHg3ZSwweDRiLDB4N2QsMHhlYywweGVkLDB4ZGEsMHgwMSwweGJkLDB4YjgsMHg5NywweDNlLDB4NDQsCi0gIDB4YjIsMHhiNCwweDQ2LDB4YmQsMHhiOCwweDJlLDB4YjMsMHg5YywweGQ4LDB4YjQsMHgzZCwweDBkLDB4ZmYsMHgxYywweDkyLDB4Y2IsCi0gIDB4ZjEsMHhmOSwweGY3LDB4MjksMHhiYywweDUwLDB4ZmYsMHhkNCwweGZhLDB4NDgsMHg4YSwweGRiLDB4YTAsMHhjMywweGQ5LDB4NmQsCi0gIDB4YjAsMHg1ZSwweDk5LDB4MTcsMHg2OCwweDQ2LDB4YzMsMHgyZCwweGJhLDB4NWYsMHgyYSwweGM2LDB4MTcsMHgyNywweDY3LDB4YjQsCi0gIDB4NWYsMHhjMiwweDkzLDB4YmMsMHgzZSwweDY5LDB4MzIsMHhmZSwweGE1LDB4MjYsMHhlNCwweDBmLDB4ZDAsMHhmOSwweDA0LDB4NmMsCi0gIDB4OGQsMHg3YywweGUzLDB4ZTEsMHhjMiwweDUyLDB4YjQsMHhkNywweGI4LDB4YmQsMHhkZiwweDI3LDB4ZWMsMHgwZCwweGE4LDB4MzEsCi0gIDB4NWMsMHhjZiwweDY0LDB4ZmMsMHhiZCwweDJlLDB4ZTEsMHhlZiwweGQyLDB4ZGMsMHgyMywweGUyLDB4NmUsMHg0MCwweDQ1LDB4ZGYsCi0gIDB4MzMsMHhmNywweGIzLDB4OWMsMHg2MiwweDZkLDB4ZjQsMHhlZSwweDA3LDB4Y2UsMHgzOCwweDE4LDB4ZjksMHgxOCwweDgxLDB4ZWUsCi0gIDB4ZmUsMHhiOCwweDQzLDB4OWYsMHg3NiwweDZhLDB4MmEsMHhmZSwweGUxLDB4NDksMHg1ZSwweGFmLDB4YzAsMHg2OCwweGM4LDB4MWMsCi0gIDB4YmMsMHgyNywweGUxLDB4OTUsMHg3ZSwweDQ3LDB4NDcsMHhjZCwweDQ3LDB4MDgsMHg4NCwweDdjLDB4ODEsMHg0ZCwweGJhLDB4YTUsCi0gIDB4M2UsMHg5MiwweGMxLDB4ZWIsMHgyMywweGMxLDB4ZTIsMHg3YSwweDdiLDB4YmQsMHhiOCwweDFhLDB4ODEsMHg1MCwweDE1LDB4OWIsCi0gIDB4YzYsMHhiNSwweGRiLDB4ZTUsMHg0OCwweGU5LDB4MGIsMHg4ZSwweGZlLDB4NWIsMHg2NiwweGYyLDB4ZjgsMHgwZSwweDhmLDB4MzAsCi0gIDB4MjYsMHhmNSwweDc1LDB4MDMsMHhmMCwweDc4LDB4NTYsMHhjOSwweGIwLDB4MmIsMHgyNiwweDdlLDB4ODMsMHg4YiwweDlkLDB4MjgsCi0gIDB4Y2EsMHhjZiwweGRmLDB4NDMsMHgxNywweGI0LDB4OWYsMHg5NSwweDVkLDB4N2UsMHhiNywweGJmLDB4MjEsMHg1ZiwweDJmLDB4NzQsCi0gIDB4ZTksMHhkNywweGYwLDB4N2YsMHg0YSwweDgyLDB4YmMsMHhiZiwweDFlLDB4NDQsMHg1YywweDI1LDB4NDcsMHg2ZiwweGU0LDB4ZDUsCi0gIDB4MDMsMHhiYSwweGQ1LDB4MzksMHg0ZSwweGI5LDB4OTUsMHhhYywweDU2LDB4OWYsMHg2MSwweGNlLDB4ODYsMHgzYywweDNkLDB4M2IsCi0gIDB4YzUsMHhmZiwweDIzLDB4ZWMsMHhjZCwweDM3LDB4YWIsMHgyNSwweDJjLDB4M2QsMHhjYSwweGFhLDB4ZGQsMHg1YSwweGNiLDB4ODIsCi0gIDB4NzAsMHg4ZiwweDdhLDB4MTAsMHhlMSwweDQxLDB4NGIsMHg3ZSwweGQ4LDB4NGUsMHgxYiwweDI1LDB4OWQsMHhkMSwweDQyLDB4OGIsCi0gIDB4ZmMsMHg2MSwweDk5LDB4YWIsMHhjZCwweGVhLDB4MDcsMHhmNiwweDYxLDB4NzEsMHhiNiwweGRlLDB4YzcsMHgwZCwweGNmLDB4N2YsCi0gIDB4ZTQsMHhmNSwweGU4LDB4YTAsMHg2YywweGU2LDB4YjIsMHhiMCwweGJjLDB4MWEsMHg4ZSwweDRiLDB4NjgsMHg3ZiwweDc1LDB4ODgsCi0gIDB4ZjEsMHg1NCwweGZmLDB4NGYsMHg4MiwweGZmLDB4MzMsMHgwMCwweDYzLDB4ZGEsMHhlMiwweGFjLDB4OWIsMHg2MywweGUyLDB4YjAsCi0gIDB4MzIsMHg2NiwweDQ3LDB4NDQsMHhkNCwweDNlLDB4ZWQsMHg4MiwweDc0LDB4ODUsMHg2NywweDA4LDB4YzYsMHgyZCwweGY4LDB4ZTcsCi0gIDB4NjgsMHhkYSwweDE1LDB4ZTUsMHhhYSwweGE3LDB4NTQsMHg0NywweDU4LDB4M2UsMHhjYywweDRlLDB4NjksMHhhNSwweGMzLDB4NTksCi0gIDB4Y2IsMHg0NSwweDBmLDB4YmMsMHg4YSwweDNiLDB4Y2EsMHhkMSwweDIzLDB4ZmEsMHg2MCwweDJjLDB4YmEsMHgzMCwweDZlLDB4M2YsCi0gIDB4NWEsMHg2MCwweGU5LDB4MGYsMHg4YiwweGY4LDB4ZTcsMHg3MCwweGQwLDB4MTksMHg4OSwweDc0LDB4YTYsMHhmZiwweDFlLDB4MzYsCi0gIDB4MDQsMHg5ZCwweDVhLDB4YTAsMHg5YiwweGU0LDB4OWIsMHg0NCwweDFkLDB4NzksMHgyZCwweDJhLDB4ZmEsMHg2ZSwweDcwLDB4YzYsCi0gIDB4ZTksMHgyZSwweGUyLDB4NDksMHhmNiwweDg3LDB4MDUsMHhiMywweDVlLDB4NDQsMHg2MywweDA0LDB4ZmMsMHg3MSwweDNmLDB4NTMsCi0gIDB4OWQsMHg3ZCwweDc3LDB4YzUsMHgwOCwweGY0LDB4ZWQsMHg1NCwweDUxLDB4ZjAsMHgxMiwweGE3LDB4MWQsMHhiYSwweDlkLDB4ODUsCi0gIDB4NDYsMHg5ZCwweDI3LDB4M2IsMHhkOSwweDFmLDB4MzYsMHgyZSwweDk5LDB4ZjEsMHhhZiwweDFkLDB4YWUsMHhkZCwweDY0LDB4ZDAsCi0gIDB4NmYsMHg1NiwweDE3LDB4OGYsMHgxZCwweDc3LDB4MmEsMHgzZiwweGUzLDB4MjcsMHg3NCwweDNiLDB4NDcsMHg0NCwweDA5LDB4ZmUsCi0gIDB4NTUsMHhmOSwweGE0LDB4N2MsMHhhOCwweDllLDB4YzEsMHhlMywweGE3LDB4NWQsMHhmMSwweDkzLDB4OTEsMHhlYywweDRmLDB4ZDksCi0gIDB4MjksMHhiZCwweDZiLDB4MzgsMHg0YiwweDExLDB4NmYsMHg0OSwweDk0LDB4NTEsMHhkZCwweDhlLDB4ODgsMHg2NSwweDk4LDB4OTUsCi0gIDB4NzEsMHg3ZSwweDZmLDB4ZDIsMHhmZiwweDEzLDB4NDMsMHhmYywweDczLDB4ODksMHgyZiwweDgyLDB4OTEsMHgzMywweDAyLDB4OGIsCi0gIDB4ZDksMHhmMywweGY1LDB4OGUsMHg4YiwweGEyLDB4NDEsMHg3OCwweGUxLDB4ZDAsMHg2OSwweDNhLDB4MDcsMHg0MiwweGJjLDB4MzEsCi0gIDB4OGQsMHg2ZSwweDg5LDB4N2YsMHhmNSwweDI3LDB4ZjgsMHgzZiwweDUxLDB4YjMsMHgxYSwweGVkLDB4MzEsMHhlZCwweDUwLDB4M2YsCi0gIDB4YTIsMHhhOSwweDZmLDB4OTEsMHgxMywweDhhLDB4ZDksMHg5OCwweDg2LDB4NzcsMHg0YywweGYzLDB4ZjEsMHg3YywweGY5LDB4NTQsCi0gIDB4ZmYsMHhjZiwweGYzLDB4YmMsMHgxYSwweGVkLDB4MTYsMHgzNCwweGMyLDB4OWIsMHg0MSwweDFkLDB4YWMsMHg4YiwweGY5LDB4MGIsCi0gIDB4MDIsMHg2ZiwweGY1LDB4Y2YsMHhlOSwweGUxLDB4ZjEsMHgwOCwweGIzLDB4ZTMsMHgxMiwweGRhLDB4NTMsMHg2NSwweDE2LDB4ZmUsCi0gIDB4MGYsMHg4ZiwweGJmLDB4ZTMsMHg3YywweDE3LDB4OTEsMHhkNSwweDk2LDB4MTUsMHgyMSwweGVlLDB4MWQsMHhiNSwweDI5LDB4MjIsCi0gIDB4NTcsMHg0YywweDRmLDB4YTMsMHgwNiwweDhmLDB4YzUsMHhkZCwweGJhLDB4NWMsMHgxOSwweGY2LDB4MjYsMHhmYiwweGMzLDB4MmEsCi0gIDB4NWYsMHhiMywweDFmLDB4NDAsMHgxOCwweDIwLDB4ZDcsMHg5MSwweDQzLDB4MjQsMHgxYywweDI5LDB4MTgsMHhhMCwweDIzLDB4YmMsCi0gIDB4NWYsMHg2YSwweDc0LDB4NzYsMHg1YywweDBlLDB4OTAsMHg1OSwweGQyLDB4YmUsMHgyZCwweGM1LDB4N2EsMHhjYiwweDlhLDB4NzAsCi0gIDB4NjUsMHhiMiwweDNlLDB4MDAsMHhlNSwweDZjLDB4NjcsMHgwZiwweGM4LDB4YWEsMHgwOCwweDllLDB4YTMsMHg2MCwweDE2LDB4Y2EsCi0gIDB4YmUsMHgzYiwweGY0LDB4MDIsMHgyZiwweDMzLDB4OTIsMHgzMywweGNkLDB4MGUsMHhjMywweDUwLDB4ZDksMHhlZiwweDU4LDB4MjAsCi0gIDB4NjcsMHgyNywweGViLDB4MDMsMHhjYywweGUwLDB4ZWIsMHg3MywweDk4LDB4NmYsMHg5MiwweDMzLDB4ZGEsMHgxNSwweDQwLDB4ZDgsCi0gIDB4MTMsMHhmZiwweGMyLDB4MDUsMHhlOSwweDYzLDB4MDksMHg5NywweGU1LDB4NTcsMHhkMywweGM2LDB4NjAsMHg4YywweDU0LDB4OTksCi0gIDB4ZmQsMHhkMSwweGE2LDB4ZjAsMHg3ZiwweDdjLDB4N2EsMHg4MCwweGQ1LDB4MTgsMHhjYSwweDA5LDB4ZGUsMHgyOCwweGQ2LDB4MjMsCi0gIDB4MmUsMHgxMCwweDRjLDB4ZGEsMHg0ZiwweDljLDB4ZmIsMHhkZiwweDYwLDB4NDEsMHgxZiwweGFlLDB4OTgsMHgyZCwweDg5LDB4N2YsCi0gIDB4ZjIsMHg0YywweDNlLDB4MjEsMHhhMywweDVhLDB4ZjYsMHhkYiwweGQwLDB4ODgsMHg2OCwweDg3LDB4YTIsMHgzYywweGMxLDB4MTUsCi0gIDB4ZGIsMHg2MSwweDk4LDB4ODUsMHhmNywweDlmLDB4ODUsMHhmYywweGEzLDB4OTEsMHg3YSwweGYxLDB4YTEsMHg2NCwweGZkLDB4YjcsCi0gIDB4NDQsMHg3ZCwweDI0LDB4OWQsMHgwNiwweGIyLDB4NWYsMHg4NywweGY1LDB4ZWMsMHhlYiwweGJjLDB4MGQsMHhjYSwweDJjLDB4ZTksCi0gIDB4ZTksMHg3NSwweGY4LDB4YmUsMHhjYiwweGM5LDB4M2IsMHhiMCwweDhmLDB4Y2QsMHhkNiwweDY5LDB4MzksMHgzZSwweGZkLDB4YzQsCi0gIDB4ZmEsMHhkNywweDk5LDB4ZmMsMHgxZiwweDc3LDB4OTgsMHg2NiwweDM4LDB4NGYsMHhiMSwweDQ2LDB4YjQsMHg1ZSwweDVkLDB4MmEsCi0gIDB4OTksMHg5MywweGM2LDB4MTksMHgwZSwweDI3LDB4MWUsMHg0NywweGZiLDB4ZTIsMHg3MCwweDQ4LDB4Y2QsMHhlOSwweDJjLDB4MjcsCi0gIDB4N2YsMHg2YiwweGUxLDB4M2YsMHg5YiwweDQyLDB4NzUsMHgwYiwweDFkLDB4MTIsMHg0NywweGMyLDB4YTcsMHgwMiwweGE1LDB4Y2MsCi0gIDB4MWUsMHgyYSwweDU4LDB4ODQsMHg1NywweGNhLDB4OTgsMHg2MywweDQ4LDB4MWMsMHgxNCwweGFlLDB4ZjQsMHgyZCwweGU4LDB4YjIsCi0gIDB4MGYsMHg4YSwweDk2LDB4ZmUsMHhiMCwweDg5LDB4ZjgsMHg5NywweDMwLDB4Y2YsMHgzNCwweGMzLDB4MDMsMHgyNiwweDEwLDB4M2EsCi0gIDB4NmIsMHhmMCwweDBhLDB4NDIsMHg5YywweDA4LDB4OTQsMHg3MCwweDBkLDB4YWQsMHg5ZCwweDUyLDB4MWYsMHhjMCwweGFjLDB4MGYsCi0gIDB4YjksMHhiOSwweGIxLDB4MTcsMHg3YSwweGQ0LDB4MmUsMHhiMywweDdmLDB4MTYsMHgxYywweGQzLDB4ZjEsMHhjYSwweDRmLDB4NGMsCi0gIDB4NDUsMHhlZiwweDM1LDB4NWEsMHg5NSwweDk0LDB4ZmUsMHhiMCwweGFiLDB4Y2MsMHgzMiwweDhmLDB4ZjIsMHgxMywweGNlLDB4MDEsCi0gIDB4ZTksMHgwZCwweGNkLDB4MmMsMHg5NCwweGZkLDB4MzQsMHg2OSwweGQ2LDB4ZGIsMHgzNSwweDc5LDB4NWIsMHhhMiwweDAyLDB4NjQsCi0gIDB4YmQsMHhlYiwweDI3LDB4NDQsMHg0ZiwweGM2LDB4YmYsMHgwNCwweGRlLDB4MTYsMHgwZCwweGFkLDB4YWQsMHhhOCwweGYzLDB4M2QsCi0gIDB4ODQsMHg1NSwweGNlLDB4YjMsMHgxOSwweDUxLDB4OWIsMHg1OSwweDFmLDB4MDAsMHgxMSwweDU0LDB4ZDgsMHg5YywweDVmLDB4NGIsCi0gIDB4YjcsMHg1OCwweGZhLDB4YzMsMHhmMiwweGY4LDB4ZDcsMHg0MSwweDA0LDB4MzksMHhhNiwweGI3LDB4NjcsMHhiMywweGU2LDB4ZmMsCi0gIDB4MTIsMHhkZSwweGZmLDB4NTEsMHg2OCwweDMwLDB4MGIsMHgwNSwweGQ4LDB4NGMsMHg2YSwweDEwLDB4MDcsMHgwNiwweDFiLDB4MjYsCi0gIDB4ZWIsMHgwMywweDI0LDB4ZTIsMHg1ZiwweDFlLDB4ODEsMHg3YiwweDFiLDB4MDgsMHhlZiwweDA2LDB4YzIsMHhlZCwweDJmLDB4YTksCi0gIDB4NmYsMHhiYywweDUwLDB4MDAsMHgxZCwweDg2LDB4MmUsMHg4ZSwweDdmLDB4YjIsMHg1MiwweGUyLDB4NWYsMHhhMywweDVhLDB4NTUsCi0gIDB4Y2YsMHhjZCwweGZkLDB4MDUsMHg2NiwweDdmLDB4NTgsMHg2ZCwweDljLDB4ZjYsMHhlMywweGQzLDB4OTYsMHg3MSwweDQ3LDB4OTAsCi0gIDB4NTksMHgzMSwweGU5LDB4ODIsMHhiNSwweDNmLDB4MWEsMHg3NywweDdhLDB4YTgsMHg5NSwweDQxLDB4NDcsMHgzMCwweGU3LDB4NDIsCi0gIDB4ZTQsMHg5NSwweGYyLDB4ZjksMHhiNSwweDA4LDB4MDMsMHg5ZSwweDY1LDB4YWYsMHg2OCwweGI4LDB4M2UsMHhhZiwweGM5LDB4ODUsCi0gIDB4NjYsMHhhOSwweDAxLDB4ZmIsMHg2YiwweDYyLDB4YmEsMHgzNSwweGZlLDB4MDUsMHhkZCwweDdhLDB4ODksMHgyMCwweDIzLDB4ZGEsCi0gIDB4MjEsMHgyYywweGU0LDB4YTQsMHhmOCwweDNjLDB4ZGYsMHgwYSwweDQ3LDB4ZDAsMHg1MCwweDkyLDB4OWIsMHhiMiwweDU1LDB4OTQsCi0gIDB4MjcsMHgzZSwweGEwLDB4NGQsMHgyNCwweDZiLDB4NTIsMHhmZSwweDk4LDB4ZjEsMHhhZiwweDNhLDB4M2MsMHg3NCwweDc5LDB4OWMsCi0gIDB4ZWQsMHgwMywweDJiLDB4NzksMHgxOCwweGViLDB4NDUsMHg1ZSwweDc2LDB4MWUsMHhkZiwweDM3LDB4NmMsMHgwMiwweGExLDB4NTAsCi0gIDB4ZGQsMHg3NCwweDkyLDB4OWQsMHhlNCwweGZmLDB4NDgsMHgxYywweGZmLDB4OTQsMHgwNCwweGNjLDB4NmEsMHhlNCwweGJiLDB4YzAsCi0gIDB4YWMsMHgyZSwweGI1LDB4OGEsMHgzNiwweDRiLDB4NDQsMHgxMywweGRiLDB4YzYsMHgxMSwweDI2LDB4MWEsMHgzMiwweDQ5LDB4N2IsCi0gIDB4NWYsMHg5ZiwweDZlLDB4YzIsMHg5ZSwweDkwLDB4YTMsMHhhZCwweGUwLDB4ZTUsMHhkMCwweGZiLDB4NjcsMHhiYywweGY3LDB4NjcsCi0gIDB4ZmQsMHg0NCwweDNjLDB4YzcsMHhmOSwweGVkLDB4MjYsMHg5MCwweDEzLDB4NDYsMHg5OSwweDRmLDB4OWIsMHg4OSwweGE2LDB4ZWIsCi0gIDB4ZDQsMHhmOCwweDE3LDB4YWYsMHg5NywweDc1LDB4MGUsMHhkZSwweDYwLDB4NDcsMHhiNCwweDRkLDB4NWIsMHhjNCwweDVlLDB4MzYsCi0gIDB4MGEsMHg0NywweGFhLDB4MWQsMHhkOSwweDhkLDB4N2MsMHhlOSwweDJhLDB4NTYsMHhkZCwweDZjLDB4YWQsMHgwZiwweDkwLDB4ZTAsCi0gIDB4ZmYsMHhmOCwweGE2LDB4MmYsMHg2NSwweDA1LDB4ZjksMHg4NSwweDdkLDB4NWEsMHg1NywweDJlLDB4YmUsMHg2ZiwweDA4LDB4Y2UsCi0gIDB4MjQsMHgwYSwweDI1LDB4MjEsMHgzNCwweDYyLDB4M2UsMHhkNSwweGRlLDB4MmEsMHg5MiwweDk0LDB4ZjgsMHgxNywweGEyLDB4NDEsCi0gIDB4NDYsMHhlMywweGUyLDB4MGYsMHg2MCwweDYzLDB4NjAsMHg4MSwweDZlLDB4NTMsMHhjOSwweDZkLDB4YjAsMHhkMSwweDI4LDB4NjEsCi0gIDB4NjgsMHhkMSwweGJiLDB4ZTAsMHg4OCwweDgwLDB4NDcsMHgyZiwweDRlLDB4MzYsMHhhNCwweGM2LDB4YmYsMHg1MCwweGRhLDB4NWMsCi0gIDB4N2YsMHgzZCwweGFlLDB4NDYsMHhjYiwweGJiLDB4ODUsMHhiYywweDkxLDB4YzEsMHgxNywweGQ1LDB4NjYsMHgyZSwweDlmLDB4NjcsCi0gIDB4YTIsMHhlMiwweGU2LDB4YmYsMHhlMiwweDEyLDB4NjksMHgxMiwweGZmLDB4OTgsMHhmMSwweDJmLDB4OTgsMHgzNywweDk4LDB4NzcsCi0gIDB4MjYsMHhmYiwweGJmLDB4ZGIsMHhkNiwweGMyLDB4MmQsMHg4NiwweDZkLDB4OTgsMHg0YywweDg3LDB4MjYsMHg1YSwweDZjLDB4ZGMsCi0gIDB4ZjgsMHgzZCwweDMyLDB4NTMsMHhlMiwweGQwLDB4ODgsMHhhYSwweDYxLDB4N2QsMHgzMiwweDFmLDB4OWMsMHhjNywweGJmLDB4MTAsCi0gIDB4ZmYsMHgwYywweGJhLDB4MDMsMHhlMiwweDc1LDB4ZDIsMHhjYiwweDRkLDB4YjcsMHgyMiwweGVjLDB4MjksMHg3OCwweDg0LDB4ZmMsCi0gIDB4M2IsMHg2NywweDQ0LDB4OWYsMHg5MSwweDRkLDB4NjgsMHhhNCwweGJhLDB4ZWIsMHg0NCwweDRiLDB4N2YsMHhkOCwweDA0LDB4MWUsCi0gIDB4MzgsMHg4YSwweGZiLDB4OGQsMHg5NywweDhkLDB4M2EsMHhhMiwweDk5LDB4NmQsMHhiYiwweGM3LDB4YzAsMHhlYywweDE3LDB4M2YsCi0gIDB4YzQsMHgyYiwweDQyLDB4NDMsMHg2YSwweDdmLDB4ZDgsMHhiNiwweDIzLDB4MTQsMHhlZCwweGY3LDB4NzcsMHgzMywweDk3LDB4ZTcsCi0gIDB4OTQsMHhkOSwweDRlLDB4YjEsMHhkMiwweDEwLDB4MDIsMHg4OSwweGNmLDB4YjksMHg0NywweDI4LDB4ZWUsMHhlOCwweDQzLDB4ZmQsCi0gIDB4NzUsMHgyOSwweDNhLDB4OWYsMHhhYiwweGI2LDB4NjQsMHg3YywweGJjLDB4NTMsMHg0OSwweGY4LDB4OWYsMHg2OSwweDkwLDB4Y2MsCi0gIDB4NjQsMHg0ZCwweDVhLDB4N2UsMHg2ZCwweDY2LDB4M2QsMHg1YSwweDRmLDB4NGQsMHhjMSwweDYyLDB4NDMsMHhhYywweDI2LDB4MzMsCi0gIDB4MTEsMHgxYSwweGRkLDB4OGEsMHhhMiwweDQ5LDB4ZmMsMHhiNiwweGI1LDB4M2YsMHhhYywweDM5LDB4M2YsMHg2MywweDk4LDB4ZTQsCi0gIDB4ZDIsMHhiMCwweDUyLDB4YTAsMHhkMSwweDYxLDB4NzIsMHg5YSwweDdiLDB4ODQsMHgwYywweDU5LDB4MGIsMHgyMywweDE0LDB4MGMsCi0gIDB4MTUsMHg2OCwweDI5LDB4ZmQsMHg2MSwweDBiLDB4Y2QsMHhmYSwweDQ4LDB4MjUsMHhmZCwweDk0LDB4YjcsMHgyNSwweDBhLDB4MWIsCi0gIDB4MmIsMHhkNywweGRjLDB4NTksMHg4OSwweGFiLDB4MTcsMHhlNiwweGYyLDB4ZGMsMHgxNSwweGU2LDB4NTQsMHhjYywweDQyLDB4Y2QsCi0gIDB4MDUsMHgyNCwweDkwLDB4N2MsMHg5ZSwweDM0LDB4YWUsMHhiZiwweGFhLDB4Y2UsMHg2NCwweGU2LDB4ODUsMHgyNSwweGVkLDB4ODQsCi0gIDB4ZDEsMHhkNSwweDY3LDB4M2YsMHgyMCwweDBlLDB4ODQsMHg4ZSwweDk5LDB4ZmEsMHg0YiwweDc2LDB4NzMsMHhkNSwweGMzLDB4NDMsCi0gIDB4ZjMsMHg0NSwweDkzLDB4ZWIsMHhjOSwweGE2LDB4OGYsMHhhZiwweDRmLDB4YjQsMHhmMSwweDNkLDB4ZWQsMHg5MywweGEwLDB4ODksCi0gIDB4N2YsMHhjZSwweGRhLDB4NDcsMHg2ZSwweDM3LDB4ZmIsMHgzNSwweGUwLDB4ZmEsMHgwNCwweDdkLDB4OTIsMHhlMywweDM5LDB4MGIsCi0gIDB4ZmUsMHg0OSwweGYwLDB4N2YsMHhhYSwweDhjLDB4YWMsMHgzZSwweDcxLDB4NGUsMHhmYSwweGFiLDB4OTEsMHhkMiwweDFlLDB4ZmIsCi0gIDB4YjAsMHg1YywweDk5LDB4MjgsMHgxMywweDE0LDB4ZTUsMHhmZSwweDlmLDB4NjgsMHgyOSwweDM4LDB4NDIsMHgyMiwweDlkLDB4ZjQsCi0gIDB4ZmYsMHhmMCwweGY4LDB4ZDcsMHhmMywweDMwLDB4Y2YsMHhhMCwweGFkLDB4ZWQsMHhiMywweGExLDB4ZDUsMHgyOCwweGQwLDB4M2EsCi0gIDB4M2QsMHhhNCwweDVkLDB4M2QsMHhjOCwweDRhLDB4OGMsMHgzYiwweDIzLDB4ZGMsMHg5ZiwweDYzLDB4OTQsMHg5NSwweGNiLDB4MWQsCi0gIDB4YzQsMHgzNSwweDE1LDB4ZmYsMHgxOCwweGI2LDB4MDYsMHhhMiwweDg2LDB4MzYsMHhhOCwweDI4LDB4NmQsMHg2MiwweGJjLDB4OWUsCi0gIDB4MzMsMHg2ZiwweDYzLDB4MTEsMHgwOSwweDBmLDB4ZDEsMHg0MywweGQ0LDB4YjksMHgwMywweDA3LDB4ZWEsMHhlNCwweDdlLDB4YjMsCi0gIDB4ZTUsMHgyNiwweGY4LDB4ZjYsMHg2OCwweGFkLDB4MTQsMHhlMiwweDMxLDB4ZDQsMHgzNSwweDFhLDB4Y2IsMHg2ZSwweDgyLDB4MTgsCi0gIDB4ZGYsMHg4MSwweGJjLDB4NTAsMHhkMiwweDFlLDB4ZTAsMHgxYywweDIzLDB4NDIsMHgyNiwweGZiLDB4YzMsMHgxMiwweDhlLDB4N2YsCi0gIDB4NTAsMHgwZCwweDY1LDB4YjEsMHg2OSwweDg1LDB4OWMsMHg3NiwweGE4LDB4ZDksMHg3OSwweGUzLDB4OGMsMHgxMSwweGJlLDB4M2UsCi0gIDB4ZDEsMHg4MiwweDIxLDB4MzgsMHg2ZiwweDBhLDB4MjIsMHgxOSwweDI2LDB4ZmIsMHhjMywweGI2LDB4Y2YsMHgxOCwweDRmLDB4ZDIsCi0gIDB4MzEsMHhjNCwweDBiLDB4YjgsMHg2ZCwweDE2LDB4NmIsMHg4ZSwweDdhLDB4ZDEsMHgyYywweDE0LDB4YzAsMHhhZiwweDhjLDB4MjksCi0gIDB4OTcsMHg5NSwweDQ1LDB4NjYsMHg3ZCwweGM4LDB4NjQsMHg3ZiwweDU4LDB4OGUsMHg5ZiwweGQ3LDB4OTksMHg0NSwweGQ0LDB4ODcsCi0gIDB4ZWYsMHgzYiwweGQxLDB4ZTQsMHg3ZCwweGM1LDB4ZGUsMHgyNywweDNlLDB4ZGMsMHg3MCwweDkyLDB4NzksMHgyMywweGFkLDB4ZTcsCi0gIDB4ZjIsMHhhZiwweGMwLDB4MjksMHhiMywweGJlLDB4YzQsMHhkNCwweGY4LDB4MTcsMHgzYywweDkwLDB4NjgsMHgwMiwweGQyLDB4MDIsCi0gIDB4M2IsMHg0ZiwweGEyLDB4MzQsMHhiOCwweDI5LDB4YmUsMHg4MSwweDM5LDB4NWIsMHgxZCwweDdiLDB4YzksMHgwMywweGIwLDB4NDEsCi0gIDB4N2QsMHhhNiwweGFmLDB4YTUsMHhjYiwweDc2LDB4NGQsMHhmYywweDhiLDB4ZGIsMHgxNywweDA2LDB4NmIsMHgxNCwweGQ0LDB4YmUsCi0gIDB4ZTYsMHgwOCwweGIxLDB4MmIsMHgxMSwweDQxLDB4MGQsMHg0NywweDljLDB4YTgsMHg4ZiwweDM2LDB4NTAsMHhmNSwweGE4LDB4ZWMsCi0gIDB4MDksMHg4NywweDJkLDB4ZjksMHg1ZiwweDY2LDB4ZmMsMHg4YiwweDdiLDB4Y2YsMHhjZSwweDA5LDB4OGQsMHhlMCwweGVjLDB4OTksCi0gIDB4MWIsMHhiNSwweGI5LDB4YTcsMHg2ZCwweDA4LDB4YTksMHg3MSwweDViLDB4MjcsMHg1OSwweDBkLDB4MWIsMHg0YywweDNlLDB4OTUsCi0gIDB4ODUsMHhmZiwweGFjLDB4OTksMHhmMSwweGFmLDB4MTIsMHg0ZSwweGZhLDB4MWEsMHgyMCwweGJjLDB4MmQsMHg2YywweGU2LDB4MmUsCi0gIDB4ODQsMHgyNSwweDRjLDB4ZjAsMHhjNiwweDY4LDB4YTcsMHg3OCwweDEyLDB4MGMsMHhlOCwweGUyLDB4ODUsMHhlNSwweGEzLDB4ZDcsCi0gIDB4ZmEsMHg3ZiwweDg2LDB4NmIsMHgwNiwweDEyLDB4MWIsMHg2MywweDQ0LDB4ZGMsMHhjZSwweGNmLDB4MTcsMHhhZiwweDI4LDB4ZjUsCi0gIDB4MzAsMHg1YywweDMxLDB4NWIsMHhhYiwweDE0LDB4YWMsMHg0OSwweDhkLDB4N2YsMHhlNSwweGYxLDB4N2MsMHgwNCwweDMxLDB4MDIsCi0gIDB4MjcsMHg2MCwweDcxLDB4MGYsMHhjMiwweGE0LDB4MjEsMHg2OCwweGQ2LDB4MzgsMHhlYywweGNjLDB4MTksMHhiYSwweDZmLDB4NTQsCi0gIDB4MzMsMHhmOSwweGQ1LDB4ZDcsMHhjNCwweGJmLDB4MGMsMHhiOSwweDNiLDB4MzQsMHgwNCwweDJkLDB4NmMsMHg5ZSwweDIxLDB4ZGYsCi0gIDB4NGEsMHhjNiwweGEwLDB4MzksMHhkNywweGQ5LDB4NDYsMHg3NSwweGYyLDB4YjEsMHg3NiwweDQ4LDB4MmIsMHgzMywweGU0LDB4MjMsCi0gIDB4MzAsMHgyNSwweGZlLDB4YzUsMHg5YiwweDU2LDB4OTQsMHhlMywweGQ3LDB4MzUsMHhhYiwweGYxLDB4NGIsMHhiOCwweDJjLDB4MGQsCi0gIDB4NGEsMHgyMSwweGU0LDB4YzEsMHgxZCwweGE3LDB4NTAsMHhiYiwweGE4LDB4NDYsMHg0YiwweDhjLDB4NGQsMHg4OSwweDdmLDB4ZTksCi0gIDB4NjYsMHg1MywweDhjLDB4MzcsMHhkOSwweDYzLDB4N2EsMHhmMSwweGQwLDB4OGQsMHhkZiwweDI2LDB4ZWYsMHg5MCwweDRkLDB4OTAsCi0gIDB4YWYsMHhiYSwweDAyLDB4Y2UsMHg3NywweGUwLDB4NDAsMHhlYywweDQ5LDB4ZmUsMHhhYiwweDI5LDB4ZjEsMHgyZiwweGJkLDB4OTIsCi0gIDB4MTcsMHg0MSwweGRhLDB4MTAsMHhmZSwweDc1LDB4NjcsMHhlNSwweGEwLDB4ODMsMHg5MiwweDkzLDB4NWEsMHg4ZiwweDFhLDB4ZGIsCi0gIDB4NmQsMHg5ZiwweDI3LDB4OWUsMHg5NCwweGNlLDB4YmIsMHg2MiwweGJkLDB4OGUsMHgzZCwweGIyLDB4MjUsMHhmZSwweDk1LDB4MzksCi0gIDB4YjEsMHgzZSwweDA1LDB4NjMsMHhkYSwweGM3LDB4NTAsMHg3NSwweGRhLDB4MTEsMHgxNywweGM2LDB4OTQsMHhhNywweDlkLDB4NTUsCi0gIDB4ZWMsMHhjNiwweGEzLDB4MzUsMHg2MywweGRhLDB4ZTcsMHhlYSwweGYzLDB4YmMsMHhmNCwweDY4LDB4YWEsMHhmZiwweDg3LDB4OTMsCi0gIDB4YzAsMHgzMywweDc5LDB4YmYsMHg5ZSwweDEzLDB4NzAsMHhlOCwweGE0LDB4N2QsMHg5YiwweGY4LDB4MWQsMHhlMywweDdjLDB4MzgsCi0gIDB4MWQsMHhjMiwweDBjLDB4M2YsMHg0NCwweDE3LDB4ZmUsMHg2YSwweGQzLDB4ZDQsMHhmYSwweGQ4LDB4Y2YsMHg5YiwweDI0LDB4ZTcsCi0gIDB4ZjQsMHg1ZSwweDE0LDB4MjMsMHgxYywweGZmLDB4ZDgsMHhlZSwweDU3LDB4ZjcsMHhjMywweGFkLDB4MjAsMHg2YiwweDM2LDB4ZGUsCi0gIDB4N2EsMHg3MiwweDZlLDB4Y2YsMHgzNSwweGZkLDB4NDEsMHgxZSwweDMzLDB4ZjMsMHhiZiwweGM4LDB4OWIsMHhiMCwweDg5LDB4Y2QsCi0gIDB4MWUsMHhjYywweDU4LDB4NGUsMHg2NiwweGIxLDB4MDMsMHg0NiwweGJlLDB4MmEsMHhhZiwweGY2LDB4Y2UsMHhhMiwweDRmLDB4YjAsCi0gIDB4MWQsMHg2NiwweDdmLDB4OTAsMHhjOSwweDdjLDB4MTksMHhlZSwweGZmLDB4MzksMHgwYywweDJlLDB4NDMsMHhlNCwweDdjLDB4ODYsCi0gIDB4MTYsMHg5OCwweDYzLDB4ZmMsMHg0ZCwweDA1LDB4NTksMHgyZCwweGVkLDB4ODUsMHhjMiwweDc1LDB4YjIsMHhjZSwweGYxLDB4YTQsCi0gIDB4NWEsMHg2NCwweGI0LDB4NGMsMHhhZCwweDhmLDB4ZmQsMHg2NiwweGEyLDB4ZTksMHhmNiwweDA4LDB4ZTMsMHg2ZCwweDQxLDB4OWEsCi0gIDB4M2YsMHgxMiwweDVkLDB4NzAsMHhjNSwweDI4LDB4OGQsMHg2NSwweDBkLDB4ZjIsMHg0MiwweDQ5LDB4MjgsMHg3ZiwweDk2LDB4ZTksCi0gIDB4MDUsMHg1MywweGVhLDB4NjMsMHhjMywweDdlLDB4NDgsMHhiNCwweDg1LDB4YWQsMHhhZSwweGMwLDB4YmYsMHgxMCwweDUxLDB4NDMsCi0gIDB4YTksMHgzYywweDQyLDB4NTQsMHg3MywweDU2LDB4MTgsMHhiOSwweGY3LDB4M2YsMHhhOCwweDhmLDB4N2QsMHhmMywweDRmLDB4NzgsCi0gIDB4OWEsMHgwZiwweDczLDB4NmEsMHhmNiwweDJkLDB4MDUsMHgwMywweDcwLDB4YTcsMHg1NiwweGE5LDB4ZGQsMHgxMywweDE1LDB4NTcsCi0gIDB4NDksMHhhMywweDY2LDB4YTAsMHg4NywweDRjLDB4ZjEsMHhmZiwweDY4LDB4MjYsMHhkYSwweDE5LDB4MjAsMHhjZCwweDNiLDB4ZGEsCi0gIDB4YjUsMHg0YywweGIzLDB4ZjAsMHgzMiwweGFiLDB4ZTAsMHg2ZSwweDg3LDB4ZDksMHhmNiwweDNkLDB4NWEsMHhkOSwweDlmLDB4YTksCi0gIDB4OGYsMHg0NCwweDlkLDB4ZTMsMHg2OSwweDRhLDB4NmEsMHg5MSwweDc2LDB4M2QsMHgwZSwweDk0LDB4NWQsMHg1MCwweDcyLDB4M2EsCi0gIDB4MmYsMHg0YSwweDBhLDB4NmIsMHgwZiwweDgzLDB4ZTksMHhhZiwweDk4LDB4ZTIsMHhmZiwweDQxLDB4OTAsMHgyMywweDhmLDB4NTcsCi0gIDB4NDMsMHgwYSwweDBhLDB4NGEsMHhkOSwweDhiLDB4MzAsMHg1ZiwweGE4LDB4MGIsMHg5NiwweGYzLDB4NDYsMHg2OSwweDA3LDB4YjUsCi0gIDB4OGUsMHg2MCwweGY5LDB4ODIsMHgyOSwweGY1LDB4YjEsMHhiYiwweDcxLDB4YmYsMHgyZSwweDQ5LDB4NTQsMHg0MywweDJhLDB4ODcsCi0gIDB4OWIsMHhmOCwweDYwLDB4MzAsMHhkZCwweDA3LDB4NGIsMHg4MSwweDM3LDB4OTIsMHgzMywweGY5LDB4M2YsMHhkNiwweGZhLDB4ZDgsCi0gIDB4OTksMHhlMywweDIwLDB4MjcsMHgyYSwweGYyLDB4YjIsMHhkOCwweDY1LDB4YzEsMHg3OSwweDQxLDB4YjQsMHg0ZiwweDdmLDB4NjcsCi0gIDB4MTIsMHhhMSwweDBiLDB4YzYsMHg3ZiwweGQ1LDB4NmYsMHg4ZCwweDdmLDB4OTksMHhmMywweGJkLDB4ZDUsMHg3OCwweGIxLDB4ZDAsCi0gIDB4NzgsMHg1MSwweGYxLDB4ZGUsMHg2NSwweGVmLDB4YzcsMHg4ZCwweGY0LDB4MGEsMHg1NCwweDY5LDB4MzMsMHgzNywweGNiLDB4MGIsCi0gIDB4ZjIsMHgyZSwweGE3LDB4N2IsMHg2YiwweGVkLDB4NmQsMHg1NiwweGZjLDB4MDMsMHhkYywweGZmLDB4ZDMsMHg4ZSwweDQ3LDB4OGIsCi0gIDB4ZTQsMHgxYiwweDExLDB4YjUsMHgzZCwweDBmLDB4MDUsMHhlOSwweDU5LDB4ODgsMHg0MCwweDA5LDB4MzEsMHhmYiwweGEzLDB4NzUsCi0gIDB4YTksMHg0ZSwweGVhLDB4MzIsMHhhNiwweGM0LDB4YmYsMHgwZSwweGJiLDB4NTQsMHg5ZSwweDY2LDB4ZDIsMHgwNCwweDI4LDB4N2YsCi0gIDB4ZmMsMHg3NSwweDhhLDB4ZmYsMHg0NSwweGI1LDB4MDEsMHhkYywweGI1LDB4NTQsMHhmMSwweGUzLDB4ZmIsMHhiYSwweDc2LDB4MDQsCi0gIDB4NWMsMHhhZiwweDkxLDB4YTksMHhmZSwweDFmLDB4YmUsMHg5ZSwweDc3LDB4M2MsMHhlNSwweDZjLDB4MTAsMHg1NCwweDVlLDB4ZTgsCi0gIDB4N2UsMHhjMCwweGQ2LDB4OWMsMHhiNiwweGJhLDB4ZDYsMHg5NSwweDRiLDB4ZGMsMHhjMiwweDQxLDB4YzgsMHhkNywweGYyLDB4ZmEsCi0gIDB4YWQsMHhmMSwweDJmLDB4OWUsMHhmZiwweDY1LDB4OTYsMHgzZCwweDk3LDB4OWYsMHhjYywweGUzLDB4ZmMsMHgxZiwweDMzLDB4NGMsCi0gIDB4NzYsMHg0YywweDdiLDB4NjAsMHg2NSwweDY0LDB4YTIsMHgyMiwweGJhLDB4NWQsMHgyOSwweDk4LDB4ZTIsMHhmZiwweDQ5LDB4MzQsCi0gIDB4ODUsMHhjMSwweGFmLDB4MGYsMHgzYywweDUxLDB4OGUsMHg4NywweDQxLDB4MDUsMHg0NCwweDQ0LDB4OGYsMHg4YiwweDEzLDB4YWUsCi0gIDB4NDIsMHgzOSwweGM1LDB4ZmYsMHgyMywweDhkLDB4ZmIsMHhkZiwweDc2LDB4YzAsMHgwOCwweGY1LDB4MGEsMHg3NiwweGQ2LDB4MTAsCi0gIDB4ZTcsMHg4NSwweDQ5LDB4ZjMsMHgxMCwweDdmLDB4YzYsMHhkNSwweDQxLDB4ZTYsMHhlNSwweGZjLDB4MWYsMHg0YiwweGZjLDB4ZWIsCi0gIDB4NzYsMHgwNCwweDM5LDB4YmMsMHgzZSwweDJkLDB4ZWYsMHhlNiwweDcyLDB4MDQsMHhkYSwweDk5LDB4NmIsMHg0MCwweGVjLDB4NDQsCi0gIDB4NzQsMHhmNSwweDBmLDB4NTEsMHg1OSwweGY3LDB4NWYsMHg4NCwweDQzLDB4NDYsMHgzYiwweGEzLDB4N2EsMHg0YSwweDdmLDB4YjQsCi0gIDB4MDQsMHhmZSwweGMxLDB4ZmQsMHhiMCwweGRiLDB4OGMsMHgzZSwweDY0LDB4OTQsMHg5MywweDIxLDB4ZGEsMHg1NSwweGVmLDB4ZTYsCi0gIDB4MmIsMHg3NiwweDRhLDB4ZGIsMHhhMSwweGE4LDB4ZjEsMHhlNiwweGYyLDB4ZjQsMHhiYiwweGFlLDB4ZjEsMHhmZiwweDJjLDB4YTksCi0gIDB4MjcsMHg2ZiwweDBiLDB4Y2YsMHg4MywweGRhLDB4OTcsMHhjNywweGYzLDB4YTcsMHgwZSwweGMwLDB4NzcsMHhiNCwweDk2LDB4ODcsCi0gIDB4ZjAsMHhjYSwweDAxLDB4ZDgsMHhkMSwweDlmLDB4ZjEsMHgzZCwweDYyLDB4ZTksMHg4ZiwweDA2LDB4M2MsMHhmZSwweDU1LDB4NmMsCi0gIDB4NzYsMHgwMywweDg5LDB4ZmQsMHhhOSwweDYxLDB4ZmEsMHhhMCwweDdkLDB4NzksMHhjZSwweDNiLDB4ZWEsMHgwNSwweGYzLDB4NGEsCi0gIDB4YzEsMHgzYiwweDcwLDB4OGUsMHg5NSwweGVhLDB4YzUsMHg4MywweGQ2LDB4ZmUsMHg2OCwweDY2LDB4YmYsMHg1NCwweGRlLDB4MWYsCi0gIDB4YTQsMHg4MCwweDQ3LDB4Y2YsMHhhYiwweDVlLDB4NzIsMHg0NCwweDczLDB4N2UsMHgwZSwweDk3LDB4MDgsMHg0YSwweGUwLDB4ZmQsCi0gIDB4MDUsMHg0MywweGE2LDB4YWIsMHgzNiwweDRiLDB4NGYsMHhlOSwweDBmLDB4NzIsMHg4NSwweGYzLDB4N2YsMHg1MCwweDQ5LDB4ZTUsCi0gIDB4NWYsMHgwOSwweGVkLDB4NDIsMHhiMywweDdkLDB4NjksMHg2NywweDgxLDB4MmYsMHg3NCwweDJhLDB4M2EsMHgyZiwweGU0LDB4MTgsCi0gIDB4NmIsMHhmNCwweDY5LDB4MmYsMHgyMywweDIyLDB4NWEsMHg3YSwweGE2LDB4MjAsMHhiNSwweDNlLDB4ZjYsMHg3OCwweGZlLDB4ZTksCi0gIDB4NDksMHg2ZCwweDNkLDB4MmIsMHgxZSwweGE0LDB4NWYsMHgyMCwweDMzLDB4ZTEsMHgyOSwweGFkLDB4YjgsMHgwZSwweGRmLDB4NzcsCi0gIDB4MWIsMHgzYywweDBkLDB4NWYsMHhkMCwweGU4LDB4ZGYsMHg1OSwweGZkLDB4M2YsMHgwYSwweGU3LDB4ZmYsMHg5OCwweGYzLDB4N2YsCi0gIDB4MGIsMHhmYiwweDU0LDB4NzcsMHgxZiwweDNkLDB4YWEsMHgyZSwweDk1LDB4ZDYsMHhkMSwweGUyLDB4M2UsMHhiYywweDMyLDB4MTMsCi0gIDB4ZDYsMHhjMSwweDZjLDB4YzgsMHgwOCwweDRjLDB4ZTksMHgwZiwweGQyLDB4MDUsMHgzYSwweGNmLDB4YTcsMHgxYiwweDEyLDB4YjYsCi0gIDB4ZTEsMHhjMiwweDA2LDB4ZWMsMHhjYSwweDUyLDB4YjQsMHg2ZiwweGVkLDB4NDcsMHg1MSwweDZkLDB4YjUsMHhjMiwweGNlLDB4YzAsCi0gIDB4MmYsMHgyMCwweDAzLDB4YTYsMHhmNiwweDg3LDB4MTUsMHg3OCwweDM0LDB4ODcsMHg4YywweDI5LDB4ODcsMHg1MCwweGYwLDB4NGEsCi0gIDB4NWUsMHhmMiwweGIwLDB4MTIsMHg2NiwweDZlLDB4NDUsMHgxZSwweDQxLDB4N2IsMHhlNCwweDA0LDB4OTQsMHg5OSwweGZkLDB4MDUsCi0gIDB4NTIsMHhmYywweDNmLDB4MjMsMHg4OSwweDI2LDB4MjksMHg0MywweGYwLDB4MDEsMHhkNywweDVmLDB4NGYsMHhjOSwweDc4LDB4MDcsCi0gIDB4ZWQsMHg5MSwweGFmLDB4YTAsMHg4NiwweGZhLDB4ZDAsMHhlYywweDBmLDB4OTIsMHg3NSwweDRkLDB4N2QsMHg2YywweDI4LDB4MzUsCi0gIDB4NmUsMHgxZSwweDEzLDB4NzksMHgyMCwweDZjLDB4YmUsMHg2MSwweDFmLDB4NDMsMHgwZCwweDc4LDB4MGEsMHg0YSwweGI1LDB4NDcsCi0gIDB4NjMsMHg4ZCwweDBiLDB4ZTAsMHg5NCwweDUyLDB4NmEsMHg2NCwweGM2LDB4NjUsMHg0OCwweDg5LDB4N2YsMHg3NSwweDJiLDB4ZTMsCi0gIDB4ZjksMHhkNywweDY4LDB4NGYsMHgxOSwweDkxLDB4ZGQsMHgyOCwweGM2LDB4ZGYsMHgzNCwweDljLDB4MjEsMHg3NywweGNjLDB4NWYsCi0gIDB4YTIsMHg2YywweDY4LDB4NzAsMHgxYSwweGQ0LDB4NDUsMHhkNCwweGQ0LDB4ZmUsMHhiMCwweDg5LDB4MjYsMHgyMCwweGJiLDB4NzksCi0gIDB4YmQsMHg0NCwweGMzLDB4MTUsMHhiNSwweDJkLDB4ZTUsMHg2ZCwweDQwLDB4YmYsMHg4ZSwweDQwLDB4ZTgsMHg5YiwweDY4LDB4ZTEsCi0gIDB4M2EsMHhlMywweDc5LDB4NWQsMHgyNCwweDY0LDB4ZjUsMHhmZiwweDQ4LDB4M2MsMHhhOSwweGQ5LDB4OGMsMHg3NiwweDg1LDB4M2IsCi0gIDB4ZDQsMHhhMywweDE0LDB4ZDIsMHg5NywweGMyLDB4MTYsMHg0OSwweGY1LDB4ZmYsMHg4ZCwweGM3LDB4YzYsMHgxYiwweGQzLDB4ODQsCi0gIDB4NzgsMHhhOSwweGM5LDB4NjQsMHhmZSwweDI5LDB4YWYsMHg4ZiwweGZkLDB4MDksMHg3NywweGRhLDB4YzcsMHhjNCwweDdmLDB4OTEsCi0gIDB4MjIsMHhkZiwweDJiLDB4ZWQsMHg2ZiwweDdkLDB4NGMsMHg3YywweDU4LDB4MzksMHgwZSwweGRlLDB4ODAsMHhmZCwweDEzLDB4NzEsCi0gIDB4MTUsMHgzZCwweGNlLDB4ZjksMHg5MywweDdhLDB4YTMsMHg5NiwweDUyLDB4MWYsMHgzYiwweGQxLDB4MWYsMHg2ZCwweGRhLDB4OTgsCi0gIDB4M2UsMHhhNiwweGNkLDB4M2EsMHhlZSwweGE4LDB4MTEsMHgyYiwweGUxLDB4MDgsMHhmOSwweGM1LDB4NWQsMHhmNywweDljLDB4YWYsCi0gIDB4MzksMHg5ZCwweDUwLDB4NmQsMHg3YSwweDRhLDB4N2YsMHgzNCwweDFlLDB4ZmYsMHhkYSwweDdiLDB4ZDIsMHg3ZCwweDVlLDB4YmMsCi0gIDB4MjIsMHg1ZCwweDI2LDB4MGIsMHg4ZCwweGNjLDB4ZmUsMHg4MiwweDYxLDB4NzgsMHg3YiwweDdlLDB4MjksMHhiNCwweGY2LDB4ODksCi0gIDB4YzMsMHhjNiwweGFiLDB4NmMsMHhlZiwweDlmLDB4YzEsMHgzZiwweGFjLDB4ZTAsMHgwYywweDFkLDB4NGIsMHhmZiwweDA4LDB4MWUsCi0gIDB4NTcsMHg5ZCwweDA2LDB4OGEsMHhkOSwweDhmLDB4MjAsMHg1MiwweDdmLDB4MjgsMHg4ZiwweDQ2LDB4YzgsMHg1OSwweGEzLDB4ODUsCi0gIDB4MzksMHgxMSwweDFhLDB4MzksMHhmNSwweDI5LDB4ZjgsMHg0NywweGVkLDB4YTcsMHhmMywweGM5LDB4YzksMHhiYywweDlmLDB4ZDEsCi0gIDB4NDIsMHhmZCwweDJlLDB4MDUsMHhlNSwweDY3LDB4MTQsMHhkNCwweDc0LDB4MWIsMHgyZSwweDU2LDB4MjIsMHhiZiwweDI5LDB4NDYsCi0gIDB4YzgsMHhmNCwweDU0LDB4ZmMsMHg2MywweDE2LDB4YzEsMHgxZSwweDgyLDB4OWYsMHhlMiwweGM2LDB4NDEsMHg3YiwweDZkLDB4MDgsCi0gIDB4YWQsMHg4OCwweDM5LDB4MmIsMHhlZiwweGVhLDB4NmMsMHgzZiwweDY3LDB4MzIsMHhhYywweGU0LDB4NTgsMHhiYSwweDA1LDB4ZmYsCi0gIDB4OTgsMHhmNSwweDQyLDB4NzksMHgxMiwweDFmLDB4N2UsMHhhZiwweGNiLDB4YjAsMHgzMCwweDllLDB4YjUsMHg0ZCwweDFjLDB4ODUsCi0gIDB4MzcsMHgwYywweDZmLDB4N2QsMHg1NiwweDU0LDB4ZmMsMHg4MywweDg5LDB4ODgsMHg3MCwweGFiLDB4NGMsMHhlNSwweGZmLDB4MmMsCi0gIDB4ZTYsMHg0ZCwweGQzLDB4YzYsMHhlMCwweGIyLDB4NTIsMHhkNSwweDlmLDB4ZjksMHhiNiwweGU5LDB4NTYsMHhiZCwweDhkLDB4MTUsCi0gIDB4ZjcsMHhkNywweDljLDB4NTQsMHhhZiwweGZlLDB4YjksMHhmZSwweDY4LDB4M2MsMHgwOCwweDNiLDB4MzMsMHgyNiwweGFlLDB4ZDYsCi0gIDB4MmUsMHhmMSwweDQwLDB4NDksMHg1NCwweDljLDB4MGIsMHg3ZCwweGRjLDB4M2UsMHhmZCwweDUxLDB4Y2QsMHg1OSwweDE4LDB4YmYsCi0gIDB4N2YsMHg2YSwweGZjLDB4NmIsMHgyZiwweGM3LDB4Y2YsMHhlNywweGE3LDB4M2QsMHg4MCwweDA3LDB4YTEsMHhhNCwweDQxLDB4OGIsCi0gIDB4OTIsMHgwOCwweDljLDB4NjEsMHhmZiwweDE4LDB4MTIsMHhiYiwweGVmLDB4ZmQsMHgwMywweDdiLDB4YzEsMHhjNCwweDZmLDB4MzksCi0gIDB4NWQsMHg1NiwweGZjLDB4YzMsMHhkMywweDJlLDB4OGMsMHg4MCwweDE3LDB4YjUsMHhmMywweDFlLDB4NTIsMHhjMiwweGRiLDB4NTIsCi0gIDB4NGIsMHhkMiwweDA2LDB4OTQsMHhlYywweGEyLDB4OGIsMHgxYywweGE3LDB4NWIsMHgxMywweGViLDB4OTMsMHgxMiwweGZmLDB4MTIsCi0gIDB4Y2MsMHg3OCwweGQwLDB4ZjcsMHhjOSwweDJjLDB4ZWQsMHgwMCwweDliLDB4MzcsMHhiYywweDZkLDB4MzksMHg3OSwweDIyLDB4ZjAsCi0gIDB4NTgsMHg3NCwweDg1LDB4MmEsMHhhZiwweDcxLDB4YmUsMHg2ZSwweGI2LDB4MTIsMHgzMywweGYzLDB4YTEsMHgyNiwweGVlLDB4NmYsCi0gIDB4ZTIsMHgxZiwweDdjLDB4N2UsMHhlZSwweDg2LDB4YzUsMHg0MSwweDI1LDB4Y2EsMHhlNywweDFjLDB4ODksMHhmNCwweGU0LDB4YTksCi0gIDB4N2UsMHg4NywweDUwLDB4ZDMsMHg0MywweDdlLDB4MmQsMHg3OSwweGE2LDB4ZDQsMHhjNywweDM2LDB4ZjksMHgzZiwweDM3LDB4MWIsCi0gIDB4ZjMsMHgyZSwweDM0LDB4OGUsMHgwOSwweDU3LDB4OTUsMHhjYSwweGRlLDB4NjksMHhmZCwweGYyLDB4YzMsMHgwOCwweDliLDB4YWIsCi0gIDB4YjQsMHg5YiwweDg3LDB4NmIsMHgyZSwweGMwLDB4OWYsMHgxNCwweDMzLDB4ZmYsMHg2YiwweDJhLDB4ZmYsMHhjNywweGY3LDB4OWEsCi0gIDB4YTMsMHg2YywweDQ5LDB4OTYsMHg3NCwweDhjLDB4NzgsMHg3YiwweGVkLDB4ZGQsMHgzNSwweGRiLDB4ZTEsMHgxNSwweDI2LDB4MzIsCi0gIDB4MzcsMHgyMiwweDBhLDB4YjIsMHhlNCwweGRhLDB4ZmUsMHg2OCwweDI4LDB4N2YsMHhhNCwweGUyLDB4MzMsMHgyZCwweDI4LDB4M2QsCi0gIDB4OTQsMHhhNywweDIxLDB4YmYsMHgwNywweGVhLDB4NTcsMHhlNiwweDI5LDB4ZWIsMHgyNSwweGIzLDB4NTEsMHhkYSwweGRiLDB4MDksCi0gIDB4YzMsMHhlYSwweDlhLDB4ZmUsMHgyMCwweDNjLDB4YTksMHg2ZCwweDBkLDB4ZjksMHgxYSwweGJlLDB4ZGQsMHhlYywweDEwLDB4MmQsCi0gIDB4MjcsMHhiMywweDQ4LDB4ODMsMHg5MSwweDFmLDB4YTIsMHg0YiwweGM4LDB4ZDEsMHg0NCwweGEzLDB4YjQsMHg2YiwweGZhLDB4ODMsCi0gIDB4OGMsMHhmYiwweGYzLDB4YTEsMHgzZCwweDUwLDB4NjgsMHgwNCwweGNhLDB4ODksMHhjYywweDFhLDB4OGUsMHg4NSwweGVhLDB4MjIsCi0gIDB4MWUsMHhmMiwweDg3LDB4MzUsMHg4ZCwweDcwLDB4NmQsMHg3ZiwweDM0LDB4YjgsMHgyOCwweDk2LDB4NzEsMHhmYywweDUzLDB4MjcsCi0gIDB4YmQsMHgwNCwweDBiLDB4OTksMHhmYiwweDE5LDB4ZjEsMHgzMCwweDljLDB4ZDIsMHg3NiwweDc2LDB4YTIsMHhkOSwweDM1LDB4MmEsCi0gIDB4OTksMHg4ZCwweGQyLDB4YWUsMHhlOSwweDBmLDB4MDIsMHgwOSwweGI2LDB4MzMsMHgwZSwweDBlLDB4YTEsMHg2MiwweDVhLDB4MTIsCi0gIDB4ZDcsMHhjYywweDJiLDB4MTEsMHhiMywweDgyLDB4ZGYsMHgyYywweGVlLDB4MTgsMHg5OSwweDgyLDB4N2YsMHg1MCwweGRmLDB4YjksCi0gIDB4ZGIsMHhlNCwweDQyLDB4NTQsMHg3MywweDI2LDB4MmQsMHhlNCwweDI1LDB4NzIsMHg4YywweDU1LDB4ODYsMHg2OCwweDFiLDB4NGYsCi0gIDB4MDQsMHg5MywweGFlLDB4ZWQsMHg4ZiwweDY2LDB4M2EsMHgxOSwweGZhLDB4YTIsMHhlMSwweDQyLDB4ZTUsMHg3MSwweDI4LDB4ZTAsCi0gIDB4ZDEsMHhhZSwweDgxLDB4YmMsMHgzNywweDIyLDB4MjUsMHg3NSwweGY0LDB4MzksMHhmMiwweDg3LDB4MDksMHg2MiwweGYzLDB4MzUsCi0gIDB4ZjEsMHgyZiwweGZjLDB4YWMsMHhjMCwweDA3LDB4MjEsMHgxZSwweGY2LDB4MWEsMHhkYSwweGRlLDB4M2MsMHhiZCwweGU0LDB4ZjYsCi0gIDB4MGQsMHg1MSwweGYyLDB4OWUsMHhkNCwweDJjLDB4ZjAsMHg4OCwweDk4LDB4ZjMsMHg5YSwweGY4LDB4MTcsMHgwZiwweDcyLDB4NDksCi0gIDB4ZjQsMHg3MSwweGNlLDB4N2YsMHhjZSwweDI1LDB4YmQsMHg3NCwweGIzLDB4MWYsMHhhZiwweDc4LDB4NGMsMHhjNywweGM4LDB4MzUsCi0gIDB4ZmQsMHhkMSwweDEyLDB4ZjEsMHhhZiwweDAwLDB4OWIsMHhhNiwweGMyLDB4MzAsMHhiZSwweGQ2LDB4NTIsMHgyNiwweDcwLDB4MjAsCi0gIDB4ZjQsMHgwOCwweGVhLDB4NTgsMHgzMywweDExLDB4NmMsMHhkNiwweGQ0LDB4ZmUsMHg2OCwweDAzLDB4YTgsMHhkNiwweGIzLDB4ODIsCi0gIDB4OGUsMHhiNiwweDY5LDB4ZTMsMHg0NCwweDY4LDB4YjMsMHgyZCwweDZjLDB4ZWQsMHhjZCwweDNjLDB4YmUsMHg3MywweDc5LDB4NWMsCi0gIDB4YmYsMHg1ZiwweGQzLDB4MWYsMHhjNCwweGE3LDB4Y2QsMHgwYywweGYyLDB4NmEsMHhhMiwweDllLDB4ZDIsMHhhNSwweGY2LDB4NjgsCi0gIDB4NjMsMHg5OSwweGZlLDB4NGEsMHhjOCwweDJjLDB4OGIsMHg3ZCwweDgxLDB4OGQsMHg0MywweGE5LDB4ZDQsMHhmZSwweDIwLDB4ODMsCi0gIDB4NTAsMHg0MiwweDI3LDB4YTIsMHg1ZCwweGRiLDB4OGIsMHgxMSwweDA4LDB4YzEsMHg4NiwweDE1LDB4ODgsMHg3ZiwweDU4LDB4NzYsCi0gIDB4N2MsMHgwNywweGE3LDB4MDYsMHg1ZCwweGQzLDB4MWYsMHgwZCwweGRmLDB4ZjcsMHg1ZSwweDZhLDB4ZDIsMHg3ZSwweDQwLDB4ZDUsCi0gIDB4YjYsMHgyOSwweDYxLDB4YzksMHg2YywweDk0LDB4NjYsMHg1MywweDQ4LDB4NmYsMHhlZiwweDFlLDB4NTgsMHgzZCwweGE1LDB4M2YsCi0gIDB4MWEsMHhlMiwweDlmLDB4NWQsMHhiMCwweGJhLDB4ZGEsMHg4NCwweDMxLDB4N2IsMHhhOCwweGIzLDB4OTYsMHhmYiwweGQzLDB4MTAsCi0gIDB4NTgsMHg5NiwweDA0LDB4OGEsMHg3MCwweDYxLDB4ZDksMHg0NCwweGJmLDB4YjksMHgyNCwweGZlLDB4NDksMHhmOCwweDdmLDB4YjQsCi0gIDB4NDAsMHhiNCwweGE2LDB4MDMsMHgxNSwweDcxLDB4YTIsMHgxMSwweDFlLDB4NDEsMHhmYiwweDdkLDB4MzksMHg0ZiwweDg0LDB4YzcsCi0gIDB4MmYsMHhlMiwweGJiLDB4YTYsMHgzZiwweDJjLDB4ZjAsMHhiNCwweGY3LDB4NzksMHgyNiwweDNiLDB4MjgsMHhmYSwweDVjLDB4NjgsCi0gIDB4OWUsMHg2MiwweDNhLDB4M2EsMHgyYSwweGI1LDB4Y2MsMHhiNiwweDQ5LDB4ZmMsMHg3MywweDRkLDB4N2YsMHgxMCwweDFmLDB4ZDgsCi0gIDB4YzMsMHhkYywweGRiLDB4YTMsMHg3OSwweGFmLDB4MWIsMHhlNywweDlmLDB4MjMsMHhlYywweDg5LDB4ODgsMHg2NywweGI1LDB4M2UsCi0gIDB4YjgsMHhhNiwweDNmLDB4ZGEsMHhiOCwweGZmLDB4NjcsMHg0OCwweGVjLDB4NjQsMHg4NywweGEwLDB4MjAsMHg5YSwweGE5LDB4OTMsCi0gIDB4MGYsMHg2MCwweGEzLDB4ZjEsMHhmYiwweDM2LDB4OTcsMHg0ZSwweDJlLDB4NzIsMHg0NiwweDM0LDB4OTMsMHg3NSwweDcxLDB4YzMsCi0gIDB4MzUsMHhmOCwweGM3LDB4ZTUsMHgyMSwweGY3LDB4ZjAsMHhlZSwweDMwLDB4ZjEsMHhlYiwweDNkLDB4ZjgsMHg3NiwweDBkLDB4NzcsCi0gIDB4YTksMHhmNSwweDgwLDB4ZmIsMHhhMSwweGIxLDB4ZjEsMHhkYSwweGZlLDB4NjgsMHgwOSwweGZjLDB4NDMsMHhkNywweDZjLDB4NjksCi0gIDB4ODMsMHhlNywweGQ1LDB4MDIsMHg3NiwweDdkLDB4YmQsMHhiMywweDU3LDB4NWQsMHg2ZiwweGU0LDB4ZmIsMHg2OSwweDNkLDB4NzksCi0gIDB4NDcsMHgxOCwweDNmLDB4YmYsMHg5ZCwweGQ2LDB4ZjgsMHgxNywweDllLDB4ZGYsMHhjYSwweDAxLDB4M2IsMHhlZiwweDhmLDB4ZjYsCi0gIDB4MjcsMHhhMywweDM0LDB4OWUsMHhmOSwweDgzLDB4OWMsMHhkNywweGM5LDB4NDksMHg1NiwweDEwLDB4YjIsMHhhZiwweDY5LDB4ZmMsCi0gIDB4N2MsMHhhMiwweDc1LDB4NWEsMHg2YSwweDdmLDB4MTAsMHg5NCwweDI3LDB4MjcsMHhlNywweDMxLDB4NWMsMHg4ZCwweDRmLDB4MTMsCi0gIDB4NjYsMHhlOSwweDAwLDB4YjcsMHhkZiwweDc5LDB4YzYsMHhkYywweDg1LDB4MDQsMHgzNSwweDI4LDB4MzYsMHgwNSwweGZmLDB4ZjAsCi0gIDB4NmEsMHhkOCwweGY2LDB4YzEsMHg2OSwweGZmLDB4YTgsMHg1ZCwweDhkLDB4ZjEsMHg2ZSwweDBlLDB4OGQsMHg1NywweDk0LDB4MDQsCi0gIDB4MjIsMHgzMiwweGViLDB4NDMsMHhhMiwweDY5LDB4M2YsMHg2YSwweGU1LDB4M2YsMHgyNywweGY4LDB4ODcsMHhiYywweGJiLDB4NDcsCi0gIDB4MmUsMHgyZiwweGZjLDB4ZjgsMHg5MiwweDQ5LDB4M2IsMHg3YywweDNlLDB4MTcsMHgxMSwweGNlLDB4ZjcsMHhjYywweGM2LDB4ZjcsCi0gIDB4YzUsMHg1MywweGZiLDB4YTMsMHg4ZCwweGZiLDB4OGIsMHg0MiwweGI2LDB4NWMsMHhmYiwweDgxLDB4NjcsMHg3OCwweGY1LDB4NmYsCi0gIDB4ZjIsMHhiNiwweGJhLDB4MGYsMHg3NiwweDY4LDB4ZjIsMHhkOSwweDcwLDB4ZWUsMHgzOCwweDk1LDB4MzEsMHhkZCwweDk4LDB4MWEsCi0gIDB4ZmYsMHhlMiwweGZjLDB4MGQsMHhjOSwweGM0LDB4OTMsMHg3OCwweGFjLDB4NGUsMHhhOSwweDdiLDB4OTksMHgzMywweDJjLDB4ZGIsCi0gIDB4ODksMHhjZCwweDE4LDB4ZWYsMHgzNywweDk3LDB4YzQsMHgzZiwweGJiLDB4NGQsMHg3ZiwweDU3LDB4OTUsMHg4MSwweGJiLDB4ZGQsCi0gIDB4MGQsMHg5ZiwweDFhLDB4NWQsMHg3MSwweGY3LDB4YjAsMHhmOCwweDExLDB4OGMsMHg5ZSwweGYxLDB4M2EsMHgxZCwweDExLDB4YjksCi0gIDB4ODAsMHg3MCwweDZhLDB4YTUsMHg2MywweDJhLDB4ZmUsMHhlMSwweGY2LDB4ZmUsMHgzYywweDhmLDB4ZDgsMHgwMSwweDk3LDB4ZjIsCi0gIDB4N2QsMHgzZCwweGNiLDB4Y2MsMHhmYywweDc3LDB4NWUsMHhiMSwweGI2LDB4YTksMHg3MSwweDEwLDB4ZmUsMHhhZiwweDg0LDB4YmMsCi0gIDB4NGQsMHhjMSwweDNmLDB4MDIsMHhlYSwweGJiLDB4MWUsMHgzNCwweDRiLDB4MmIsMHhmMSwweDBmLDB4NjMsMHhmNSwweGY2LDB4NjEsCi0gIDB4YjEsMHgwZCwweDdhLDB4NzksMHhkOCwweGNiLDB4OTIsMHhlZiwweDljLDB4ZGEsMHgxZiwweGU0LDB4MzAsMHhjYywweGViLDB4ODksCi0gIDB4NDQsMHg0OCwweDA3LDB4M2MsMHgyZiwweDE1LDB4MmMsMHhjZiwweDhjLDB4OTEsMHg3MywweGE4LDB4N2YsMHg1NywweDdhLDB4NjgsCi0gIDB4MWIsMHg3OSwweDc3LDB4ZGMsMHgzNSwweDYxLDB4ZWQsMHgwZiwweDNiLDB4NmUsMHhlZiwweGQzLDB4YjAsMHhiZiwweDcwLDB4NWMsCi0gIDB4NzEsMHg2NywweDBmLDB4NjksMHhjZCwweDBkLDB4Y2UsMHgxOCwweGUyLDB4ODEsMHg4OSwweGY5LDB4ZDcsMHhmMCwweDlmLDB4ZGQsCi0gIDB4NWMsMHhjZCwweDM1LDB4ZTEsMHg2ZiwweDU1LDB4ZWUsMHg2ZiwweDNjLDB4NDksMHg3OCwweDliLDB4NzgsMHgwYSwweGNlLDB4NWUsCi0gIDB4NjEsMHhkYywweDU1LDB4NjIsMHhlZCwweDBmLDB4Y2IsMHg5ZiwweDY3LDB4YjEsMHg4MSwweGRiLDB4YmUsMHhkMCwweDJjLDB4MjQsCi0gIDB4ZWUsMHg4ZSwweGUxLDB4OGIsMHhmNywweGExLDB4MDUsMHg2NCwweGU3LDB4NjEsMHhiZSwweDRiLDB4ODksMHhmNywweDlkLDB4YzIsCi0gIDB4N2YsMHhlNiwweDQ5LDB4ZWUsMHhkYywweGZmLDB4YzMsMHhkYiwweDllLDB4NjYsMHgwZCwweGU3LDB4NzAsMHg0NywweGQwLDB4M2MsCi0gIDB4ZjgsMHgzNywweDJkLDB4ZjksMHhiZSwweDU2LDB4ZmMsMHhmMywweDhlLDB4ZDksMHhiZiwweGM2LDB4M2UsMHgzMiwweDZkLDB4MTYsCi0gIDB4YmMsMHhjMCwweGI3LDB4Y2QsMHhhMCwweGY4LDB4MWMsMHhmYywweDJlLDB4N2IsMHhiZSwweDhhLDB4M2IsMHgzNiwweDFiLDB4YzYsCi0gIDB4NTgsMHg5NSwweGJlLDB4NzQsMHgyNCwweGM3LDB4MTIsMHhmZiwweDUyLDB4ZGUsMHg1NSwweGJhLDB4MTksMHgwZiwweGIyLDB4MjMsCi0gIDB4YTgsMHg4YiwweGUwLDB4NjAsMHgwOSwweGFjLDB4OWMsMHhhOSwweDZlLDB4Y2EsMHg3NSwweGFhLDB4YjQsMHg5YiwweDE0LDB4YzEsCi0gIDB4YzEsMHg4NiwweDkyLDB4MzgsMHgwZSwweDYyLDB4YzksMHhmOCwweDU3LDB4ZGEsMHg0OSwweGYzLDB4MzUsMHhhOSwweDQ3LDB4NzEsCi0gIDB4NGIsMHgyZCwweDVjLDB4OWIsMHhhYiwweGM0LDB4YWUsMHg2ZCwweDU1LDB4YmYsMHhkZCwweDgwLDB4MWIsMHgwMywweDUwLDB4MjIsCi0gIDB4OTUsMHhmMCwweGQyLDB4YWMsMHg1ZSwweDhiLDB4ZmYsMHg0NywweGU3LDB4NDEsMHhiNCwweGYxLDB4ZmIsMHhmMywweDQyLDB4MWYsCi0gIDB4MmMsMHhkYiwweGNkLDB4NjEsMHg0ZiwweDNiLDB4MjIsMHgyMiwweGJjLDB4M2YsMHgyYiwweGU5LDB4OGIsMHhjNCwweDQ4LDB4MmMsCi0gIDB4ODksMHg0ZiwweGI4LDB4ZmYsMHg0NywweDMwLDB4OTcsMHhjNSwweDNkLDB4OGUsMHg0NiwweDY0LDB4MzcsMHhiYywweDA1LDB4ZGQsCi0gIDB4N2EsMHg2YiwweDRjLDB4OWMsMHhjMywweDJlLDB4MTksMHhiZSwweDkwLDB4ZmIsMHg5NywweDE2LDB4ZmMsMHhhMywweDBiLDB4MzEsCi0gIDB4MTgsMHhhNywweDQ1LDB4ZTEsMHg4MCwweDlhLDB4NmMsMHhmMCwweDg3LDB4ZDEsMHhiZSwweGMwLDB4MTUsMHgxYiwweDk2LDB4NzEsCi0gIDB4ZTksMHhhNCwweDJhLDB4NGUsMHg3NCwweDQ5LDB4Y2QsMHhmZiwweDdhLDB4NGIsMHhmMSwweDFhLDB4OTksMHhkZCwweGUyLDB4NmEsCi0gIDB4OWUsMHg3ZiwweDE3LDB4NWYsMHgxNiwweGMzLDB4OGQsMHg3YywweDQyLDB4ZjEsMHgzNiwweGQ5LDB4NjMsMHgzOSwweDRmLDB4ZjIsCi0gIDB4NDAsMHg1OCwweGFmLDB4N2QsMHg3ZiwweDhhLDB4ZmYsMHg0NywweGU1LDB4ZmQsMHg4NSwweDczLDB4ZjEsMHhlYiwweDFmLDB4ZTUsCi0gIDB4MDMsMHgxNSwweGE1LDB4NjUsMHgyNSwweDZjLDB4MGEsMHg1ZiwweGE3LDB4NjcsMHhmMiwweDhlLDB4MzAsMHgyZCwweGNjLDB4MWQsCi0gIDB4OGYsMHhmOCwweGM0LDB4N2YsMHg0YywweGYxLDB4ZmYsMHg2YywweDY1LDB4YmMsMHg3ZSwweDQyLDB4ZjYsMHgyOSwweDY4LDB4MzQsCi0gIDB4NDIsMHg0NiwweDA2LDB4N2UsMHg1OSwweDdjLDB4NWYsMHg4OSwweGUwLDB4YjIsMHgzMCwweGFkLDB4OTEsMHhiOSwweDM1LDB4NTQsCi0gIDB4ZGMsMHg5ZSwweDQ5LDB4N2QsMHgxNywweDE3LDB4YmMsMHhkMCwweGNhLDB4ZjIsMHgwYiwweDVkLDB4NzcsMHhhNSwweDdmLDB4YWEsCi0gIDB4YjYsMHhiNiwweGFmLDB4ZjAsMHhkYywweDc4LDB4NjcsMHg5OCwweDc3LDB4NTAsMHg5ZCwweDVkLDB4OTgsMHg4MSwweDQ2LDB4YTEsCi0gIDB4YjAsMHhmZSwweGM1LDB4ZTIsMHgwMSwweDNhLDB4NGEsMHgxZSwweDk5LDB4OGMsMHg3ZiwweGRkLDB4ODUsMHhmOCwweGU3LDB4ZDcsCi0gIDB4ZTAsMHhlOSwweGNkLDB4ZTQsMHhlYywweGZhLDB4YzYsMHg0ZSwweDRmLDB4NWYsMHhhNiwweDVhLDB4NjAsMHg4NywweDE3LDB4NDgsCi0gIDB4ZTEsMHg2ZSwweGJiLDB4NDcsMHg2NCwweDhjLDB4MDcsMHhjMiwweDVhLDB4MGIsMHg2YiwweDkyLDB4ZjEsMHgyZiwweGZmLDB4NGQsCi0gIDB4ZTYsMHhmYSwweDQ4LDB4OGUsMHgxNywweDEyLDB4NmUsMHg0MywweDk4LDB4NjYsMHhmMCwweGZlLDB4YjAsMHg2NiwweDdkLDB4MjQsCi0gIDB4ZGMsMHg1MSwweGNmLDB4MGIsMHg4YiwweDdiLDB4ZmUsMHhhMSwweGRlLDB4MTIsMHhmZiwweDdhLDB4MjYsMHhlZCwweDE0LDB4ZTcsCi0gIDB4ZWYsMHg5OSwweGViLDB4NjMsMHgwZSwweDFjLDB4ZGQsMHg3MiwweGIxLDB4NzEsMHg4OSwweDk2LDB4ZWIsMHg3NiwweGVlLDB4MTEsCi0gIDB4YmEsMHgwNCwweDk1LDB4ZjEsMHhkNiwweGYyLDB4MWEsMHg5MiwweGM0LDB4M2YsMHg5YiwweGEzLDB4YmMsMHgwOSwweGVjLDB4NDQsCi0gIDB4YjksMHhiNCwweDYyLDB4NjgsMHgwOSwweDIyLDB4MTAsMHgzYSwweGEwLDB4OTksMHg3YywweGMyLDB4ZDMsMHgxYywweDFhLDB4NzEsCi0gIDB4MDksMHhkMywweDM1LDB4MjksMHhkZiwweDE4LDB4MWEsMHhiMSwweGViLDB4ZDksMHgzYywweDkzLDB4ZWYsMHgzNCwweDgxLDB4NzYsCi0gIDB4NjYsMHhiNSwweDFlLDB4ZDAsMHhiZiwweGEzLDB4NjcsMHhhYywweDIxLDB4YWYsMHhjMywweDgxLDB4NDgsMHhmMSwweDcwLDB4NjQsCi0gIDB4MGQsMHhhMSwweDE2LDB4ZmMsMHg2MywweDk4LDB4NjUsMHg1NywweDIzLDB4NzAsMHgxZCwweDdlLDB4MDgsMHhhZSwweDBkLDB4MzksCi0gIDB4N2YsMHg4MywweDQ3LDB4ZTQsMHhmMSwweGEwLDB4YmQsMHgxYywweGRhLDB4ZGIsMHhlMCwweGVlLDB4YTcsMHgwYiwweGZjLDB4M2YsCi0gIDB4NDksMHhhOSwweGZmLDB4NzMsMHgxNCwweGM1LDB4MmMsMHhkNSwweDY1LDB4OTcsMHgzOSwweDcwLDB4NzQsMHg4OCwweDJlLDB4N2EsCi0gIDB4MDgsMHgxNiwweGU5LDB4YmMsMHgyZCwweDFhLDB4N2MsMHgwZSwweDU1LDB4YmEsMHhmZCwweGRjLDB4MzQsMHg0YiwweGZjLDB4MGIsCi0gIDB4ODYsMHgwOSwweDJlLDB4OGIsMHg1MiwweDYyLDB4ODgsMHg5ZiwweDkwLDB4YzQsMHg0NiwweDZhLDB4MzQsMHgxMSwweGQxLDB4Y2MsCi0gIDB4OGQsMHg0ZCwweGJjLDB4ODIsMHgzNCwweGYzLDB4MDksMHhmMywweGMyLDB4MzksMHhkNiwweGY4LDB4OTcsMHhlOSwweGZmLDB4YTksCi0gIDB4NWIsMHhiYSwweDE5LDB4OGYsMHgyZCwweDBmLDB4N2IsMHhkOSwweDFmLDB4OWYsMHhjNiwweGZkLDB4MzksMHhmYiwweDI3LDB4ZTMsCi0gIDB4NWYsMHhkZiwweDc2LDB4NmMsMHg0YiwweGNkLDB4N2YsMHhlNywweDI0LDB4ZGIsMHgzYSwweDk0LDB4MzYsMHhlZiwweGIxLDB4NjYsCi0gIDB4NTYsMHgxNiwweGE0LDB4M2YsMHg3NiwweDBlLDB4NDAsMHhiMywweGUyLDB4ZmMsMHgxMiwweGVmLDB4ZTgsMHgyMSwweDFkLDB4MzQsCi0gIDB4MWIsMHhjNSwweDRlLDB4YzEsMHgzZiwweGJmLDB4NjQsMHgwNSwweDVhLDB4NDYsMHhmZiwweGJkLDB4OWYsMHg5MywweDQ3LDB4YTEsCi0gIDB4YTAsMHgzNiwweGFmLDB4MWYsMHgxNSwweGY3LDB4NjYsMHhlYSwweGQ0LDB4NmUsMHg4YywweGE2LDB4NzMsMHg0NywweGI0LDB4NTMsCi0gIDB4OTMsMHgzNywweDNiLDB4NGYsMHg1OSwweGVhLDB4ZmYsMHhlNCwweDcyLDB4N2IsMHgzNiwweDk4LDB4NzcsMHgzZiwweGY5LDB4NzcsCi0gIDB4NTgsMHhjYiwweGJlLDB4NTEsMHg0ZiwweGVmLDB4NDMsMHg5OCwweGM0LDB4MWIsMHhhMywweGEzLDB4OTgsMHg5MiwweGYwLDB4N2MsCi0gIDB4MTUsMHg4NiwweDk2LDB4YTAsMHhiZSwweDRiLDB4YzUsMHgzZiwweGI4LDB4ZTcsMHgzMiwweDIxLDB4YzcsMHgzMCwweGQ1LDB4YWUsCi0gIDB4NWIsMHgyMywweDcxLDB4N2EsMHg2NiwweGJjLDB4MTAsMHg1MCwweGEyLDB4ZmUsMHgwYywweGFiLDB4NDksMHhlMiwweDlmLDB4MzMsCi0gIDB4OWMsMHhmZiwweDBjLDB4Y2YsMHg1NSwweDI3LDB4ZjQsMHhmYiwweDM0LDB4NTMsMHg5YiwweGJmLDB4MDcsMHhhMywweGQ1LDB4ZmMsCi0gIDB4NTgsMHhhMSwweDIwLDB4ZmEsMHg2MSwweDgyLDB4MDgsMHg5NCwweGNhLDB4N2YsMHhmZSwweDEwLDB4YWEsMHg2YSwweGIzLDB4ZmEsCi0gIDB4YzUsMHgwNSwweDFhLDB4NzcsMHhmYiwweGUwLDB4YTAsMHg1MCwweGI5LDB4NWMsMHgzNywweDlmLDB4NGYsMHhiYiwweDAwLDB4M2QsCi0gIDB4NjQsMHg3ZSwweGI1LDB4M2QsMHg2OCwweGYxLDB4ZmYsMHhhYywweDQxLDB4ZmMsMHgxMywweDkxLDB4MTAsMHhmZiwweDg0LDB4ODksCi0gIDB4Y2EsMHgyMiwweDFjLDB4MDgsMHg4NSwweGIzLDB4MzksMHgxMSwweDlhLDB4YzAsMHgxMiwweGU2LDB4OGYsMHg3MywweDg5LDB4YzEsCi0gIDB4MTAsMHgwOCwweDZkLDB4NGMsMHhiNywweGUyLDB4OWYsMHgxZCwweGM0LDB4NWQsMHg2ZCwweDUzLDB4YzIsMHg0ZCwweGNhLDB4MGUsCi0gIDB4YzksMHhlZCwweGE3LDB4ZDEsMHg3MCwweDlhLDB4YmEsMHgyNywweDFmLDB4MTIsMHg3YywweGVmLDB4NDYsMHg5ZSwweDYxLDB4YjcsCi0gIDB4Y2QsMHgxMiwweGZmLDB4ZTIsMHhmOCwweGE3LDB4OTksMHhjYiwweDczLDB4YzUsMHhjZiwweGRiLDB4YTgsMHhkOSwweGFiLDB4NGQsCi0gIDB4NjAsMHhiOSwweDA3LDB4MTIsMHgxZSwweDM2LDB4ZDYsMHg4YywweDQyLDB4MWEsMHhlNywweGFmLDB4NGIsMHhjNiwweGJmLDB4NjYsCi0gIDB4ZjAsMHg2ZSwweDJmLDB4OTUsMHg1YSwweDQ5LDB4MzQsMHhhNywweDgzLDB4YmMsMHgwZiwweGIzLDB4MzQsMHhiYiwweDYyLDB4MzMsCi0gIDB4M2YsMHhlYiwweDdkLDB4OWMsMHhjZiwweDQzLDB4N2IsMHhjMCwweDFiLDB4NDIsMHhjNCwweDliLDB4ZjQsMHhmZiwweDBjLDB4MjYsCi0gIDB4ZTIsMHg1ZiwweDdlLDB4NDcsMHhiNCwweGE1LDB4NTAsMHhlNSwweGMwLDB4YjgsMHgzOCwweDVhLDB4YzAsMHg1NywweGVjLDB4YzgsCi0gIDB4MGEsMHgzZSwweDFmLDB4ZjUsMHgxZCwweGNmLDB4ZmYsMHhjYSwweGI5LDB4YTYsMHgzZSwweDc2LDB4YTIsMHgyZCwweDZmLDB4OWYsCi0gIDB4OWEsMHhhMCwweDVkLDB4YzEsMHhhMCwweDVhLDB4OTEsMHg2ZCwweDM3LDB4ZjksMHhmNiwweDlhLDB4MzcsMHgwZiwweDgxLDB4OTAsCi0gIDB4MjUsMHhmZSwweDI1LDB4NTAsMHgzOCwweGU0LDB4OWMsMHhkNywweDZlLDB4MWYsMHgyMCwweGU1LDB4YjAsMHg5MSwweGNlLDB4NmIsCi0gIDB4MGYsMHhmMCwweGIwLDB4NTcsMHg1NiwweGE4LDB4MjAsMHg0YSwweGUzLDB4ZTQsMHgzOCwweDIyLDB4YTIsMHg1YiwweDE5LDB4MGQsCi0gIDB4OTEsMHg1NCwweGZmLDB4Y2YsMHgxZSwweGU2LDB4ZWUsMHhjZiwweDU4LDB4NjAsMHg3YiwweDk0LDB4ODcsMHg2OSwweGZhLDB4ZDQsCi0gIDB4NzIsMHhkMiwweGFhLDB4ZWMsMHg0YywweDc3LDB4NjksMHg3OSwweDE1LDB4YjgsMHgzZSwweGE4LDB4YzEsMHg3YiwweDY5LDB4YjksCi0gIDB4ZDMsMHgzNiwweDA1LDB4ZmYsMHhjYywweDYzLDB4ODgsMHgxZiwweDEyLDB4YzQsMHg2MCwweDNhLDB4OTAsMHhiZCwweGQxLDB4OTgsCi0gIDB4MDYsMHhmOSwweDcxLDB4Y2EsMHgxZCwweDQxLDB4Y2YsMHgwYiwweGI3LDB4MTgsMHhhZSwweDBiLDB4NDQsMHg5ZCwweDhjLDB4ZDcsCi0gIDB4NzQsMHg4ZSwweGYzLDB4OWYsMHgzMywweDA3LDB4YzUsMHg0MywweGMwLDB4Y2IsMHg2MiwweDRiLDB4NmIsMHg2YywweDRmLDB4NjgsCi0gIDB4NWYsMHg2NywweGI3LDB4ODUsMHhkYywweGNiLDB4YzUsMHhkNywweGUxLDB4NGYsMHg5MSwweGY5LDB4NjcsMHhlZCwweDAxLDB4MzksCi0gIDB4MTksMHhmZiwweGIyLDB4ZGQsMHhiNCwweDliLDB4NWUsMHg0MiwweDg5LDB4ODksMHhmOCwweDI3LDB4ODQsMHg4MiwweDFkLDB4Y2YsCi0gIDB4YTMsMHgyMiwweDdlLDB4ODcsMHg1ZCwweDRhLDB4MWIsMHhhNywweGY1LDB4MmUsMHg1YSwweDMxLDB4NmUsMHgyZiwweDRjLDB4YWMsCi0gIDB4MGYsMHhhYywweDM1LDB4ZjEsMHhjZiwweDkwLDB4NmQsMHgzNCwweGU3LDB4MjMsMHg4ZCwweGE3LDB4N2QsMHhkOSwweGNmLDB4YTAsCi0gIDB4MjEsMHg3ZiwweDk1LDB4MmQsMHg1YSwweDZkLDB4MWYsMHg0NCwweGZjLDB4ZjMsMHgyNywweDU2LDB4M2EsMHg2MCwweGU3LDB4ZmQsCi0gIDB4ZDEsMHgyNiwweGQ2LDB4YzcsMHhjNCwweDNmLDB4YjEsMHhlMiwweDc1LDB4ZjQsMHhjYiwweGUxLDB4MzcsMHhlMSwweGY5LDB4MGYsCi0gIDB4ZTYsMHhjZSwweGExLDB4MmIsMHgxMCwweGZmLDB4ZmMsMHg1MiwweDUyLDB4N2YsMHg3ZSwweDU3LDB4ODgsMHhjNywweGJmLDB4OTQsCi0gIDB4YjksMHgyNywweGU5LDB4ODMsMHhkOSwweDFmLDB4YTQsMHhjNiwweGJmLDB4ODQsMHhlMiwweDAwLDB4ZmUsMHhmNiwweDZkLDB4ZmQsCi0gIDB4NzksMHhjZiwweDZjLDB4MmQsMHgyMywweDg4LDB4ZjMsMHhmZiwweDU1LDB4OTksMHhhYiwweDM1LDB4ZjcsMHgxMywweDFlLDB4YjgsCi0gIDB4MmYsMHgzMCwweGYwLDB4MDQsMHg1OSwweGYxLDB4Y2YsMHgyYiwweGVhLDB4NWUsMHhjMywweDllLDB4ZTcsMHg5MiwweGM4LDB4MGIsCi0gIDB4YjAsMHg1NywweDczLDB4MmIsMHgxOSwweDBhLDB4MTksMHg1MiwweDUwLDB4MDMsMHgwZSwweGUzLDB4N2UsMHhjYiwweDUyLDB4ZjcsCi0gIDB4MTQsMHhiYSwweDM0LDB4YjMsMHgzNSwweGZjLDB4ZTQsMHhmMywweGNjLDB4ZjgsMHgzNywweGY1LDB4NTIsMHhkNCwweGQ3LDB4NmYsCi0gIDB4N2IsMHg4ZSwweDljLDB4ZDMsMHg0NiwweGEzLDB4NjUsMHhjMywweGM1LDB4NDcsMHg3MiwweDc4LDB4MWEsMHhjZSwweDBmLDB4YjQsCi0gIDB4NGMsMHgxZCwweDJkLDB4YTYsMHg0YiwweGUwLDB4OGMsMHhhMywweGEwLDB4OWUsMHg4MiwweDdmLDB4MTQsMHg1ZiwweGQ0LDB4NjEsCi0gIDB4NzYsMHg4MywweGQ1LDB4MmEsMHgwMiwweDU5LDB4MWQsMHgzYiwweDg3LDB4YTQsMHg0YiwweGRhLDB4MjMsMHhmNywweDY1LDB4NzUsCi0gIDB4ODgsMHg0MywweGRjLDB4MTAsMHhhYiwweDc3LDB4NzQsMHg0ZiwweGY1LDB4ZmYsMHg2OCwweDU1LDB4ODYsMHhmYiwweDRkLDB4ZjEsCi0gIDB4M2MsMHg4YSwweGYxLDB4NzksMHg5YywweGQ4LDB4MzAsMHg0NiwweDVlLDB4MzUsMHg0YSwweDZiLDB4MWMsMHg4NiwweGYwLDB4M2QsCi0gIDB4NzYsMHgxNSwweDRhLDB4OGYsMHgyMiwweDEwLDB4NGEsMHhjNiwweGJmLDB4MTgsMHhjNywweDNmLDB4ODIsMHgzYiwweDg2LDB4ZjgsCi0gIDB4MWYsMHhkMSwweDhiLDB4ODEsMHg2OCwweDk5LDB4OTEsMHgyMSwweDY4LDB4ZWUsMHg3MywweDg2LDB4ZTQsMHg4ZCwweGNlLDB4MjEsCi0gIDB4NjUsMHhlZiwweGNhLDB4MDUsMHhmNSwweGI4LDB4ZmYsMHhhZiwweDg5LDB4N2YsMHg4NSwweGU2LDB4ZWEsMHg0NywweDNiLDB4MTgsCi0gIDB4MGYsMHg3YiwweGRkLDB4ZDgsMHg0NiwweDg2LDB4MjgsMHhlYSwweGViLDB4N2EsMHgzOSwweDQyLDB4NTYsMHhjMSwweGUxLDB4MTksCi0gIDB4Y2UsMHhiMywweDgxLDB4NmUsMHhiZiwweDlhLDB4ODIsMHg3ZiwweDRhLDB4NTUsMHgzNywweDUwLDB4ZDUsMHhkZiwweGU3LDB4ZGEsCi0gIDB4YWIsMHhhZSwweGNlLDB4OTAsMHg1NSwweGVmLDB4NDksMHgxMCwweDQwLDB4MGQsMHhmMCwweDQ2LDB4MjEsMHhhOCwweGZhLDB4ZTcsCi0gIDB4MTgsMHhmOCwweDdmLDB4YzgsMHg2NCwweGZjLDB4MWQsMHhjYywweGY4LDB4NTcsMHgyNSwweDE0LDB4MzMsMHhiMSwweDgzLDB4NWQsCi0gIDB4ZDIsMHgyYSwweGZkLDB4MGUsMHg4NiwweDYyLDB4ZjcsMHgzOCwweDc4LDB4ZWYsMHg0MSwweGY5LDB4YjMsMHg0YSwweGJhLDB4MDQsCi0gIDB4NWQsMHhhYywweDMwLDB4MjYsMHgyNiwweGUzLDB4NWYsMHgxYywweGZmLDB4NWMsMHhkMiwweGFhLDB4ZTAsMHgxZiwweDM4LDB4ZWQsCi0gIDB4ZjksMHg1MiwweDFkLDB4YzIsMHg0MiwweGEzLDB4N2EsMHgwYywweDE1LDB4NTksMHg2NSwweDQwLDB4ZDYsMHg0YywweDdlLDB4NGIsCi0gIDB4YTIsMHgzZiwweDFhLDB4NGIsMHhlMiwweDlmLDB4NjEsMHhmNiwweDhhLDB4NWEsMHgwYSwweDU5LDB4MDEsMHhiOSwweDEyLDB4ZDEsCi0gIDB4MGUsMHhjMiwweDQyLDB4YTMsMHg3MSwweDNlLDB4M2IsMHhjOSwweDgxLDB4NTAsMHhhZiwweDk4LDB4ODAsMHhkNiwweGE5LDB4ZmQsCi0gIDB4NDEsMHg5NCwweGRmLDB4MDcsMHgzMywweDgyLDB4ZWQsMHgyYSwweGVhLDB4NzcsMHhkZSwweGI2LDB4YzMsMHgwOSwweGI2LDB4MDgsCi0gIDB4YzksMHhkNywweDM2LDB4YjAsMHhhMiwweGI4LDB4YmMsMHhkZSwweDZmLDB4YTYsMHg4NiwweDI1LDB4NDIsMHg2MywweDQ5LDB4ZjksCi0gIDB4ZDMsMHhjNywweGRkLDB4Y2UsMHhlYywweGFlLDB4MTgsMHhkNCwweDBhLDB4MjgsMHg0NiwweDA0LDB4MzQsMHgzYywweDAxLDB4MjUsCi0gIDB4MTgsMHhjYSwweDViLDB4ZjAsMHg0ZiwweDg2LDB4YzYsMHgyYywweGZjLDB4ZTcsMHgxOSwweDlkLDB4NmEsMHg4YiwweGNkLDB4YjksCi0gIDB4MDcsMHhkNywweGZmLDB4MDEsMHgyZSwweGJkLDB4NzUsMHg1YiwweDI0LDB4N2IsMHgwZSwweDM0LDB4ZjMsMHg0NiwweDUxLDB4ZGQsCi0gIDB4MjYsMHg5ZiwweGRjLDB4YzQsMHg5MywweDQ5LDB4ZmUsMHhiMywweDNhLDB4ZTMsMHgxMywweDc4LDB4YTUsMHhiYSwweDU0LDB4ZGYsCi0gIDB4YzgsMHhjNCwweDFmLDB4YzIsMHgyOCwweGNiLDB4MjksMHhiNywweGI3LDB4OGEsMHgwNSwweGFjLDB4OGYsMHgwMywweGExLDB4OGQsCi0gIDB4ZTIsMHhkMCwweDA0LDB4M2UsMHgzYywweDYzLDB4ZjEsMHhmZiwweDMwLDB4ZjIsMHgxOSwweDFjLDB4NjEsMHhjYiwweGUyLDB4ZTIsCi0gIDB4NmUsMHg1YywweDhkLDB4MjMsMHg2OCwweGM4LDB4ZGYsMHg3OCwweDlhLDB4NWMsMHg4MSwweGFhLDB4MWUsMHhiMywweDcwLDB4M2EsCi0gIDB4YzcsMHg4NywweDcyLDB4YWEsMHhmZiwweDY3LDB4NTcsMHhlZSwweDg5LDB4MmYsMHg3OSwweGNmLDB4ZDgsMHhmNywweDg4LDB4YzUsCi0gIDB4ZTQsMHgwNCwweGY3LDB4MzYsMHg3NywweGM4LDB4MmUsMHhkZSwweDk4LDB4YzYsMHhjOCwweDBhLDB4NzMsMHhlMCwweDlkLDB4YjgsCi0gIDB4YmYsMHhkNSwweGZmLDB4ZTMsMHg5MiwweDVhLDB4OTgsMHhiYSwweDk3LDB4N2EsMHhiMiwweDdmLDB4YTEsMHgzNiwweDcyLDB4M2MsCi0gIDB4Y2MsMHhjOCwweDFjLDB4NzUsMHgzNCwweGMxLDB4NWYsMHg5YSwweDdjLDB4N2UsMHg0YiwweDdmLDB4YjQsMHhiNCwweDVhLDB4NjAsCi0gIDB4NjcsMHhkNSwweDI4LDB4Y2QsMHgyMywweDc2LDB4ODgsMHg5MiwweDY3LDB4NzgsMHhhMywweDEwLDB4M2IsMHgzZCwweGM4LDB4OTcsCi0gIDB4NjUsMHhiMSwweGM5LDB4ODcsMHg1ZiwweDlkLDB4YTgsMHhmZiwweDkzLDB4ZjQsMHhmZiwweDVjLDB4NDcsMHg5YSwweGEyLDB4ZjksCi0gIDB4M2IsMHgwMiwweGNiLDB4YjMsMHg3ZiwweGFhLDB4ZmQsMHhhOCwweDYxLDB4ZWUsMHgyYSwweGJhLDB4OWMsMHg1YywweGE3LDB4NzEsCi0gIDB4OGYsMHg5MCwweGZjLDB4N2QsMHgxZSwweGZmLDB4NGEsMHgyMCwweDg0LDB4MjQsMHhmZiwweGI5LDB4MGUsMHhmMSwweGNmLDB4NzEsCi0gIDB4YzUsMHhjMywweDVjLDB4ZjMsMHg3MywweGQyLDB4MTAsMHgwOCwweDk1LDB4ODcsMHhkZCwweGI3LDB4OGEsMHgxNCwweGNlLDB4NDMsCi0gIDB4NjUsMHg2ZiwweDE2LDB4ODgsMHgyNywweGI5LDB4NDcsMHg4OCwweGZiLDB4N2YsMHhkZSwweGI0LDB4ZmEsMHg3ZiwweGI0LDB4MmIsCi0gIDB4NmQsMHhjZiwweGYzLDB4MzIsMHhmMiwweGMzLDB4Y2EsMHgxZiwweGEwLDB4MGMsMHg5NywweDY1LDB4ZGEsMHgwNSwweGY4LDB4MjMsCi0gIDB4YWUsMHhjZiwweDI2LDB4NGIsMHhmZCwweDFmLDB4YWIsMHhmZiwweDY3LDB4MDAsMHhkNSwweGEyLDB4ODcsMHhhMSwweGQ5LDB4ZmIsCi0gIDB4MDEsMHg0YSwweDdiLDB4ZGMsMHgzZiwweGZkLDB4MzksMHhjMywweGMyLDB4OWQsMHgzMCwweGNiLDB4NzAsMHgxOCwweDA4LDB4NDQsCi0gIDB4ZmYsMHhlOSwweDVhLDB4ZmYsMHg0ZiwweDEzLDB4OWUsMHhlMSwweDdjLDB4ODYsMHgyMCwweGU3LDB4OGMsMHhiMiwweDk2LDB4MjcsCi0gIDB4YTIsMHgwNiwweGM5LDB4NjksMHg2MSwweGJkLDB4YTcsMHhkOCwweGY4LDB4M2IsMHgwNCwweDQyLDB4ZTMsMHhmNiwweGQ0LDB4MTQsCi0gIDB4ZmYsMHhjZiwweDNhLDB4NTYsMHhkMCwweGUxLDB4N2EsMHhkOCwweGY0LDB4ZjYsMHhlNCwweGViLDB4ZjQsMHg2MSwweDcyLDB4YzIsCi0gIDB4YmUsMHhlZSwweGM3LDB4ZjgsMHg5YSwweDk0LDB4Y2MsMHg5YSwweDc4LDB4ZGYsMHg1NCwweGZmLDB4NGYsMHgxOCwweGQ0LDB4ZTcsCi0gIDB4MDIsMHhlNSwweGE0LDB4ODcsMHgzNCwweDEyLDB4ZTcsMHg1MSwweGQ3LDB4NGMsMHhmMiwweDllLDB4NmEsMHg5YSwweGIxLDB4NmQsCi0gIDB4NjQsMHhhMiwweGQ0LDB4NWIsMHhhYSwweGZmLDB4ODcsMHg5YywweDgyLDB4YmQsMHg1MSwweDk0LDB4OTYsMHgyMywweGYwLDB4NTIsCi0gIDB4YjgsMHg3NCwweGIzLDB4ZmQsMHg0MywweDFjLDB4OTgsMHg2ZSwweDlmLDB4NzMsMHgzOSwweDJlLDB4N2EsMHhkMSwweGY0LDB4ZmYsCi0gIDB4YTQsMHhjNCwweGJmLDB4MGMsMHgzYywweDRkLDB4NDcsMHgxNCwweDQ3LDB4OTMsMHgxMCwweDU3LDB4NDcsMHhhMiwweGJjLDB4MmQsCi0gIDB4OWEsMHgxOCwweDI3LDB4NjYsMHhjNywweDkwLDB4NzEsMHhmZSwweGNmLDB4YjUsMHhmMSwweGFmLDB4MWUsMHhlNiwweGUxLDB4ZGUsCi0gIDB4OGMsMHg3MywweGI4LDB4M2YsMHhiZCwweGFiLDB4Y2MsMHhjMSwweGIxLDB4MjQsMHhkMSwweGY3LDB4Y2YsMHhmOCwweDdmLDB4OWEsCi0gIDB4MjMsMHgwNSwweGNiLDB4NzEsMHhmZiwweGJmLDB4YTcsMHgxZCwweGU0LDB4ZDUsMHhmOCwweGEzLDB4ZTQsMHg5YywweGQyLDB4MTIsCi0gIDB4MmYsMHhlMSwweDMwLDB4ODYsMHg3YiwweDc4LDB4YjIsMHhhZSwweGM1LDB4M2YsMHg4ZiwweDRlLDB4NmYsMHhhZiwweDQ1LDB4YjMsCi0gIDB4NmIsMHg0MCwweDNkLDB4YTgsMHg5OCwweGRkLDB4ZDMsMHgwNiwweGZjLDB4MmQsMHg2YSwweDk2LDB4MjYsMHg0NiwweGM3LDB4ZjksCi0gIDB4MmEsMHg2MiwweDZhLDB4ZmMsMHgyYiwweDE3LDB4ZDYsMHgyNiwweDQ4LDB4M2UsMHgyZiwweDJhLDB4N2IsMHg0MCwweGVkLDB4NzcsCi0gIDB4NzEsMHgxYSwweDcwLDB4MDMsMHhlMSwweDQ0LDB4NDQsMHhkYiwweDc4LDB4NmEsMHhkOCwweDU0LDB4ZmYsMHhjZiwweDQ5LDB4ZWUsCi0gIDB4NmQsMHhkMCwweGNkLDB4YjcsMHhmMywweDI0LDB4ZjMsMHhkZiwweDRkLDB4ZmUsMHhjZiwweGY4LDB4ZmIsMHg1YSwweGY4LDB4Y2YsCi0gIDB4MzcsMHhiZCwweDQ3LDB4NzgsMHhkYSwweGZiLDB4M2MsMHg0ZSwweGZiLDB4YjksMHgwYywweGUzLDB4ZmUsMHg5ZiwweGQxLDB4MDQsCi0gIDB4ZWQsMHg2NywweGUwLDB4Y2YsMHhmOCwweDdmLDB4ODQsMHg3MywweGYwLDB4OGEsMHg1MSwweDdhLDB4NTcsMHg2YiwweGJmLDB4YjgsCi0gIDB4YjgsMHhlOSwweDMzLDB4NTgsMHhjNCwweGRiLDB4YTYsMHhkYywweDBhLDB4YTYsMHg1YiwweGFjLDB4M2YsMHhiOSwweDNlLDB4ZTcsCi0gIDB4NTIsMHhmYywweDNmLDB4MTEsMHg4NSwweDY3LDB4N2IsMHg4OSwweDJiLDB4NTgsMHhiNywweDgwLDB4ODMsMHgyNiwweGVlLDB4ZmYsCi0gIDB4ZTEsMHg0MCwweDM3LDB4Y2MsMHhmOSwweDNmLDB4N2YsMHhjNiwweGZmLDB4YTMsMHgzNSwweGYwLDB4ZmMsMHg3NywweDI1LDB4ZmIsCi0gIDB4NzYsMHg3YywweDNiLDB4ZDcsMHg3MiwweDlhLDB4NGIsMHhkMiwweGQ2LDB4OTksMHg2ZSwweGFlLDB4ZGMsMHgwZCwweGY4LDB4YmUsCi0gIDB4OTIsMHhmYiwweDFhLDB4ZmYsMHgwZiwweDY5LDB4ODYsMHhmNiwweGFmLDB4YjgsMHhkYSwweDUwLDB4N2EsMHgxZiwweDU0LDB4ZDQsCi0gIDB4N2EsMHhkYSwweGM2LDB4ZmQsMHgzZiwweDhhLDB4ZTksMHhmNiwweDI5LDB4ODQsMHg2YiwweGZkLDB4M2YsMHhiOSwweDRmLDB4YzEsCi0gIDB4MzEsMHhlZSwweGY2LDB4NjksMHgxMywweDU3LDB4YzEsMHhlOCwweDNkLDB4MTUsMHg5YSwweDdiLDB4ZGIsMHgyZCwweGI3LDB4YTgsCi0gIDB4NzcsMHhmMiwweGM3LDB4ZGUsMHg5YywweDdjLDB4ZmUsMHg0MSwweDRiLDB4ZmUsMHg1NywweDEzLDB4ZmIsMHhjNCwweDVkLDB4NTksCi0gIDB4YjMsMHg2YywweDRiLDB4Y2QsMHg3YiwweDg5LDB4ZGYsMHg2NiwweDBiLDB4YmQsMHg1MSwweDczLDB4OTAsMHhkNywweDY4LDB4ZjEsCi0gIDB4ZmYsMHg0YywweGNjLDB4NGYsMHhlMCwweDlmLDB4YjIsMHhjNCwweGIyLDB4OGYsMHg4MCwweDk3LDB4OTgsMHhmOSwweDVmLDB4N2QsCi0gIDB4NTYsMHg0NiwweDdhLDB4YWEsMHhmZiwweDQ3LDB4MmEsMHg0NywweGU5LDB4YjYsMHg5MywweGQxLDB4MDcsMHhjOCwweDI4LDB4NjIsCi0gIDB4ZDMsMHg4NSwweDUxLDB4YWEsMHhlMywweGY3LDB4ZDgsMHgxMCwweDJmLDB4ZTEsMHhiNCwweDY3LDB4MGUsMHhlYywweGNkLDB4ZDIsCi0gIDB4ODgsMHhjNywweDI3LDB4M2UsMHgyZiwweGUyLDB4OWYsMHgwMCwweGVjLDB4MzUsMHgwYSwweDgzLDB4ZDQsMHg0YiwweDVlLDB4NTAsCi0gIDB4NzEsMHgzZiwweDcwLDB4NmIsMHhmNCwweDY1LDB4ZDgsMHgxOSwweGI3LDB4OWIsMHhmYywweDlmLDB4ODksMHhmMywweDYyLDB4ZWQsCi0gIDB4MGYsMHg5MiwweDA3LDB4MDcsMHhhOCwweDZhLDB4NDQsMHhmMCwweGQ4LDB4YWEsMHhiZiwweDI0LDB4YjMsMHhhMywweDk0LDB4MDcsCi0gIDB4ODYsMHg5ZSwweGU2LDB4YzcsMHhmNiwweGJlLDB4ZTQsMHhmOSwweGVkLDB4YjMsMHhlNCwweDdmLDB4ZjEsMHgyMiwweDg3LDB4YjcsCi0gIDB4ODYsMHhkYywweDZiLDB4MTAsMHhlZCwweDdjLDB4ODYsMHg2YSwweDA1LDB4MDcsMHg5ZiwweDIzLDB4YjQsMHg1ZiwweGNjLDB4ZDMsCi0gIDB4YmUsMHg0YywweDY4LDB4YzQsMHhmZCwweDNmLDB4YzcsMHgyZCwweGZlLDB4OWYsMHhjZSwweDg5LDB4NDUsMHgzMCwweDFiLDB4NGYsCi0gIDB4MzMsMHgwNywweDJmLDB4M2MsMHhmYiwweDQ2LDB4NjAsMHg4MiwweGZmLDB4OTMsMHg5MCwweDI3LDB4OTYsMHhmYywweGFmLDB4Y2MsCi0gIDB4OGIsMHhmMCwweDJhLDB4NWIsMHhjOCwweGIzLDB4YmQsMHhiYywweGYwLDB4MWUsMHg1YiwweGI0LDB4YzIsMHgzZSwweDJhLDB4N2UsCi0gIDB4NmUsMHgwMiwweDIxLDB4OTMsMHhmZiwweDczLDB4MzUsMHg2YSwweGVhLDB4MmYsMHgwYiwweGZmLDB4NTksMHhkOCwweGM2LDB4Y2IsCi0gIDB4OGUsMHhmNSwweDY2LDB4ZDYsMHg4YiwweDBmLDB4NmIsMHg2YiwweDk1LDB4N2MsMHhjOCwweDdjLDB4OTAsMHg5YywweDM2LDB4NzgsCi0gIDB4ZmQsMHgwZCwweGI5LDB4OWEsMHgzZiwweDNmLDB4YmIsMHhjNiwweGZmLDB4YjMsMHg4ZCwweDI3LDB4ZjUsMHg2YiwweDk0LDB4YjcsCi0gIDB4ZTAsMHg3YSwweDkyLDB4Y2UsMHhiZCwweDhmLDB4ZDYsMHg2NywweDlmLDB4MTYsMHg4ZSwweDA0LDB4ZjIsMHgwZCwweDU5LDB4MjMsCi0gIDB4YmMsMHgxNCwweDkyLDB4MzksMHhiZiwweDk3LDB4NGQsMHhhYywweDdmLDB4MjgsMHhiNywweDBmLDB4MWEsMHgwYywweDM1LDB4OTgsCi0gIDB4OTEsMHhlZiwweGU3LDB4ZGQsMHg0MCwweDU0LDB4NjMsMHhlZSwweDAyLDB4ZjIsMHgwMSwweDU3LDB4ZDIsMHg1YywweGVjLDB4ZjMsCi0gIDB4NTQsMHgxNywweDczLDB4M2QsMHhkZiwweGI0LDB4ZTQsMHg3ZiwweDc1LDB4YzIsMHhiMSwweDA3LDB4YmIsMHg4MiwweGY2LDB4Y2UsCi0gIDB4OWMsMHg2MiwweDc2LDB4MzYsMHg1OCwweGExLDB4ZDksMHgwZiwweDhhLDB4ZjEsMHhjMiwweDhiLDB4MGQsMHhhOCwweGJmLDB4N2UsCi0gIDB4YzIsMHhlYiwweDFkLDB4MjUsMHhkZSwweGY3LDB4YjgsMHgwNSwweGZmLDB4MGMsMHhlMiwweGY3LDB4YWMsMHgwOCwweGEyLDB4ZDEsCi0gIDB4ZjEsMHgyMSwweDFhLDB4YmEsMHhiZSwweDI2LDB4ZGUsMHhlZCwweDRiLDB4YmQsMHg2OCwweGYyLDB4NjEsMHgxYSwweDc3LDB4NGYsCi0gIDB4Y2MsMHhiNywweGU2LDB4N2YsMHg5ZCwweGUxLDB4ZDEsMHg2NCwweGJmLDB4M2QsMHgyZSwweDllLDB4NTYsMHg1ZiwweDAxLDB4NGYsCi0gIDB4YzQsMHgzZSwweDRjLDB4NjIsMHhiMCwweDk0LDB4OTksMHg2MiwweGJjLDB4NzIsMHhjMiwweDFmLDB4MTIsMHhiNywweGY4LDB4N2YsCi0gIDB4ZWEsMHhkMCwweGJlLDB4NzYsMHhiYiwweDVjLDB4OGMsMHg3YywweGM0LDB4ZGUsMHhjYSwweGRlLDB4ZDksMHg4ZCwweDgyLDB4ZTUsCi0gIDB4NWQsMHg4OCwweDA0LDB4YjIsMHg3OCwweGQ5LDB4ZDgsMHg4NCwweGFiLDB4YzcsMHg5MSwweGQyLDB4MWYsMHg0ZCwweGE4LDB4MjMsCi0gIDB4MmQsMHhjNiwweDAzLDB4MjEsMHhiYSwweGQ5LDB4ZjksMHhhZSwweDYyLDB4ZDYsMHhlYiwweDg4LDB4OTEsMHg3NywweGQ1LDB4NWQsCi0gIDB4MGEsMHhjZSwweDhmLDB4YWMsMHg3MywweDI3LDB4ZmQsMHgzZiwweDEzLDB4ZmIsMHg4NywweGUyLDB4N2YsMHgyOCwweDhkLDB4YWIsCi0gIDB4NTEsMHhkZiwweGY1LDB4YzEsMHhlMywweGI4LDB4Y2QsMHg1ZCwweGJjLDB4Y2MsMHgwMiwweDVhLDB4MjgsMHhjNiwweDhkLDB4OTAsCi0gIDB4Y2UsMHg0YiwweDAzLDB4MjUsMHhmMCwweDAwLDB4MjQsMHg3ZiwweGVhLDB4ZjIsMHg0ZSwweDk4LDB4NjUsMHhmNywweDcwLDB4ZGIsCi0gIDB4OWIsMHhmNSwweDI1LDB4NjIsMHg2MiwweDg3LDB4ZDQsMHhjOSwweDVmLDB4OTMsMHhmMywweDJiLDB4MmUsMHhiOSwweDEyLDB4ZmUsCi0gIDB4YWUsMHg2NCwweGZlLDB4ZDcsMHg4YywweDMzLDB4MWMsMHhlNCwweDY4LDB4ZjMsMHgzNCwweDVlLDB4ZGYsMHgwZiwweGRmLDB4NmUsCi0gIDB4MTksMHg3NywweDczLDB4OWQsMHg5NiwweDEyLDB4ZmMsMHgxZiwweDUzLDB4N2YsMHg2NSwweDBkLDB4MTcsMHg1OCwweGYyLDB4YmYsCi0gIDB4MWUsMHgzNSwweDQxLDB4OGUsMHg4MSwweGY4LDB4ZmMsMHhkZCwweGRhLDB4NTcsMHg3ZSwweDU0LDB4NWEsMHg5YiwweDg5LDB4NmEsCi0gIDB4YWUsMHhlNywweDYzLDB4MjgsMHhlZCwweDQzLDB4YTAsMHg1OCwweDA5LDB4MWYsMHg0MSwweDY5LDB4MjEsMHgyMiwweDZhLDB4OGIsCi0gIDB4ZmYsMHg4NywweGZlLDB4ODIsMHhiMywweDliLDB4OWUsMHg5NSwweGY1LDB4NzAsMHg5YywweDM1LDB4M2IsMHg2ZCwweDExLDB4ZGIsCi0gIDB4NTgsMHhmNiwweGU1LDB4ZmUsMHgwZCwweDc1LDB4Y2UsMHg2MSwweDc5LDB4MzcsMHhmOSwweDA1LDB4MWMsMHgzMiwweDljLDB4NDAsCi0gIDB4YjMsMHhjMywweDk2LDB4ZmEsMHg4NywweGQyLDB4NDksMHgwMSwweDNmLDB4N2EsMHg4MywweGVjLDB4Y2MsMHhlZSwweDZiLDB4OGEsCi0gIDB4YTgsMHgxMCwweGUwLDB4ODEsMHgzMCwweDY4LDB4YzgsMHgyZCwweDdjLDB4NTEsMHgxNiwweDQ4LDB4MjYsMHgwZiwweDM1LDB4NjYsCi0gIDB4NTAsMHg0OCwweGY3LDB4MGEsMHgxMywweGRmLDB4MzcsMHg1MSwweGZmLDB4YTcsMHg2NCwweDU4LDB4ZWUsMHgyMCwweDgzLDB4MTAsCi0gIDB4MTEsMHg4YSwweDc0LDB4YjMsMHgxMCwweDAxLDB4MTMsMHg5YywweGJjLDB4ZmUsMHhlNCwweDZlLDB4MzAsMHg1ZCwweDRmLDB4MGQsCi0gIDB4MjQsMHg5NiwweDM2LDB4ZjEsMHgzYywweDQyLDB4ODIsMHg3ZiwweDNiLDB4ZWMsMHhlOCwweGE4LDB4ODksMHg1ZiwweGRmLDB4YTMsCi0gIDB4MzgsMHgzZCwweGFkLDB4MzEsMHg3MSwweDg4LDB4ZWMsMHgyMiwweGI4LDB4N2YsMHhmNiwweDA4LDB4NmUsMHhmOCwweGUwLDB4MmMsCi0gIDB4ZGEsMHg1ZiwweGRiLDB4YzgsMHhmNCwweGM5LDB4ZTcsMHg2ZiwweDAwLDB4MWUsMHhmZiwweGMyLDB4ZjMsMHgxNSwweDE3LDB4ODcsCi0gIDB4YzksMHg2NSwweDY2LDB4MWUsMHhhYiwweDMxLDB4ZTUsMHg3MiwweGY0LDB4OGEsMHhlMSwweGU4LDB4NDYsMHhjNSwweDc2LDB4MTEsCi0gIDB4YWEsMHg1NiwweDM5LDB4Y2UsMHg3YywweDNkLDB4NTksMHhmZiwweDcwLDB4MjAsMHg5MSwweGZmLDB4MTUsMHhiNCwweGZmLDB4NDIsCi0gIDB4MmUsMHg1MiwweDAyLDB4NTAsMHg3MSwweDlmLDB4NTksMHg3OCwweGYzLDB4OTgsMHhlNCwweGVkLDB4MzEsMHgzZCwweDk2LDB4MTcsCi0gIDB4MzUsMHg2ZiwweGFkLDB4YmIsMHg1MSwweGZlLDB4ZGUsMHhhNCwweGZjLDB4ODksMHg0YiwweGVlLDB4ZGMsMHhjMywweDNjLDB4MWUsCi0gIDB4YjEsMHg5YiwweDE0LDB4NDEsMHhhNCwweDFmLDB4ZjEsMHhjZiwweDA4LDB4ZTcsMHhmZiwweDJjLDB4YzcsMHg4MSwweDgyLDB4NjYsCi0gIDB4NGQsMHgxNywweDUzLDB4NDMsMHhiNCwweGM5LDB4OTksMHhlNCwweGZmLDB4MTgsMHgxMywweGZlLDB4YzAsMHgwNSwweDY0LDB4NzYsCi0gIDB4NTMsMHhhMywweGQxLDB4Y2UsMHg3OCwweDdmLDB4YzYsMHhmNCwweDA2LDB4YzMsMHg4NSwweDA4LDB4YjksMHg4OCwweGI3LDB4ZTksCi0gIDB4NTUsMHg1OSwweDYwLDB4OWYsMHg3ZiwweDYyLDB4MzUsMHgwMSwweGZhLDB4MjEsMHhhMSwweGY0LDB4ZTksMHg4OCwweGVkLDB4MWYsCi0gIDB4NjEsMHhmZCwweDMzLDB4ZjksMHg5ZCwweDc0LDB4MGQsMHg3OSwweGM3LDB4YzYsMHhmNCwweDdjLDB4OTUsMHhkNiwweDkxLDB4MjcsCi0gIDB4ZTgsMHg3ZSwweGI2LDB4NDMsMHhjNywweDJiLDB4YzksMHhhMiwweGVkLDB4MDEsMHgzMCwweGYzLDB4ZGYsMHgwZCwweGI3LDB4MjcsCi0gIDB4MjcsMHg4YiwweDFjLDB4ZDcsMHgzZCwweGEzLDB4OGUsMHhkMiwweGM2LDB4OGYsMHhhMCwweDQ3LDB4ZWYsMHhhZSwweDc3LDB4YWIsCi0gIDB4YTQsMHg5NSwweDllLDB4YTcsMHg1ZCwweGNjLDB4YWUsMHg4YSwweGQ5LDB4YzksMHhmYSwweGNmLDB4ODksMHhmNSwweDM0LDB4NmUsCi0gIDB4ZjEsMHgwOCwweGFkLDB4NzAsMHgzMSwweDVhLDB4YzYsMHgxYywweDdiLDB4YmUsMHgzYywweDA0LDB4MjMsMHhkOSwweDNlLDB4NmQsCi0gIDB4NTMsMHgyNywweDllLDB4YzcsMHg4YiwweGNhLDB4OTEsMHhhNiwweDc5LDB4YmIsMHhjNCwweGU4LDB4YTQsMHg3ZCwweDY0LDB4ZDYsCi0gIDB4ZmYsMHg0MSwweGZiLDB4MzcsMHgyYiwweDk2LDB4MzMsMHg5MCwweGYwLDB4ZmYsMHhlYywweDE3LDB4M2YsMHhkNCwweGRmLDB4MDcsCi0gIDB4NmYsMHhjMywweGE2LDB4OTgsMHhiOCwweDViLDB4ZmIsMHgxNCwweDcwLDB4YTEsMHg2MiwweDU2LDB4ZmYsMHg0ZiwweDllLDB4ZTksCi0gIDB4NGYsMHhkNiwweDRjLDB4NmYsMHg4ZiwweGU5LDB4NmQsMHg3ZSwweDkwLDB4NWMsMHg4NiwweGI1LDB4OTAsMHhkZiwweDIwLDB4ZjIsCi0gIDB4NDIsMHhiMiwweGZiLDB4YjksMHgzZCwweDU1LDB4NGYsMHhhNiwweGQ2LDB4M2YsMHgyYywweGU2LDB4NDksMHg1ZSwweDU3LDB4ZTAsCi0gIDB4MjksMHg4ZSwweDc2LDB4ZmUsMHg4OSwweDVjLDB4NjksMHhmYSwweDY1LDB4MDMsMHhhNywweGZkLDB4YTQsMHhiZiwweDAzLDB4ZmIsCi0gIDB4NTksMHg3ZSwweGRjLDB4YzUsMHhmMywweGZkLDB4MjcsMHg5ZSwweDI3LDB4YzAsMHhlYiwweGZmLDB4ODAsMHhmYiwweGUxLDB4OGMsCi0gIDB4MTgsMHg4ZiwweDJmLDB4MTMsMHhmNywweDE5LDB4MzMsMHhkMCwweGJjLDB4ZDksMHg1MCwweDA3LDB4OTYsMHhmMCwweGMyLDB4ZTMsCi0gIDB4N2IsMHg4MywweGNlLDB4ZDcsMHhhOCwweDllLDB4N2QsMHg0MywweGIyLDB4M2UsMHg1NSwweGEyLDB4M2YsMHgyYywweDBmLDB4NzIsCi0gIDB4ZjUsMHhjMSwweDMzLDB4MzAsMHgyZiwweGJhLDB4OGMsMHhiMywweGRmLDB4MmYsMHhlYSwweGRlLDB4MDYsMHg0NywweDA3LDB4MGUsCi0gIDB4ZjYsMHhiMywweGFlLDB4ZTgsMHg2YSwweDVkLDB4YWUsMHg0OCwweGRlLDB4MWYsMHgxMiwweGY2LDB4NzgsMHgxNiwweGFhLDB4MjEsCi0gIDB4MzIsMHhhNiwweDNkLDB4NjIsMHhmNiwweGViLDB4ODQsMHgzOCwweGU1LDB4ODYsMHhjNiwweDRlLDB4MzMsMHgyMywweDllLDB4YmIsCi0gIDB4MTYsMHgyZCwweGZkLDB4NjEsMHhjZCwweDdjLDB4ZTcsMHg0YSwweDJkLDB4OTMsMHg2YiwweGMzLDB4NjMsMHg3MCwweDZmLDB4NjAsCi0gIDB4NjksMHg3NCwweGZhLDB4MmEsMHhmMywweDIwLDB4M2IsMHhhNiwweDEzLDB4NWUsMHgwYSwweGQ4LDB4Y2IsMHgyMywweDYyLDB4NTYsCi0gIDB4ZmUsMHg3MywweDQyLDB4YzksMHgwNiwweGI2LDB4OTAsMHgzOSwweGQwLDB4MTMsMHg1NywweDQzLDB4OGYsMHhmMiwweGM0LDB4YWUsCi0gIDB4NjYsMHgyMCwweGRhLDB4MTIsMHg4ZSwweDk3LDB4ZDAsMHhlMiwweDA4LDB4MDUsMHhkYSwweGM4LDB4YzQsMHg2YywweDVlLDB4MGYsCi0gIDB4MzAsMHgzMSwweDdmLDB4NmUsMHgzNCwweGNiLDB4MDcsMHg4ZiwweGIyLDB4MGYsMHg3OCwweDFiLDB4ZjcsMHg1ZSwweGQ0LDB4ZDcsCi0gIDB4YTIsMHg3NiwweDYzLDB4M2YsMHhlOSwweGEwLDB4YjcsMHhmMSwweDdjLDB4ZjksMHgzMywweGQ2LDB4ZmEsMHhjZiwweGI5LDB4MDksCi0gIDB4OTAsMHg0MywweDczLDB4ZDMsMHg2ZiwweDg1LDB4NDcsMHgzNSwweDU3LDB4MTAsMHhlZCwweGQzLDB4YjUsMHgyOCwweGIxLDB4NzksCi0gIDB4ZmQsMHg2ZCwweGMyLDB4NGIsMHgyNSwweGU3LDB4MDcsMHhlOSwweGZkLDB4YjYsMHg2NCwweGZlLDB4ZmIsMHhmMiwweDBjLDB4Y2UsCi0gIDB4ZmYsMHhlMSwweDY1LDB4ZjcsMHg3MiwweDVjLDB4YzIsMHg0OSwweGExLDB4ODgsMHhiMywweDMxLDB4NzksMHhkOCwweGFiLDB4MGIsCi0gIDB4NWYsMHg5MywweDI3LDB4MjIsMHgwOSwweDVlLDB4NTgsMHhhYSwweGM5LDB4OTYsMHhmYSwweGNmLDB4MzMsMHgwNiwweDcyLDB4Y2QsCi0gIDB4ZmEsMHg4NywweGQxLDB4MmYsMHhmNywweDkyLDB4M2YsMHhjMiwweDQyLDB4NWUsMHhmNiwweGU3LDB4MWIsMHhjYSwweDY3LDB4YjcsCi0gIDB4OWIsMHhmNSwweDdmLDB4NjYsMHg0YiwweDk3LDB4YWIsMHg3ZCwweGRhLDB4MzIsMHg2YiwweGZkLDB4YzMsMHgzYywweDMzLDB4NWYsCi0gIDB4NmMsMHgzMSwweDQ3LDB4M2IsMHhmYiwweGUwLDB4OTUsMHhiNCwweGY5LDB4OWMsMHhmZiwweDMzLDB4OWIsMHg1ZCwweGNlLDB4ZjAsCi0gIDB4ZmEsMHhlZiwweGVmLDB4NmYsMHgxYywweDUwLDB4ZDEsMHgzNCwweGFiLDB4NzUsMHhmYywweDRhLDB4MmMsMHg0OSwweGUyLDB4MTMsCi0gIDB4ZTAsMHhjZiwweDUzLDB4MzIsMHg4MywweGZiLDB4N2YsMHhiOCwweGI3LDB4MjcsMHgyZiwweGMyLDB4ODgsMHgxMCwweGVkLDB4ODYsCi0gIDB4MzIsMHhjNSwweGFjLDB4ODcsMHg4MywweDU3LDB4YTgsMHg0YywweDQ4LDB4YjIsMHhmZSwweDczLDB4YzgsMHg4YywweDdmLDB4YjksCi0gIDB4MzQsMHg1YiwweGY0LDB4ZTgsMHg4MCwweGJlLDB4OGIsMHgxNiwweGZhLDB4YTksMHg5OSwweGY4LDB4NWYsMHgzNCwweGRlLDB4MjEsCi0gIDB4YWUsMHhjMSwweGE0LDB4NDIsMHhhNSwweGRmLDB4M2IsMHgyOSwweDdmLDB4YmEsMHhkMywweDNhLDB4YzYsMHhlMywweDg5LDB4ZjcsCi0gIDB4YWUsMHg4MiwweDVkLDB4NDAsMHg3YSwweDgwLDB4ZDcsMHhkMywweDNlLDB4MjgsMHg5YSwweDZkLDB4ZTYsMHgzYSwweGNjLDB4OGEsCi0gIDB4NGMsMHhmMiwweDAyLDB4NzIsMHhjNywweGU0LDB4ZjcsMHg2YSwweDk3LDB4ZjgsMHhmNywweGFkLDB4ZjgsMHg2YSwweDU2LDB4NzQsCi0gIDB4ZTUsMHg0YiwweGU0LDB4MmMsMHhjNCwweDk2LDB4MTcsMHg0NiwweDczLDB4MGEsMHhkMSwweDdlLDB4NjksMHgwZiwweGEwLDB4OTksCi0gIDB4ZGMsMHg0YiwweDhlLDB4NDUsMHhiYywweGY4LDB4YmUsMHg3MiwweGRkLDB4ZTQsMHhmZSwweDM5LDB4OWUsMHhkOCwweDBmLDB4OWMsCi0gIDB4ZmYsMHhkYywweGMxLDB4Y2MsMHg2YSwweDg3LDB4OGEsMHgzYywweGEwLDB4OGMsMHgzZSwweGVlLDB4ZDMsMHhlNiwweDZkLDB4MTEsCi0gIDB4MDcsMHhhNCwweDUxLDB4MTcsMHhmNywweGZmLDB4MzQsMHgxZSwweDlhLDB4YmMsMHhiZiwweDBkLDB4MjYsMHhmMSwweDhmLDB4MGEsCi0gIDB4NjcsMHg2ZSwweDJmLDB4NTEsMHhiNiwweDM3LDB4YzgsMHgyYSwweGY0LDB4MDksMHg5NSwweDhhLDB4OWQsMHhkNSwweGM0LDB4NjksCi0gIDB4OWYsMHg4NiwweGViLDB4Y2YsMHhlNCwweDI0LDB4ZmYsMHg4NywweGU2LDB4ZjIsMHhmOCwweGQ3LDB4M2MsMHg0NiwweGJmLDB4NDMsCi0gIDB4NmUsMHhkMywweDM2LDB4ZGUsMHg4ZSwweDgzLDB4YjMsMHhjNCwweDI1LDB4NmQsMHg2NCwweDI1LDB4MGMsMHg4MSwweGQwLDB4MDgsCi0gIDB4YmMsMHhhZSwweDM5LDB4M2IsMHg1MSwweDk1LDB4MjcsMHhmMywweDhiLDB4MTMsMHhmMSwweDg4LDB4NDIsMHg0NiwweGRkLDB4NDQsCi0gIDB4ODYsMHgyZCwweDcxLDB4YjcsMHhiNiwweGExLDB4OTIsMHhiNCwweDcyLDB4MzcsMHgzNSwweDk3LDB4NTcsMHg3ZCwweDE0LDB4NTUsCi0gIDB4NzksMHgxYywweDA3LDB4ZmUsMHg0OSwweGZkLDB4MjUsMHg0MCwweDIyLDB4ZmYsMHg5ZCwweGM2LDB4YzMsMHhiNywweGMxLDB4YmEsCi0gIDB4YWMsMHg2MiwweGNkLDB4NTYsMHg5ZiwweGZlLDB4MDQsMHg1YiwweGFmLDB4MTUsMHgxYiwweDEwLDB4YzQsMHg2ZCwweGYxLDB4YWYsCi0gIDB4NWEsMHg3ZSwweDNjLDB4MTIsMHgwYywweDA3LDB4OTIsMHg3OCwweDliLDB4NzEsMHg5MCwweDczLDB4YWIsMHg2ZSwweDBmLDB4ZGMsCi0gIDB4OTgsMHgwZCwweGE3LDB4MWIsMHgxNiwweDg3LDB4OGEsMHhkNiwweDg4LDB4NGYsMHg4NCwweDVmLDB4NjQsMHg5NSwweDcxLDB4ZDcsCi0gIDB4OWEsMHg2OSwweDZmLDB4YzIsMHg4YiwweDA5LDB4NDQsMHg3NCwweGQ3LDB4YTQsMHhmYywweDI5LDB4Y2EsMHhlNSwweGYyLDB4NjQsCi0gIDB4MTYsMHg5YiwweDA3LDB4NWYsMHgzNiwweDYwLDB4MjQsMHhjZCwweGE3LDB4NjUsMHg3YSwweDBhLDB4NzgsMHgwNSwweDE4LDB4MzMsCi0gIDB4MGMsMHgzNCwweDg4LDB4ZjYsMHhkYSwweDExLDB4YWUsMHhmOCwweGMyLDB4YzksMHhmYSwweGNmLDB4YmMsMHgzZiwweDJjLDB4YWIsCi0gIDB4ZDIsMHhiMywweDA2LDB4NzMsMHgyZSwweDRhLDB4MWYsMHhiMSwweDUyLDB4OWUsMHhmNiwweDU1LDB4YzUsMHhjYiwweDNlLDB4MGYsCi0gIDB4MzgsMHhjZSwweDg4LDB4MTcsMHg0ZCwweDZhLDB4ZDAsMHhjZCwweDk3LDB4NzIsMHg5MiwweGYyLDB4ZTEsMHgxOSwweGIzLDB4ZGYsCi0gIDB4NmIsMHgzMSwweDc3LDB4ODIsMHg1ZCwweDg0LDB4NzAsMHg0YywweGJkLDB4NTMsMHhmZSwweDhjLDB4NjQsMHhiMSwweDg2LDB4MGUsCi0gIDB4ZmQsMHhlNCwweGFjLDB4ZTUsMHhiYywweDUxLDB4MmMsMHhhZiwweGZmLDB4ZmMsMHhhNSwweDBkLDB4NDUsMHg0OSwweGZmLDB4NWUsCi0gIDB4ODIsMHgyZiwweDFkLDB4YjYsMHgwNSwweGQxLDB4YzgsMHhkYSwweDBkLDB4YjMsMHg4MywweDJkLDB4YzMsMHhjNCwweGJlLDB4NmUsCi0gIDB4NWQsMHg3ZSwweGIxLDB4NzEsMHgyNywweGNmLDB4NzcsMHg3YiwweDk2LDB4MjcsMHg2ZSwweDNjLDB4ZTQsMHg5NCwweGFjLDB4ZjUsCi0gIDB4MGYsMHhiOSwweGZjLDB4ODksMHg1MiwweDVlLDB4ZTYsMHgyZSwweGNjLDB4MGEsMHg0MywweDY2LDB4MjAsMHgzZSwweGEyLDB4MTUsCi0gIDB4MWEsMHg0YiwweGNhLDB4NzEsMHgzZCwweGY3LDB4ODYsMHg1NCwweDVlLDB4OTEsMHg0MywweDk5LDB4YWMsMHg3ZiwweDY4LDB4Y2EsCi0gIDB4NGYsMHhjOSwweGM3LDB4NmMsMHhiYywweDNhLDB4YzEsMHgwNywweDgxLDB4ZmQsMHg2YiwweDFjLDB4MzEsMHhiOSwweDEyLDB4NGUsCi0gIDB4MjgsMHg2NSwweGM2LDB4YjIsMHg1OCwweGUzLDB4MjAsMHgxYywweGQ2LDB4YmEsMHgwYywweGY5LDB4MzksMHhkMSwweDM2LDB4NTksCi0gIDB4ZmYsMHg5MCwweDI1LDB4ZjQsMHg1MSwweGQ4LDB4YzEsMHg2OSwweGE4LDB4OTcsMHg2OCwweDA1LDB4ZTcsMHg4NywweDBmLDB4MDksCi0gIDB4MjMsMHhhNCwweGMyLDB4YzgsMHhlYSwweDEyLDB4MDcsMHhhOSwweDQ5LDB4OTQsMHg4YSwweDRlLDB4MWIsMHg0YSwweGY2LDB4ODcsCi0gIDB4NGQsMHhlOCwweDNiLDB4OTYsMHg4NSwweDY2LDB4NjksMHhhMiwweDNmLDB4NWEsMHgxYywweDgxLDB4ZWQsMHhhYiwweDg4LDB4ZjcsCi0gIDB4ZWMsMHgxNywweDExLDB4MjEsMHhlYywweDgxLDB4YWQsMHhhMSwweDU5LDB4OWYsMHg2YywweDU1LDB4MjcsMHhlYiwweDFmLDB4ZjYsCi0gIDB4NDgsMHg2ZSwweDVlLDB4NmQsMHg4ZiwweGM5LDB4MWIsMHhjOSwweDBiLDB4MmMsMHhmMiwweDZlLDB4NDksMHg2MSwweDk2LDB4NGUsCi0gIDB4ZGMsMHgzNCwweDEyLDB4MjAsMHg5YywweDkxLDB4ODIsMHhjZiwweGYzLDB4N2IsMHg2NywweGZjLDB4NDYsMHg0NiwweGYyLDB4YWQsCi0gIDB4ZmQsMHg2MSwweGE1LDB4YzMsMHg1MiwweDA5LDB4NWIsMHhkMiwweDk5LDB4ZmQsMHgwMSwweDZjLDB4NjAsMHgyNSwweDlhLDB4NmQsCi0gIDB4MGYsMHhkOSwweDRkLDB4NWIsMHhhNiwweGE3LDB4MjcsMHhlNiwweDc3LDB4MzcsMHgxNCwweGY1LDB4YzksMHg5YywweGIxLDB4M2MsCi0gIDB4ODksMHg3ZiwweDI0LDB4M2IsMHhmNywweGM2LDB4MzMsMHg1OSwweDI1LDB4ODMsMHhlMSwweDcwLDB4YmUsMHgzYiwweDY4LDB4NTMsCi0gIDB4YzgsMHhhMywweDkwLDB4MzEsMHhkNywweDBjLDB4MTQsMHhmNiwweGYxLDB4MGEsMHhlNCwweDlhLDB4MGMsMHgzNiwweGMyLDB4MjYsCi0gIDB4MzcsMHgyOCwweDIwLDB4ODgsMHhkMiwweDEwLDB4MDYsMHgyMywweGZlLDB4NjEsMHg3ZCwweDJlLDB4NWYsMHgzNCwweDJiLDB4MjYsCi0gIDB4M2UsMHgwNywweDQ3LDB4ZDUsMHgzMiwweGMzLDB4ZGQsMHhkNSwweGM4LDB4ODksMHgyYiwweGU2LDB4MGEsMHhhOCwweDRmLDB4NGQsCi0gIDB4M2UsMHhjZiwweDhmLDB4YzYsMHhlMCwweGFhLDB4OGIsMHhlNywweDM3LDB4ODksMHg2NywweGQ1LDB4NjEsMHg1YSwweDA1LDB4MWIsCi0gIDB4ODcsMHhjNSwweGVmLDB4ZDAsMHgxMSwweDU3LDB4ZDUsMHg1MSwweGRjLDB4M2YsMHgxYywweDExLDB4MmQsMHhkNCwweDM2LDB4MTksCi0gIDB4MjksMHhmNSwweDdmLDB4NDYsMHhhMiwweDYzLDB4YWUsMHhmOSwweGJjLDB4N2YsMHg1YywweDM5LDB4MWIsMHg3MywweDU2LDB4MDksCi0gIDB4NGIsMHg3YiwweGM1LDB4NjEsMHhmZCwweDcyLDB4YzgsMHg4YywweDlmLDB4OGUsMHhmYiwweDdmLDB4ODYsMHg1MywweGY4LDB4M2YsCi0gIDB4ZWYsMHg0MywweGI3LDB4ZTEsMHg1NSwweDVjLDB4ZGIsMHhjOSwweDVjLDB4ZTgsMHg4ZSwweDk2LDB4NzgsMHhlOCwweDdhLDB4ZjIsCi0gIDB4N2IsMHgzOCwweDE4LDB4MmMsMHg4YSwweDI3LDB4ZWEsMHhmZiwweGIwLDB4MTIsMHhkZSwweGZmLDB4ZGQsMHg5MywweGI0LDB4N2YsCi0gIDB4ZDMsMHg4ZSwweGU1LDB4YzYsMHhkMiwweDBiLDB4YTcsMHhkNywweGU1LDB4NDIsMHgwNiwweDIwLDB4MjIsMHg0MSwweDhjLDB4NDgsCi0gIDB4MGMsMHgzOCwweGE4LDB4OGUsMHgzMywweGEwLDB4YzYsMHhmZCwweDFiLDB4ZGUsMHgxNCwweGZmLDB4NGYsMHgzNywweDc1LDB4OGEsCi0gIDB4MzQsMHhlYSwweDc3LDB4YjksMHg1MSwweDEwLDB4OTEsMHgwYywweGY2LDB4NmUsMHg1YywweDNkLDB4NDgsMHg4YiwweDhjLDB4OTYsCi0gIDB4NTgsMHhmNiwweGE0LDB4ZmYsMHhjNCwweDUyLDB4ZmYsMHg0NywweDM5LDB4MDgsMHg1NywweGI0LDB4MDMsMHhkMSwweGE1LDB4NzEsCi0gIDB4ZjksMHgzNiwweGI4LDB4NDIsMHhhYSwweGEyLDB4YzUsMHgwMywweGUyLDB4YTgsMHg3NCwweGQ1LDB4ZWYsMHg0ZCwweDMwLDB4YzQsCi0gIDB4NGMsMHgzYywweDVjLDB4NjEsMHhhOSwweGZmLDB4NzAsMHgxNiwweGE1LDB4YTcsMHg5OSwweDA0LDB4YTcsMHhlMiwweDZhLDB4NzAsCi0gIDB4YzUsMHg5NywweGE1LDB4OGYsMHgwMywweGM1LDB4NDQsMHgzZCwweDA0LDB4M2UsMHgxOCwweGNkLDB4YjEsMHhmNiwweGJmLDB4ZDgsCi0gIDB4MDUsMHhjNywweDgzLDB4ZGUsMHhjZCwweDRiLDB4ZjUsMHgyZiwweGNmLDB4NTUsMHhmZSwweDQ5LDB4ZjEsMHg0NiwweGVkLDB4MWQsCi0gIDB4OGQsMHg3MywweGE1LDB4NGIsMHgxYSwweDg3LDB4OWQsMHgzOSwweGUzLDB4ZjcsMHhkNywweGFkLDB4ZmQsMHg2MSwweDI1LDB4MTcsCi0gIDB4MGIsMHgzMywweGE3LDB4NGUsMHhmNSwweDlhLDB4NmYsMHg0YiwweDg3LDB4ZmIsMHg1NSwweDE2LDB4ZTksMHgwOCwweDE3LDB4MjUsCi0gIDB4ZjgsMHhmMCwweDA4LDB4ZTQsMHgyNCwweGYzLDB4ZjksMHg3NSwweGYyLDB4YjksMHhjNSwweGZmLDB4NzMsMHhiNywweGRhLDB4MTAsCi0gIDB4NzcsMHhhZSwweDA5LDB4MjgsMHhlNCwweDFlLDB4MjksMHhjNiwweDQwLDB4YTMsMHgzMywweDUxLDB4N2EsMHg3NywweDA3LDB4ZGMsCi0gIDB4MTMsMHhlYiwweGUzLDB4NGUsMHhhZCwweGZmLDB4YmMsMHg1MiwweGM4LDB4MTIsMHhkNiwweDQ2LDB4NzcsMHg4NCwweDAyLDB4Y2IsCi0gIDB4YjMsMHhiZiwweGE2LDB4ZWQsMHgwYiwweGU3LDB4YWYsMHhhMiwweDdmLDB4NDMsMHhhZSwweDgzLDB4N2QsMHgxMSwweGQzLDB4MGQsCi0gIDB4MzIsMHhlOSwweGZmLDB4MTksMHg5YiwweDljLDB4Y2YsMHhmZCwweDNmLDB4M2QsMHg4YSwweGM3LDB4NmYsMHg1NywweGU0LDB4YTUsCi0gIDB4YTEsMHg0ZiwweDIwLDB4NTYsMHhlYiwweDllLDB4MmUsMHg0YiwweGZhLDB4MzAsMHg1NCwweGY2LDB4M2EsMHgzYywweDEzLDB4ZmUsCi0gIDB4MWYsMHgxMCwweDVmLDB4YjMsMHhmNiwweGJmLDB4ZjAsMHg3ZiwweGE2LDB4NTQsMHhkNSwweGNlLDB4M2IsMHgyMywweDhlLDB4NjksCi0gIDB4OTcsMHg5NSwweGM1LDB4YTgsMHg3ZCwweDBhLDB4MmUsMHhkMCwweDkxLDB4NjgsMHg2MiwweDdkLDB4YTQsMHhhYiwweDNjLDB4M2YsCi0gIDB4YWUsMHhjNywweGQyLDB4ZmYsMHg4MiwweGYzLDB4N2YsMHg3OCwweGQ4LDB4NzEsMHhhOSwweDJlLDB4YmIsMHhlMSwweDY4LDB4YTIsCi0gIDB4ZGEsMHg4ZiwweDliLDB4ZmIsMHgyNywweDJkLDB4ZWIsMHg4ZiwweGY4LDB4MjcsMHg5OSwweGZmLDB4MzIsMHg5ZCwweDU3LDB4M2IsCi0gIDB4YzcsMHhkZCwweDFlLDB4ZjIsMHhkYiwweDYxLDB4MWQsMHgzMSwweGI3LDB4YmQsMHg5ZCwweDg2LDB4YzcsMHgzYiwweDYyLDB4NGMsCi0gIDB4ZDgsMHg4ZiwweDVlLDB4NGIsMHhmZCwweDgxLDB4MjcsMHhlMCwweDMxLDB4NjYsMHgxNiwweDM1LDB4ZTIsMHhmYywweDFmLDB4YjMsCi0gIDB4MTAsMHhlMiwweGFjLDB4OGMsMHg3NSwweDg5LDB4YjIsMHhjZiwweGVmLDB4OTgsMHhhNSwweDAwLDB4ZTQsMHgzYywweDBiLDB4ZmUsCi0gIDB4ZTEsMHhmZCwweDYxLDB4YjcsMHhiMiwweDc2LDB4ODMsMHhjZSwweDQzLDB4NmIsMHhhYiwweDcxLDB4MGIsMHg0YSwweGVmLDB4ZGIsCi0gIDB4NDgsMHg5NiwweDEwLDB4NjYsMHhhYSwweDY1LDB4M2QsMHhhZiwweDIzLDB4MzcsMHhhNCwweGY4LDB4N2YsMHhkZSwweGRjLDB4ZDEsCi0gIDB4ZDUsMHhlOSwweDFlLDB4MTAsMHhlYiwweDc4LDB4N2UsMHg1MywweGE3LDB4NWIsMHg5NywweDhiLDB4YzIsMHhhNywweDc0LDB4NWUsCi0gIDB4ZjYsMHhkOSwweDI0LDB4ODYsMHhlMSwweGQxLDB4MWIsMHg0OCwweGU5LDB4N2YsMHg3MSwweGQ2LDB4Y2MsMHhmZSwweDc2LDB4NjgsCi0gIDB4MjIsMHhlMywweDZkLDB4MmYsMHgxMiwweDQ0LDB4YTAsMHhiMSwweDg0LDB4MTksMHgzZSwweDQ5LDB4MGQsMHg0YSwweGU5LDB4N2YsCi0gIDB4MDEsMHhiZiwweDAyLDB4YjMsMHg5YSwweDBkLDB4YzcsMHgzZiwweGE2LDB4MjMsMHg0OCwweDgyLDB4MWUsMHhkNSwweDZiLDB4NzYsCi0gIDB4NDAsMHg0OCwweDk4LDB4YmEsMHhkYiwweDJjLDB4ZjgsMHg0NywweDg3LDB4MmYsMHg4NiwweDlhLDB4MzUsMHgyNywweGVhLDB4NmIsCi0gIDB4ZjEsMHg5YiwweGQwLDB4MWMsMHg2ZiwweDBmLDB4ZDEsMHhlZCwweGUxLDB4MzksMHgwOSwweGI1LDB4OWIsMHhjOCwweGM4LDB4ZTYsCi0gIDB4YTUsMHg4MSwweDJjLDB4ZjgsMHhhNywweDVjLDB4MmEsMHgxNCwweGZmLDB4MjUsMHhhZiwweDQwLDB4YTMsMHhmZCwweGE0LDB4OTAsCi0gIDB4M2QsMHhhYSwweDE2LDB4MDQsMHhlOCwweDZiLDB4YjYsMHgwNSwweGVjLDB4NTEsMHg2YSwweDlkLDB4YmYsMHhkOSwweDVhLDB4ZmYsCi0gIDB4MDcsMHhkMiwweDYwLDB4YWQsMHg5MCwweDFmLDB4YmMsMHgyYiwweDM4LDB4ZTcsMHg3NiwweDBlLDB4M2IsMHgzNSwweDdhLDB4MWYsCi0gIDB4NDksMHg3OCwweDg0LDB4YzYsMHhlYiwweGZmLDB4YjgsMHgzNSwweDM5LDB4M2IsMHg0YywweDkyLDB4ZjksMHhlZiwweDk0LDB4NjcsCi0gIDB4MWIsMHg3NSwweDgxLDB4ZGQsMHhlMCwweDZhLDB4MzcsMHg1MSwweGY2LDB4NTksMHhlNSwweDg1LDB4YmIsMHgyYywweGVmLDB4MWIsCi0gIDB4YjYsMHhlMiwweDlmLDB4OWIsMHhkZSwweGUzLDB4NGQsMHhkZSwweDgzLDB4OGUsMHhkYywweDFhLDB4ZWUsMHgwOCwweDMyLDB4NjEsCi0gIDB4Y2YsMHg3YiwweDEzLDB4NmQsMHhkZiwweGM3LDB4ZGYsMHhmNywweGI1LDB4YWQsMHg0OSwweGZjLDB4YjMsMHgyZCwweGVkLDB4NzMsCi0gIDB4ZjYsMHg0YSwweDQ3LDB4NjksMHg5ZCwweGZkLDB4NGQsMHhiMSwweDBjLDB4NWUsMHhlOSwweGM0LDB4YzEsMHhkYiwweDljLDB4ZmYsCi0gIDB4YjMsMHhhZCwweDU0LDB4NWIsMHg5YSwweDA4LDB4MGMsMHhlMSwweDdjLDB4ZGUsMHhmZiwweDIyLDB4ZTksMHhmZiwweDQxLDB4OTAsCi0gIDB4YTMsMHgzOSwweDI5LDB4ZGEsMHhhNywweGY5LDB4NjQsMHg4MywweGU2LDB4MDQsMHg1NywweDEzLDB4MGUsMHgyMiwweDlhLDB4NzMsCi0gIDB4M2MsMHhmZiwweDNkLDB4ZTEsMHhmZiwweDQ5LDB4NGYsMHhhZSwweDUwLDB4ZGEsMHg4YiwweDdhLDB4NDMsMHhiNSwweGNhLDB4ZjksCi0gIDB4M2YsMHg2OSwweDdhLDB4MDMsMHhlOCwweDQxLDB4OWEsMHg0ZCwweDI0LDB4NDgsMHg3OCwweDg0LDB4YzYsMHhkZiwweDc3LDB4YzksCi0gIDB4NzUsMHhmZSwweDY0LDB4ZmYsMHg4YiwweDg0LDB4ZmYsMHg4NywweGEzLDB4OWQsMHhlYywweDQyLDB4NzMsMHhkOSwweDIzLDB4ODgsCi0gIDB4N2YsMHg3MiwweDEzLDB4NTcsMHgyNiwweGQ2LDB4YjMsMHhjZCwweDlhLDB4ZmYsMHg5NSwweGRiLDB4ODEsMHgxOCwweGM5LDB4YTQsCi0gIDB4NzUsMHgyZCwweDgwLDB4NjMsMHgyNiwweDliLDB4NWQsMHhlNiwweDFmLDB4N2EsMHhhMiwweGZlLDB4OGYsMHhmOSwweDdkLDB4MmQsCi0gIDB4ZmQsMHgyZiwweDIyLDB4ZDAsMHhlMSwweGUxLDB4NzgsMHgxOCwweDQxLDB4ZDEsMHgwMCwweDNjLDB4NDgsMHgyYiwweDc5LDB4MzUsCi0gIDB4ODAsMHg1ZSwweGY4LDB4NDQsMHhiMiwweGFlLDB4Y2YsMHg0YywweGYxLDB4YTIsMHhkNSwweGZmLDB4NDMsMHhjZiwweGE4LDB4NWUsCi0gIDB4YzksMHhjNCwweDNmLDB4N2QsMHhjMSwweGFlLDB4MDQsMHgxMSwweGE4LDB4NGYsMHhmNSwweDVhLDB4ZDYsMHgzZiwweGE1LDB4ZmYsCi0gIDB4NDUsMHg1MywweDA1LDB4NmMsMHg2NCwweDA1LDB4M2EsMHhlYSwweDc3LDB4MTcsMHg2YywweGU0LDB4ZDEsMHhjMCwweDQxLDB4M2UsCi0gIDB4MzAsMHg2ZSwweGU1LDB4NmUsMHg5ZiwweDQxLDB4MzgsMHg0NCwweDUwLDB4YjUsMHgwZCwweDI2LDB4Y2IsMHhlZCwweDgwLDB4MmIsCi0gIDB4NmQsMHgzNSwweDQ0LDB4ZmIsMHg1NSwweDlkLDB4YWEsMHg1OSwweDZlLDB4NjgsMHhkNCwweGQ0LDB4ZjgsMHhiNiwweDk5LDB4MjQsCi0gIDB4MGIsMHgxYSwweDk4LDB4Y2EsMHg5MiwweGU3LDB4NjUsMHg3MSwweGI2LDB4YTUsMHhmZiwweDg1LDB4MzAsMHg5ZCwweGZiLDB4NmYsCi0gIDB4NzksMHg5MSwweGMzLDB4OTksMHhkYywweDkxLDB4ZDIsMHg0ZiwweGViLDB4YzMsMHgzNywweDQxLDB4MTMsMHg5ZCwweGNkLDB4OTIsCi0gIDB4ZTcsMHhkNywweDkzLDB4NTIsMHhmZiwweGM3LDB4MDcsMHhhZiwweGIzLDB4OTgsMHhlZSwweGFlLDB4Y2IsMHg1ZSwweDE4LDB4N2UsCi0gIDB4ODEsMHg3OSwweGUyLDB4NjgsMHg5MSwweDY0LDB4YTEsMHg2YSwweDlkLDB4YWYsMHg4ZiwweGQ3LDB4ZmYsMHgzMSwweGZkLDB4M2YsCi0gIDB4YjYsMHg0OSwweGY5LDB4NDMsMHg2ZiwweGVhLDB4MjAsMHgyMywweDAyLDB4MGEsMHgwZCwweDc1LDB4NDIsMHg3YSwweDcwLDB4YjcsCi0gIDB4Y2YsMHg5NSwweDg0LDB4MjMsMHhlOCwweGNmLDB4ZjksMHg3ZiwweGQyLDB4YWUsMHhkMCwweGIxLDB4ODYsMHgyYSwweGRkLDB4M2QsCi0gIDB4ODgsMHhkYSwweGVhLDB4NTUsMHg0ZSwweGU0LDB4ZTAsMHg2ZSwweDlmLDB4Y2IsMHhiYywweDYzLDB4ZWMsMHhhNCwweGZlLDB4MWEsCi0gIDB4OTEsMHhmMywweDJjLDB4ZjEsMHhhZiwweDM2LDB4ZDgsMHhjNywweGViLDB4NmYsMHhhYywweDA4LDB4OGYsMHg2OSwweGViLDB4ZjksCi0gIDB4OGIsMHgxOCwweGY4LDB4MjIsMHhjZiwweDUxLDB4ZDMsMHgyMywweDlkLDB4YTgsMHhmZiwweDIzLDB4MGYsMHg5MywweDI0LDB4ZmUsCi0gIDB4ZDksMHgwNiwweDdjLDB4N2UsMHgzMSwweGJiLDB4MjEsMHg2NCwweGRhLDB4NmIsMHhiMywweDM1LDB4YWEsMHhlMSwweGZjLDB4NjcsCi0gIDB4MjEsMHg5ZiwweDY1LDB4NTgsMHhlNCwweDk1LDB4OTQsMHhlYywweDdmLDB4OTEsMHhkYiwweGFiLDB4ZjAsMHg2YywweDI2LDB4NWIsCi0gIDB4OTEsMHg3ZiwweDA4LDB4MDUsMHg1ZCwweGExLDB4ZTYsMHhlMiwweDY5LDB4MTcsMHg4NywweDQxLDB4NjUsMHgxOSwweDQ5LDB4NzksCi0gIDB4NmUsMHg0YiwweGUyLDB4OWYsMHhmMiwweDE5LDB4YmIsMHg2MSwweDk4LDB4ZjgsMHg3YSwweGIyLDB4NzYsMHg4YiwweDQzLDB4MjYsCi0gIDB4ZGIsMHgxOSwweGY3LDB4OGYsMHg1ZCwweDFhLDB4ZjUsMHg3NywweGIxLDB4ZTIsMHhjOSwweGY3LDB4ZDUsMHhlNSwweDJjLDB4MGIsCi0gIDB4ZmUsMHhlOSwweGU1LDB4MWYsMHhiZCwweDNmLDB4NGQsMHhjZCwweDMxLDB4ZTMsMHg1ZiwweDg5LDB4YjQsMHhhZiwweDExLDB4OGUsCi0gIDB4NzAsMHgyNiwweGU3LDB4YWIsMHg3MiwweGIyLDB4ZmUsMHg3MywweDgzLDB4MzIsMHgwNiwweDI3LDB4YTUsMHhkMiwweGI4LDB4M2QsCi0gIDB4OGUsMHhmYiwweGYzLDB4NTUsMHhlZSwweGQ2LDB4ZTgsMHgxNywweDFmLDB4NjYsMHhhZiwweGQyLDB4NTIsMHg5NiwweGQ0LDB4NzcsCi0gIDB4ODYsMHhhNSwweGZlLDB4NGYsMHg0ZiwweGQzLDB4ZmYsMHhkOCwweDEwLDB4ODksMHhlZiwweGU4LDB4NDcsMHhiNCwweDVjLDB4MDYsCi0gIDB4OGQsMHg4NiwweDMzLDB4MmUsMHg0NywweDM2LDB4OTQsMHhjMCwweDk5LDB4MDgsMHgxYSwweGU2LDB4YjEsMHg4OSwweGY4LDB4NDUsCi0gIDB4MzMsMHgyOSwweGI0LDB4ZTAsMHg5ZiwweDEyLDB4MWEsMHg2OSwweDcwLDB4OWUsMHhjMSwweGY5LDB4NmUsMHhkNiwweDEyLDB4NzEsCi0gIDB4ZjIsMHg2ZSwweDI5LDB4NmUsMHg2OCwweDY2LDB4NGUsMHhjYiwweGZjLDB4ZDgsMHg5NCwweGZhLDB4M2YsMHg5YywweGVkLDB4ZTMsCi0gIDB4NTIsMHg4OSwweGM5LDB4NzYsMHgzNiwweDY0LDB4ZTAsMHg4MSwweDBmLDB4NWMsMHg5ZiwweDFiLDB4MmQsMHhlYiwweDkzLDB4YzQsCi0gIDB4M2YsMHg4YywweGFlLDB4YTIsMHg3ZCwweDkyLDB4ZDcsMHgwOCwweGYwLDB4NjgsMHhhMCwweGM5LDB4NmYsMHhlMSwweDgyLDB4MTQsCi0gIDB4MDUsMHg5MSwweDc1LDB4M2YsMHhjOCwweGVhLDB4YmEsMHg0OSwweGZmLDB4Y2YsMHg0ZCwweDE3LDB4MTIsMHg0ZCwweGE4LDB4ZTMsCi0gIDB4ZTIsMHgwNSwweGI4LDB4YzAsMHhjMywweDNhLDB4ZGMsMHhlZCwweDMzLDB4YzYsMHhkYiwweDE4LDB4NGQsMHhiZSwweGVmLDB4YjAsCi0gIDB4MzgsMHhlOCwweDlmLDB4OTAsMHgyNywweDAwLDB4YTQsMHhkMSwweDMzLDB4ZGUsMHg3ZCwweDZmLDB4M2QsMHgxZiwweDdjLDB4NzcsCi0gIDB4NjIsMHhhMCwweGQ5LDB4NjYsMHgxZSwweGZkLDB4ZmYsMHg2ZCwweDNmLDB4YzQsMHg2OSwweDFlLDB4MWMsMHg3YywweDc3LDB4NjIsCi0gIDB4YTAsMHg5OSwweDZkLDB4ZjgsMHhmZSwweGNjLDB4ZmQsMHg1OSwweGMyLDB4MTIsMHgwNCwweGRhLDB4ZTgsMHg5ZCwweDNhLDB4OTgsCi0gIDB4ZjgsMHg5NSwweGY1LDB4ZTcsMHhmZiwweGJkLDB4N2UsMHg4OCwweGEyLDB4NjcsMHhlYSwweGUwLDB4Y2YsMHhmZCwweGZjLDB4NDcsCi0gIDB4NmQsMHgxMCwweGMxLDB4MzIsMHhmOCwweDRiLDB4ZDYsMHg3ZiwweGM1LDB4YzQsMHgyMCwweGZmLDB4MmYsMHg1YiwweGZmLDB4MTUsCi0gIDB4MTMsMHg4MywweGZjLDB4ZmYsMHhiNCwweDFmLDB4YTIsMHg5NiwweGRhLDB4MDYsMHhkMSwweGJjLDB4YzIsMHhmZiwweGExLDB4NmIsCi0gIDB4ZWUsMHgzZiwweGQzLDB4YjgsMHhmNiwweDFmLDB4NWEsMHhlZiwweGMxLDB4YzEsMHg3NywweGYxLDB4NTcsMHg3ZiwweDY2LDB4ZmQsCi0gIDB4OTUsMHg5NCwweDg1LDB4NDQsMHg4MSwweDQwLDB4ZjMsMHhmYywweDkyLDB4NzksMHgzNiwweGU4LDB4OTQsMHhlZiwweDliLDB4OTgsCi0gIDB4YTQsMHhhNCwweDJjLDB4N2IsMHgxMywweDBlLDB4ZjIsMHhiNCwweDI2LDB4N2UsMHgyNSwweDY1LDB4ZmYsMHgyNCwweGZiLDB4MjEsCi0gIDB4ZGEsMHhhZCwweGZmLDB4MjgsMHgzZSwweDM2LDB4ZTAsMHhmMywweDliLDB4MWYsMHhhMiwweDE0LDB4ZWMsMHgzZCwweGZmLDB4YTcsCi0gIDB4MWYsMHhlMiwweDdmLDB4OTEsMHhmZSwweDgzLDB4ZmYsMHhmNSwweGU2LDB4OTMsMHgyNiwweDY1LDB4MDcsMHg3NSwweGY5LDB4MzMsCi0gIDB4MzgsMHgwMSwweGU4LDB4MmYsMHhlYiwweDRmLDB4ZWEsMHhjMiwweDQzLDB4NTcsMHgwZCwweDBhLDB4ZmIsMHg0YiwweGU1LDB4YTEsCi0gIDB4OTQsMHg0ZiwweGE5LDB4NWYsMHg1MCwweGI0LDB4ZmYsMHg0OCwweDFlLDB4M2EsMHhhNywweGRjLDB4M2YsMHg1NywweGEwLDB4ZmYsCi0gIDB4MGIsMHhmMiwweDM2LDB4MjEsMHhmNCwweDg4LDB4MTMsMHgyMiwweDkzLDB4ODIsMHhmMSwweDlhLDB4NDEsMHhjYSwweGZiLDB4OWEsCi0gIDB4ZTcsMHg0OSwweGEwLDB4NzYsMHhmZiwweDVmLDB4MmEsMHgwZiwweGYxLDB4ZjAsMHg0OCwweDg0LDB4ZDgsMHhkOSwweDVmLDB4MmEsCi0gIDB4MGYsMHhmMSwweGVmLDB4MjUsMHgyMiwweDY4LDB4NmMsMHhlYSwweDRhLDB4ZmYsMHhmOSwweDFmLDB4ZDIsMHgyNCwweGVkLDB4NDAsCi0gIDB4ZGMsMHg2MCwweDVkLDB4ZjYsMHhmNSwweDllLDB4ZDQsMHhmNSwweDRmLDB4OTEsMHgyNywweDFlLDB4NzMsMHgxMSwweGZjLDB4ZmYsCi0gIDB4MGIsMHhlYiwweGNmLDB4MTcsMHhiOSwweDNhLDB4ZmQsMHgzZiwweDVlLDB4ZmYsMHgyOSwweGYyLDB4NTAsMHg5MiwweDUwLDB4N2EsCi0gIDB4M2MsMHgwNCwweDMzLDB4ZDksMHhiNSwweGYyLDB4ZjAsMHgzZiwweGVjLDB4MGYsMHg5YiwweGE3LDB4MDksMHg3ZiwweGE5LDB4YmUsCi0gIDB4ZjMsMHg5YSwweDJiLDB4MmEsMHg2NCwweGZjLDB4YTUsMHhlYiwweGFmLDB4MzAsMHhiYiwweDRhLDB4ZTksMHg1ZiwweGJhLDB4ZmUsCi0gIDB4NWMsMHgxZSwweDRhLDB4NTMsMHhiZiwweGUwLDB4MzUsMHgzZiwweGQ2LDB4ZmUsMHhiMCwweDFlLDB4NDgsMHgzYSwweDhiLDB4ZmYsCi0gIDB4ZTcsMHgzZiwweDk1LDB4OTUsMHhmOCwweDBmLDB4YjAsMHhhOSwweDRiLDB4M2MsMHhmNSwweGM3LDB4MmEsMHgwZiwweGM1LDB4OWUsCi0gIDB4YzYsMHgxZSwweGY2LDB4OTcsMHhmZiwweDAzLDB4YjgsMHgyMSwweDc0LDB4YWIsMHgzYiwweGU4LDB4N2YsMHhmYSwweDkzLDB4ZWIsCi0gIDB4OTIsMHg1YywweGZmLDB4OTksMHhiZSwweDlkLDB4ZmEsMHhmMywweDVmLDB4NGQsMHhmZSwweGZjLDB4MTcsMHg5YiwweGJmLDB4YjYsCi0gIDB4NWEsMHhhOCwweGQ3LDB4ZGUsMHg1NiwweDE2LDB4NDIsMHg2NiwweDAzLDB4MzEsMHgwNywweGI5LDB4OTksMHgyZiwweGE2LDB4M2YsCi0gIDB4NTgsMHg3YiwweDdmLDB4NzAsMHg2MSwweGVlLDB4NGQsMHgyZiwweDRlLDB4N2IsMHg1MCwweGJiLDB4M2YsMHhmOCwweDU3LDB4ZDIsCi0gIDB4MGMsMHg2MywweGZlLDB4ZTQsMHhmYywweGRiLDB4NmIsMHhkMywweDFlLDB4MTQsMHhlZSwweGQ3LDB4ZmUsMHg1YSwweDgxLDB4ZGUsCi0gIDB4YjQsMHgwNywweGQzLDB4ZjgsMHg2MCwweDQ2LDB4ZWYsMHg4YywweDA3LDB4MWIsMHhlZSwweDBmLDB4ZTEsMHhlMCwweGE0LDB4OTAsCi0gIDB4ZjgsMHgxNSwweGNlLDB4OWYsMHhjMCwweGMzLDB4ZDAsMHg0MywweDA0LDB4OTUsMHgwNSwweGQ0LDB4NmMsMHgyYSwweDg1LDB4MjcsCi0gIDB4MDYsMHhlOSwweDM4LDB4ZDAsMHhkNCwweGVjLDB4M2MsMHg2OSwweDIzLDB4YmYsMHgxMiwweGMyLDB4MmIsMHg5MywweGUxLDB4NjUsCi0gIDB4MWUsMHhjMCwweDEzLDB4NDIsMHhiMCwweDFjLDB4YWUsMHg4MywweDFmLDB4MzEsMHgzZSwweDEwLDB4YWUsMHg1MywweGQyLDB4NTgsCi0gIDB4ZGEsMHgwYSwweDIxLDB4NGYsMHhiYiwweDhlLDB4Y2UsMHg2MCwweGMyLDB4OGEsMHg4NiwweGU1LDB4ZjAsMHg1NSwweDQ4LDB4NjMsCi0gIDB4YWEsMHgzNiwweDMxLDB4YmYsMHg3NywweGI5LDB4NTQsMHgyNiwweGRjLDB4Y2QsMHhiZSwweDVjLDB4MmQsMHhmNSwweGE1LDB4M2QsCi0gIDB4MjQsMHhkYywweGNmLDB4ZmUsMHhkYSwweDM1LDB4ZTMsMHhiOCwweDYwLDB4MGUsMHhkNCwweDM0LDB4ZjMsMHg4YSwweGZlLDB4ZDcsCi0gIDB4NmEsMHhhZSwweGU1LDB4NzksMHg3YSwweDM1LDB4NGQsMHg1NSwweDI4LDB4Y2EsMHgyYiwweDNjLDB4NGMsMHgyMSwweGM4LDB4ODMsCi0gIDB4NzQsMHgxMCwweDI2LDB4MDcsMHhlMSwweGM5LDB4MmIsMHhmOSwweDkzLDB4Y2YsMHhmMywweDYyLDB4NDAsMHg1YSwweDI5LDB4ZTQsCi0gIDB4YjEsMHgzYiwweDU0LDB4NjgsMHg5NiwweDljLDB4MDIsMHgzNSwweGZjLDB4YWEsMHgxMiwweDQxLDB4MmIsMHg5MSwweDMyLDB4ZmYsCi0gIDB4MDIsMHg2OCwweGMwLDB4NzMsMHg0ZCwweGMxLDB4YWYsMHgyOCwweDJjLDB4YjksMHgzZSwweDJmLDB4ZGUsMHg5NSwweDc2LDB4NmYsCi0gIDB4YzMsMHg3ZCwweGZhLDB4NTcsMHg1YywweDUyLDB4MjAsMHhjZCwweGRmLDB4MTAsMHg4YywweGRkLDB4ZTcsMHg5YSwweDYxLDB4NDMsCi0gIDB4ZDksMHgxOCwweGQ0LDB4NmIsMHg1ZCwweDY5LDB4ZTksMHg2OSwweDM4LDB4NTAsMHg3MywweGVkLDB4MzMsMHhiNCwweGU0LDB4ZjMsCi0gIDB4YjAsMHg5OSwweGMyLDB4NWYsMHhjMywweDU3LDB4OGMsMHgxOSwweDQxLDB4NjksMHhhOSwweDM5LDB4OTgsMHg1ZSwweDlmLDB4NzYsCi0gIDB4YmYsMHhmMCwweDY1LDB4NzYsMHg5ZiwweDMxLDB4YzMsMHg4MywweDAzLDB4MTEsMHg3MCwweDUwLDB4OWUsMHgzNCwweGJmLDB4NzAsCi0gIDB4YmUsMHg1YSwweDFiLDB4MDAsMHhkZSwweGUzLDB4MDksMHg4NSwweDhkLDB4MjYsMHgyOSwweDIxLDB4MDEsMHg0NSwweGEwLDB4NTIsCi0gIDB4YzMsMHhjNSwweDk4LDB4MjIsMHhkOCwweDExLDB4NzMsMHhhMSwweDk4LDB4NTQsMHg5NCwweDllLDB4ZTQsMHhmYywweDE3LDB4NDMsCi0gIDB4NjgsMHhhZCwweDg2LDB4ZDEsMHhmZSwweGM4LDB4NTMsMHhjZCwweDAxLDB4MWEsMHg4MiwweGVhLDB4ZjgsMHgxNSwweGVhLDB4NGEsCi0gIDB4MWYsMHgxZiwweDU0LDB4MjcsMHg5ZiwweGU3LDB4YzUsMHg2MCwweGRhLDB4MmEsMHhlMSwweDZmLDB4ZTAsMHgzYSwweDZkLDB4MDYsCi0gIDB4NGIsMHg1YiwweDA1LDB4N2MsMHhmMCwweDk1LDB4NjgsMHgxYSwweGY3LDB4OTEsMHg3YywweDE1LDB4NjYsMHg0NCwweGQzLDB4NTQsCi0gIDB4ZTEsMHgwYywweGZjLDB4MjMsMHhjYywweGIwLDB4YmMsMHhlZiwweDVhLDB4NmQsMHgxYSwweGZmLDB4NmQsMHgxOSwweDhjLDB4MTcsCi0gIDB4NmUsMHhmOSwweDQ3LDB4M2UsMHg1OCwweDI5LDB4MmMsMHg0ZiwweDVjLDB4NTksMHgwOSwweGNiLDB4ZDksMHg3NSwweDI5LDB4ZjMsCi0gIDB4NmYsMHhmNywweDRiLDB4OWUsMHgwNiwweGJiLDB4NWEsMHg0MywweDY5LDB4NzgsMHg3YywweGEwLDB4MWMsMHg5ZCwweDFjLDB4YzAsCi0gIDB4ZjgsMHhjMCwweDk4LDB4M2UsMHhmOSwweDNjLDB4MDIsMHg5NywweDU4LDB4NzYsMHgxMCwweGI5LDB4ZjAsMHgxYiwweDFmLDB4MTgsCi0gIDB4NTMsMHgwNiwweGFhLDB4NjYsMHhkOSwweGQ0LDB4OGMsMHgwOCwweDFlLDB4YjYsMHg1NCwweGNkLDB4YTEsMHhkMiwweDUxLDB4NzMsCi0gIDB4ZjAsMHg2NSwweDczLDB4NjAsMHg5OCwweDU3LDB4NWUsMHgxMCwweDNjLDB4M2QsMHg0YiwweDNkLDB4NWYsMHg3NiwweGU3LDB4MWEsCi0gIDB4OTYsMHhmNSwweGYxLDB4MGIsMHhhMSwweDg2LDB4ZTUsMHhlYSwweDU3LDB4NjksMHg1YSwweDM4LDB4MmQsMHgzMSwweDk4LDB4ODEsCi0gIDB4ODMsMHg5ZSwweDNjLDB4M2UsMHg2OCwweDE0LDB4ZDQsMHg5ZSwweGU1LDB4OWUsMHhhZiwweGRhLDB4NjcsMHg1OCwweDllLDB4ZTcsCi0gIDB4NDUsMHgzZiwweDVmLDB4MzAsMHg1YywweDQyLDB4MjEsMHgzYywweDNlLDB4MzAsMHg5NywweGQwLDB4OGUsMHgwMywweDJkLDB4MmMsCi0gIDB4ZjEsMHg4MSwweDQ4LDB4MDUsMHhlYiwweGZiLDB4MTIsMHgwOCwweDM1LDB4ZTQsMHhhOSwweDc3LDB4MDQsMHg2MCwweDhiLDB4MTQsCi0gIDB4NmEsMHhiOCwweDVlLDB4YmQsMHg4MywweDRlLDB4MGYsMHg0YiwweGFiLDB4ZjAsMHgzNSwweGVmLDB4MDgsMHg0YywweGRmLDB4MjIsCi0gIDB4YTksMHhmYywweDdkLDB4MDMsMHg4YSwweDc1LDB4YmYsMHg4NSwweDg0LDB4ZTUsMHhjMiwweDU3LDB4ZTEsMHgyYiwweDJjLDB4MmQsCi0gIDB4MjQsMHhlMSwweGVlLDB4YzcsMHhiNSwweDliLDB4MTEsMHg0YSwweDViLDB4MmUsMHhkYywweDgxLDB4NTcsMHhhNiwweDg3LDB4ZDIsCi0gIDB4MjgsMHhkYywweDAxLDB4ZDMsMHg5OSwweDY0LDB4ZDksMHgzZiwweGM2LDB4MWQsMHg2OSwweDVmLDB4NjIsMHhmNywweDg1LDB4NjYsCi0gIDB4NmMsMHgxMywweGQyLDB4YTEsMHg5YSwweDA1LDB4NDMsMHhiOSwweDc5LDB4NjksMHhlOSwweDQyLDB4MzUsMHg1MywweDI2LDB4MDYsCi0gIDB4ZTYsMHgxNSwweDQ4LDB4OWUsMHg5NywweDA2LDB4OTIsMHg3OCwweDZjLDB4MGQsMHhiMiwweGYxLDB4MDgsMHg1NCwweDI3LDB4Y2UsCi0gIDB4ODIsMHg4NCwweGU3LDB4NTEsMHgwOSwweDQ4LDB4ZmMsMHgwYSwweDFmLDB4ZTQsMHg4MiwweDlhLDB4M2MsMHgyZiwweDc3LDB4OTAsCi0gIDB4ZTksMHhhYywweDI5LDB4OTQsMHhhZiwweGMwLDB4MWQsMHhlMiwweDc0LDB4NzYsMHgzYSwweDc0LDB4NmIsMHg1ZSwweGU2LDB4MWQsCi0gIDB4ZTIsMHg5NywweGM2LDB4MDcsMHhkMywweGM2LDB4MDcsMHhkYSwweGZjLDB4YzksMHhmYiwweGFmLDB4YmQsMHgyMywweGMzLDB4OTQsCi0gIDB4MDYsMHg3OSwweGIzLDB4NWYsMHg0YSwweDliLDB4OGYsMHg4MywweDJmLDB4ZTYsMHhjZCwweDc4LDB4NDksMHg3YSwweDMwLDB4ZmMsCi0gIDB4MzYsMHg1ZSwweDk5LDB4ZmUsMHg1MiwweGRhLDB4ODMsMHgwZCwweDZmLDB4ODcsMHhmZSwweDQ3LDB4ZGUsMHgwYywweDIzLDB4OTksCi0gIDB4ZmYsMHg3MiwweGZiLDB4MWQsMHhlMiwweDgzLDB4ZWMsMHhlZCwweGQwLDB4NDIsMHg5YywweGM2LDB4MDcsMHgyYiwweDE2LDB4ZTYsCi0gIDB4NjUsMHhiZSwweDM0LDB4ZWQsMHhjMSwweDg2LDB4OTksMHg3OCwweDQ1LDB4NzgsMHg4OSwweDNjLDB4OTgsMHhiOCwweDgzLDB4MzEsCi0gIDB4ZGQsMHgzMiwweDVmLDB4MzAsMHhlZiwweGJmLDB4MWMsMHhmOCwweGRkLDB4ZWUsMHg1ZiwweGYxLDB4ZDcsMHhmOCwweDg3LDB4MzgsCi0gIDB4YjAsMHhlMywweGZkLDB4ZDMsMHg1ZSwweDgyLDB4ZjksMHgzOCwweDEwLDB4ZjMsMHhhNiwweDFiLDB4YzIsMHhlNCwweGYzLDB4ZTMsCi0gIDB4MGUsMHg1MiwweDgxLDB4OWYsMHg5OCwweGI0LDB4ODQsMHhmYywweDUxLDB4MTIsMHg4MiwweGU4LDB4N2UsMHg1MywweDIyLDB4MDEsCi0gIDB4MWYsMHhmYywweDE1LDB4Y2EsMHg5ZiwweGU0LDB4ZmQsMHgyMSwweDVkLDB4NTgsMHhjMSwweDk2LDB4ODcsMHhkMiwweGYzLDB4NmUsCi0gIDB4NWYsMHg2NywweDBlLDB4YWUsMHhjYiwweDRiLDB4YzMsMHg0MSwweGQzLDB4ZjgsMHgyMCwweDlmLDB4MmQsMHg1ZiwweDcxLDB4NWQsCi0gIDB4OWUsMHhjNCwweDkyLDB4ZDMsMHg2ZiwweGQ3LDB4ZDIsMHgzYywweGY5LDB4NGIsMHhlOSwweDk3LDB4YTEsMHg4OSwweGE1LDB4ZDUsCi0gIDB4MGIsMHhmNywweGMzLDB4NWYsMHg0MywweGFlLDB4MjEsMHhkNCwweDAzLDB4MWYsMHhlMCwweDZiLDB4N2EsMHhjYywweDJiLDB4ZDMsCi0gIDB4MmQsMHhmYiwweGU3LDB4NzYsMHgzZiwweDUzLDB4NzUsMHhlYSwweDIyLDB4MzYsMHg1NCwweGUzLDB4MjEsMHgzYywweDk0LDB4ZTYsCi0gIDB4MTEsMHg0YywweDBjLDB4ODQsMHgzMCwweGRhLDB4NDcsMHhlNiwweGMwLDB4ZjIsMHgzYywweGI3LDB4ZmIsMHg5YiwweDQyLDB4M2IsCi0gIDB4NzAsMHhmZiwweGQ4LDB4MDAsMHg3NywweDU3LDB4MDMsMHg1NSwweGZkLDB4YjgsMHg3ZiwweGI4LDB4ZGIsMHgwMCwweDA3LDB4NGEsCi0gIDB4MTgsMHg3NywweDk0LDB4MzksMHhiMCwweGNlLDB4YWYsMHg5OSwweDFkLDB4ZWMsMHhiOSwweGNmLDB4ZjMsMHgxNSwweGVlLDB4MTAsCi0gIDB4ZDQsMHgxYSwweDgyLDB4ZWEsMHg3ZCwweGY2LDB4MTksMHhmZSwweGM0LDB4ODAsMHhjZSwweDEwLDB4ZDMsMHg4MiwweDg5LDB4MDEsCi0gIDB4MjQsMHg5ZiwweDA3LDB4NDQsMHgyMSwweDY4LDB4ZGMsMHhlNywweDk5LDB4NDEsMHhhNSwweDFhLDB4M2UsMHg1MCwweDY3LDB4ZDgsCi0gIDB4ZDMsMHg2YSwweDEyLDB4NTcsMHhlYywweDY5LDB4ZmUsMHhmMSwweDVmLDB4YTUsMHg0ZCwweDdlLDB4NWQsMHgwNCwweDFjLDB4OWEsCi0gIDB4YTYsMHgyOSwweDBhLDB4NjIsMHgyNiwweDA1LDB4MjUsMHg5ZiwweGE0LDB4MzQsMHgyMCwweDA0LDB4YTMsMHgwOSwweDc0LDB4YTYsCi0gIDB4YTIsMHgyMCwweGMyLDB4MDEsMHgwYSwweDQ1LDB4Y2IsMHg2YSwweGMyLDB4ZWQsMHg3NywweDAxLDB4NjEsMHg0YywweDU3LDB4ZWYsCi0gIDB4MzQsMHhjMiwweDA0LDB4MTgsMHg1MywweDU1LDB4MTcsMHg2MiwweDFiLDB4NzMsMHg4MCwweDQwLDB4MjYsMHg5ZCwweDBmLDB4ODAsCi0gIDB4NTIsMHhjYiwweGYzLDB4ZTAsMHg3YSwweGUyLDB4MDksMHg4MCwweGViLDB4NDQsMHgxNCwweGZiLDB4N2MsMHhjMCwweGE1LDB4YmQsCi0gIDB4MTAsMHgyMiwweGRiLDB4NzAsMHg3MCwweDNkLDB4YmYsMHg5MiwweDkwLDB4M2YsMHhjOSwweDdmLDB4NjEsMHhhZCwweDk2LDB4ZDAsCi0gIDB4MTcsMHgzOCwweDVmLDB4OWMsMHgxMCwweDQ0LDB4MzksMHgyMSwweGU5LDB4N2UsMHg5OCwweDgzLDB4MDMsMHhmYywweGY0LDB4ZjcsCi0gIDB4YzMsMHgzNCwweGM4LDB4YjUsMHg3YywweDJmLDB4MTgsMHg5NywweDI3LDB4MDIsMHg2MywweDkyLDB4NDcsMHhiMCwweDAzLDB4OGEsCi0gIDB4NGUsMHgwMywweDA3LDB4NzksMHhlNiwweDQwLDB4ZTEsMHhmNCwweGFmLDB4M2IsMHg0MCwweGIxLDB4Y2UsMHg5NywweDEyLDB4ZjMsCi0gIDB4MzUsMHg5NCwweDNmLDB4ZjMsMHhjMSwweGFlLDB4ZTEsMHhlMCwweDM0LDB4MmMsMHg4MCwweDBjLDB4N2UsMHhlNSwweGI0LDB4NTYsCi0gIDB4YzgsMHhiMywweGZkLDB4ZjksMHhhZiwweDkyLDB4M2YsMHhkMywweDg0LDB4ZjksMHhkYSwweGQyLDB4NjAsMHg0ZSwweDM0LDB4ZjcsCi0gIDB4NDUsMHg2MSwweGJlLDB4YjEsMHg1NCwweGNiLDB4YzksMHg5NSwweDcwLDB4NzAsMHgzYiwweDVlLDB4YzksMHg5NSwweDdhLDB4ODUsCi0gIDB4ZmMsMHhlYSwweGE1LDB4YzEsMHgyZiwweDJiLDB4ZDYsMHhmZCwweDAzLDB4YjcsMHhhNCwweGQ1LDB4ZjUsMHhmYywweGFkLDB4ZTcsCi0gIDB4YWIsMHgxMSwweDY5LDB4NjcsMHhkYSwweGI3LDB4NzAsMHg3MCwweDZmLDB4ZWIsMHg4YywweGE3LDB4MTMsMHg1NywweDcwLDB4MjAsCi0gIDB4OGMsMHgwZiwweGFjLDB4ZjMsMHg2OSwweDAyLDB4ZTgsMHg2YiwweDA5LDB4MzAsMHgxOCwweDI0LDB4MjEsMHhkOCwweDBjLDB4ZTMsCi0gIDB4OGYsMHhiMSwweDU5LDB4ZmEsMHgzMywweGNmLDB4MDMsMHhhYiwweDQyLDB4ZDMsMHhmMywweGE0LDB4M2IsMHgwNCwweDg4LDB4ZDQsCi0gIDB4NzIsMHg0NSwweGU2LDB4MTcsMHhhNiwweDQ3LDB4YTQsMHg5NSwweGQzLDB4ZjMsMHg5YSwweGVlLDB4YzgsMHg5ZiwweGNlLDB4NmEsCi0gIDB4MjcsMHgwNiwweGQ2LDB4ZjksMHhiNywweDA3LDB4YTcsMHhkZiwweDI3LDB4N2QsMHg0NSwweDkwLDB4MjAsMHg4ZCwweDBmLDB4NmUsCi0gIDB4MTcsMHhiZSwweGEyLDB4ZGQsMHg4ZSwweDRhLDB4NGIsMHhmYSwweDBhLDB4Y2MsMHhjMCwweDgxLDB4NzIsMHg5ZiwweDM0LDB4NDMsCi0gIDB4OTgsMHg2MSwweGQ5LDB4MGYsMHhkYywweGJmLDB4ODAsMHg5MiwweDRmLDB4YzEsMHhiZCwweDk5LDB4ZWYsMHhhNywweGMxLDB4NzAsCi0gIDB4YWUsMHg5YSwweDE2LDB4MTAsMHg3MCwweGMwLDB4NzAsMHg0MCwweDU3LDB4ZGMsMHg5YiwweDE3LDB4ZGMsMHg5MCwweGFiLDB4YWUsCi0gIDB4YjUsMHhkZSwweGRlLDB4MjYsMHgxMSwweDVlLDB4MTcsMHhjOSwweDI1LDB4ZDksMHgwNCwweGMyLDB4MzQsMHg1ZCwweGI5LDB4NzYsCi0gIDB4ZTAsMHhjZSwweGI1LDB4Y2UsMHhiNywweGE3LDB4ZTcsMHgwOCwweDRkLDB4YzYsMHgwYSwweGNmLDB4ZjUsMHg0YiwweGM1LDB4MmYsCi0gIDB4YzMsMHg2OSwweGUzLDB4NTYsMHg0ZiwweGM2LDB4YzQsMHgyMCwweDczLDB4MjksMHgyYSwweDAxLDB4NzMsMHg2MCwweDdkLDB4OWUsCi0gIDB4OGMsMHhiNCwweDg3LDB4YWEsMHhlZiwweDhmLDB4ZmUsMHhiNSwweDdhLDB4NTMsMHg5ZiwweDg0LDB4ZGEsMHgzZiwweGYyLDB4ZDcsCi0gIDB4ZWEsMHgwYywweDg0LDB4MDEsMHhmMCwweDM2LDB4ZmIsMHgyMiwweDBlLDB4ZWUsMHg3OCwweDQ4LDB4NzgsMHg5YiwweGZkLDB4ZmQsCi0gIDB4OWMsMHgxOSwweDg2LDB4NjUsMHhiZSwweGZjLDB4YjcsMHhmZSwweGQ3LDB4YTMsMHhjZiwweDc2LDB4MTQsMHg2NywweDdjLDB4ZTEsCi0gIDB4MmUsMHgxYywweGVjLDB4ZWIsMHgyOCwweGJlLDB4NTMsMHhiZSwweGY3LDB4YWUsMHhmZSwweDJkLDB4Y2YsMHgxNiwweGZlLDB4M2MsCi0gIDB4NDMsMHhmNiwweGRmLDB4NzUsMHhkYSwweDFjLDB4NTgsMHg5ZiwweDY3LDB4ZDEsMHhkNSwweDdiLDB4YWUsMHhmZSwweGZhLDB4ZjksCi0gIDB4MGIsMHgxZiwweDhlLDB4NTYsMHhmZCwweDEwLDB4MDcsMHgwNywweDJlLDB4N2MsMHgzYywweGJhLDB4ZTgsMHhjYSwweGIyLDB4ZGYsCi0gIDB4NmQsMHhiZCwweDNhLDB4NzAsMHg3OSwweDc0LDB4ZDEsMHgyMywweGNiLDB4YWUsMHg5YSwweDAzLDB4ZjgsMHhkZiwweGY4LDB4ZjEsCi0gIDB4M2QsMHg5ZSwweDMxLDB4YzcsMHg3ZiwweDY3LDB4NzQsMHhjYiwweGFhLDB4ZDksMHhhMywweDhlLDB4YTcsMHg2YSwweGFlLDB4NDYsCi0gIDB4YjcsMHhmYywweGIzLDB4ZWYsMHg1ZiwweGVmLDB4ZmMsMHhlMSwweDZiLDB4NzcsMHg1ZSwweDc4LDB4ZWMsMHg3MiwweGQ1LDB4ZDUsCi0gIDB4M2IsMHg2ZiwweGUxLDB4ODMsMHgwMSwweGViLDB4ZmMsMHhhYSwweDQ3LDB4ZWUsMHhmOSwweGRkLDB4ZDYsMHgwMywweDAzLDB4MWYsCi0gIDB4NGUsMHgzYywweGM2LDB4ODcsMHg5NywweDI3LDB4MWUsMHgwYywweGU3LDB4ZGYsMHhmMywweDNiLDB4ZjMsMHgwOSwweGFkLDB4ZjMsCi0gIDB4ZmYsMHhlZiwweGY2LDB4Y2UsMHgyZiwweGI2LDB4YTksMHgyYSwweDhlLDB4ZTMsMHhiZiwweGRiLDB4OWUsMHg5NiwweDk2LDB4YjUsCi0gIDB4ZTMsMHg1ZSwweGU4LDB4YTAsMHhlMCwweGIyLDB4NzQsMHhlYiwweGQ4LDB4YTYsMHgxMiwweDczLDB4YzEsMHg4ZCwweDNmLDB4YzEsCi0gIDB4YjAsMHhiMywweGI1LDB4ZGQsMHhjYSwweGU0LDB4NGYsMHgyNywweGEwLDB4NDAsMHg4YywweGU5LDB4OTAsMHhhOCwweGYxLDB4NjksCi0gIDB4YzMsMHgxNywweDEzLDB4MDMsMHhkYywweDQyLDB4MjEsMHhjNCwweDQwLDB4YjIsMHhjYywweGE5LDB4ZDMsMHg0YywweDFkLDB4ODksCi0gIDB4MWEsMHg2MiwweDQwLDB4NjMsMHg4YywweGM2LDB4YzQsMHg5OCwweDVjLDB4ODgsMHgwOCwweDg0LDB4ODcsMHgyZCwweDA2LDB4MTIsCi0gIDB4YTMsMHg4OSwweDQwLDB4ZGMsMHg4YiwweDA5LDB4MDksMHg3YiwweDIwLDB4MzEsMHgzZSwweGNjLDB4ZjksMHhmYiwweDlkLDB4N2IsCi0gIDB4ZGIsMHg5ZSwweDYyLDB4ODQsMHg4OCwweGRjLDB4MTcsMHg3MywweGJlLDB4NGYsMHhkZiwweDlkLDB4OWQsMHhmZSwweDc2LDB4N2EsCi0gIDB4ZmEsMHhiYiwweGJmLDB4ZmIsMHhmOSwweGRkLDB4ZGIsMHg3NiwweGM5LDB4MDMsMHhkOSwweDZiLDB4MjMsMHg2YiwweGE2LDB4OGYsCi0gIDB4MGYsMHhhYywweGE3LDB4MDcsMHg3ZSwweDNlLDB4N2QsMHgwMiwweDk3LDB4YmQsMHhlNSwweDk3LDB4NDUsMHgxNCwweDIxLDB4MTksCi0gIDB4MjcsMHg1MywweGJjLDB4MzksMHgyMCwweGNmLDB4ZDcsMHgwZSwweDBkLDB4NjYsMHhlYSwweGY1LDB4ZDYsMHhiYSwweDdlLDB4YmIsCi0gIDB4NjksMHg5MCwweDhmLDB4NDMsMHg2YiwweDJjLDB4N2MsMHgxZSwweDQxLDB4NzEsMHg1YywweDZmLDB4NjUsMHhkYSwweDc5LDB4ZGYsCi0gIDB4OTAsMHg4ZCwweGE2LDB4NWUsMHg5MywweGY3LDB4OTMsMHgxZCwweDE5LDB4MDIsMHhjMSwweDg3LDB4YzUsMHgyMywweDJlLDB4MGQsCi0gIDB4N2UsMHhlNywweDEyLDB4NjMsMHhjMCwweDMxLDB4MjksMHgzZCwweDIwLDB4Y2YsMHhmNywweDNiLDB4NTgsMHgxOCwweDY1LDB4ODcsCi0gIDB4MGEsMHgyZSwweDFmLDB4NWEsMHg1OCwweDY2LDB4ODUsMHgzOSwweDJhLDB4MGMsMHhkNSwweGU3LDB4YWEsMHgxZCwweGNhLDB4ZTMsCi0gIDB4NDEsMHgxYSwweGQ0LDB4MGIsMHgyZSwweGI2LDB4YzUsMHg0YiwweGQ4LDB4MTYsMHg3NywweDQwLDB4Y2UsMHgxNywweGQ0LDB4YmIsCi0gIDB4ZTQsMHhmOSwweGExLDB4ZjQsMHgzZSwweGZhLDB4YTcsMHgwZSwweDM1LDB4NzAsMHg2YywweGVmLDB4MmEsMHhhZCwweGJlLDB4ZDgsCi0gIDB4OWIsMHgzMCwweDJlLDB4MzIsMHgzNCwweDU2LDB4NmYsMHhiMywweDcxLDB4MTksMHgzMywweDA0LDB4NGQsMHhjMiwweGE4LDB4NWEsCi0gIDB4M2YsMHhlNCwweGY1LDB4ZDAsMHg1MSwweDVmLDB4ODAsMHg0ZSwweDg1LDB4MTAsMHhkNywweDg5LDB4MDYsMHgzOSwweGQyLDB4NTMsCi0gIDB4MTUsMHgyOCwweGNhLDB4ZjEsMHgyMywweGFjLDB4ODksMHhiZSwweGNiLDB4NjksMHgxMCwweDhlLDB4MjMsMHgyOCwweDIyLDB4MTYsCi0gIDB4ZTYsMHhmNSwweDMxLDB4ZjYsMHgwMiwweDk5LDB4NDEsMHg3ZCwweDljLDB4MzUsMHg2YiwweDYxLDB4YWIsMHg5YiwweDU3LDB4ZDUsCi0gIDB4OTMsMHg0NywweDU5LDB4OWYsMHhiNSwweGY4LDB4NTQsMHhlNiwweDUzLDB4NzgsMHg4NCwweGVkLDB4MmUsMHgyYywweDljLDB4NDgsCi0gIDB4OWYsMHgzMiwweGQwLDB4OWMsMHg3NSwweDRkLDB4OWYsMHgzMywweDIyLDB4YWQsMHhkZSwweDhlLDB4YzIsMHgyMiwweDg4LDB4ZmQsCi0gIDB4MTgsMHg3OCwweDU3LDB4ZGYsMHg0NCwweDY2LDB4MGEsMHhkYSwweGI1LDB4NGQsMHhiMCwweDBkLDB4OTgsMHgxZCwweDMwLDB4ZDEsCi0gIDB4ZjQsMHhjMywweDYyLDB4M2IsMHgwMCwweDFhLDB4YWYsMHgzYywweDAwLDB4NWIsMHg1NSwweDNkLDB4ODEsMHgzNCwweGQ4LDB4MGYsCi0gIDB4NzQsMHhjZiwweDAxLDB4ZGIsMHgzNiwweGVhLDB4NTQsMHhkMywweGY4LDB4YWMsMHg1OCwweDRlLDB4MTgsMHgwMywweDEwLDB4MmIsCi0gIDB4Y2EsMHhiNywweGFmLDB4MzEsMHhiZSwweDY4LDB4NTcsMHg4NywweDEzLDB4ZTAsMHg1YywweDI5LDB4ZDAsMHgxMywweDRjLDB4MzQsCi0gIDB4OTgsMHg0NSwweDcxLDB4ODcsMHg4MCwweDJhLDB4MzUsMHgyNCwweDEyLDB4NTAsMHgzNSwweDlmLDB4ZTUsMHhiNSwweDMxLDB4MmMsCi0gIDB4OTIsMHg3MSwweGFhLDB4ZjgsMHg3MSwweDJjLDB4ZmQsMHhjOCwweDIzLDB4NzksMHg1MSwweDM2LDB4ZDcsMHg1NSwweDRjLDB4NzksCi0gIDB4YmUsMHhhZSwweDgxLDB4OGYsMHgzNiwweGFkLDB4YzUsMHhmOSwweGM0LDB4ZTcsMHgxOCwweDlhLDB4ZjAsMHgxZCwweGE2LDB4MTUsCi0gIDB4ZTgsMHg4YywweGU2LDB4OGEsMHgxMywweDFmLDB4NWEsMHgwNCwweDQ1LDB4NTAsMHhjNSwweDg3LDB4Y2MsMHgzMSwweGFiLDB4MDgsCi0gIDB4OWMsMHhkYSwweGFjLDB4Y2EsMHhmOSwweDk0LDB4NjMsMHg2NywweDRlLDB4NjUsMHhmYywweDRlLDB4M2UsMHg2NCwweDE1LDB4M2UsCi0gIDB4ZjQsMHhkMSwweDVkLDB4ZWUsMHhkMiwweDBlLDB4NzEsMHhmYywweGQxLDB4MTQsMHg5MCwweDA2LDB4ZTcsMHgyNCwweDUzLDB4YWMsCi0gIDB4MWEsMHhjMSwweDEzLDB4ODEsMHhiYywweDFlLDB4YzEsMHg2ZiwweDIxLDB4MzgsMHhlYywweDFhLDB4ODMsMHg0ZSwweGJiLDB4M2IsCi0gIDB4NGIsMHgwNiwweDQ3LDB4MzAsMHgxZiwweDJhLDB4ZWIsMHhkMSwweGJhLDB4NjUsMHgyYywweGZjLDB4MDcsMHg1MywweGM5LDB4ODcsCi0gIDB4MWMsMHhiOCwweGYxLDB4MjMsMHhkNSwweGYxLDB4MjMsMHg1MiwweGZjLDB4OTAsMHg5NCwweDZmLDB4M2MsMHhjMywweGYxLDB4ODUsCi0gIDB4OGMsMHg0MSwweDg2LDB4ODgsMHhkZiwweDMxLDB4MDYsMHg2NywweDgzLDB4MjUsMHhlMywweDhjLDB4NjgsMHhkZCwweDdhLDB4NjksCi0gIDB4M2QsMHg1OSwweDRlLDB4NTgsMHg1OCwweDlmLDB4OWYsMHgxNywweDQ3LDB4M2UsMHhlYywweDQ3LDB4MmMsMHg2NCwweDU1LDB4YTYsCi0gIDB4Y2IsMHgzMSwweDUwLDB4ZTYsMHhiMSwweDJjLDB4MTEsMHgzNywweDY1LDB4YmUsMHhiOCwweDA0LDB4NGMsMHg4ZCwweDNmLDB4ZjIsCi0gIDB4MjEsMHgwOCwweDJjLDB4MjQsMHg1MCwweGM0LDB4YzYsMHhjZCwweGQ0LDB4NDMsMHhkMiwweGQ1LDB4MTAsMHg5ZSwweDc5LDB4MWEsCi0gIDB4NjksMHg5MCwweGU1LDB4MWIsMHg3MywweGIwLDB4MTgsMHg0MSwweGYxLDB4YWEsMHhjMCwweDQyLDB4NWYsMHgxOSwweDE0LDB4ODcsCi0gIDB4YWMsMHgyYiwweGJjLDB4MjMsMHgxZSwweGUwLDB4MTIsMHhjZiwweGY3LDB4YjAsMHhhMSwweGMzLDB4M2IsMHgxMSwweGVhLDB4MGMsCi0gIDB4YzQsMHg0MiwweGM0LDB4M2MsMHhjNywweDU4LDB4ZjUsMHhkMiwweGM4LDB4Y2UsMHg3NSwweDc2LDB4MjUsMHhiZSwweGQ2LDB4ZTMsCi0gIDB4MWIsMHhiMiwweGM2LDB4ZjMsMHhhZCwweDg4LDB4ODUsMHg0MSwweDlhLDB4ZjYsMHg2MiwweDNjLDB4NGMsMHg1OCwweDQ4LDB4MjMsCi0gIDB4NjQsMHhjNCwweGFmLDB4NTgsMHg2NSwweDdlLDB4MmUsMHhkMywweDEzLDB4NzAsMHhmOCwweDkzLDB4MWYsMHg5ZCwweDM3LDB4NjQsCi0gIDB4M2QsMHg0YiwweGI0LDB4ZjksMHhiZCwweGQzLDB4OWYsMHgzYSwweGEwLDB4NDgsMHhlOCwweGM4LDB4Y2UsMHg1NSwweDVlLDB4MmYsCi0gIDB4YTAsMHg3YiwweGEzLDB4YzgsMHg4NywweDY5LDB4MzYsMHg4YywweGNmLDB4NmUsMHhhMywweDUzLDB4N2YsMHg5YSwweGE5LDB4ZmUsCi0gIDB4NjQsMHhkOSwweDg4LDB4NTMsMHg5YSwweGIyLDB4NGMsMHhkYSwweDdmLDB4Y2MsMHhkYiwweDAxLDB4MmIsMHg5ZSwweDBmLDB4OGUsCi0gIDB4MTksMHgxZiwweGEzLDB4NTksMHg4NiwweGEwLDB4YTgsMHgxZCwweDg1LDB4ODEsMHg0MiwweGRjLDB4MzUsMHg1NiwweDdjLDB4NDAsCi0gIDB4MTQsMHhhMiwweGIyLDB4MzIsMHg3OSwweGY2LDB4YWEsMHg1NiwweDBiLDB4MjksMHgwYiwweDI2LDB4YWMsMHhiNSwweDVhLDB4MDMsCi0gIDB4ZjgsMHgyZCwweGZkLDB4M2EsMHgyMywweGQzLDB4NmIsMHgxOSwweDY1LDB4MjMsMHhlNSwweGIzLDB4ZjYsMHgxNCwweDdkLDB4NDUsCi0gIDB4NGUsMHg5YiwweDJmLDB4MGIsMHg2ZiwweDU4LDB4MDksMHg2YiwweGE5LDB4MjksMHhkMiwweGE2LDB4OTksMHhiMCwweDMwLDB4YWIsCi0gIDB4OGQsMHgzOCwweGEwLDB4OTgsMHg5NSwweGYzLDB4NDEsMHhlYiwweDY2LDB4ODksMHg5MywweDIyLDB4M2YsMHg1ZiwweGI3LDB4OTAsCi0gIDB4MDYsMHgyNywweDgyLDB4NGUsMHhkYSwweGI4LDB4N2MsMHg5OCwweDcwLDB4ZjksMHhiMCwweGVhLDB4ZjgsMHhlMiwweDg1LDB4ZDgsCi0gIDB4YWEsMHgwYywweDFlLDB4OGUsMHg5MCwweDJiLDB4ZTgsMHg2NiwweDIwLDB4NjIsMHhhNCwweDU4LDB4MGUsMHg4ZiwweGZiLDB4NzQsCi0gIDB4YzgsMHgyMCwweDNlLDB4MTQsMHgwNiwweGE0LDB4ZmQsMHhjMSwweDk2LDB4ZjIsMHg2MiwweDBjLDB4YTcsMHhjMSwweDkzLDB4NjAsCi0gIDB4ZGEsMHhiMSwweDA5LDB4MmQsMHhhMiwweGE1LDB4MDAsMHhjZiwweGVlLDB4MzgsMHg0MiwweGM2LDB4MTYsMHg4NiwweDU3LDB4OGUsCi0gIDB4MTcsMHgyYywweDFmLDB4NjYsMHg4YywweGY4LDB4MTAsMHhiZCwweDBmLDB4MmIsMHg4ZSwweDU2LDB4YmUsMHg3YSwweDk3LDB4OTAsCi0gIDB4OGQsMHhiNCwweDllLDB4YTYsMHg4NSwweGM0LDB4ODcsMHgxMSwweGNiLDB4ZGYsMHg4NCwweGM3LDB4NDUsMHg1MywweDYzLDB4NWIsCi0gIDB4NjgsMHhiZSwweGNiLDB4ODcsMHg2NSwweDYzLDB4NDksMHhlYiwweGQxLDB4MjAsMHgyNCwweDhhLDB4MGMsMHg2NiwweDY5LDB4ZDEsCi0gIDB4YTksMHgzNiwweGU1LDB4ZmEsMHg0MywweDI2LDB4ODAsMHhmNSwweGQ5LDB4YjcsMHg0YiwweGRlLDB4MWYsMHhmMCwweGVkLDB4ODUsCi0gIDB4YTUsMHhkMCwweGQyLDB4MzUsMHgzNSwweDdjLDB4MjgsMHgwZiwweGVmLDB4NDAsMHgwYiwweGRmLDB4MzgsMHg1YywweGFhLDB4M2YsCi0gIDB4YzMsMHg0MSwweDYxLDB4N2MsMHg2MSwweGFiLDB4N2MsMHg0OSwweDhjLDB4NjcsMHhmMiwweGEzLDB4NmIsMHg4MSwweDVlLDB4YWYsCi0gIDB4NjMsMHgxMywweGM1LDB4YjUsMHg1YSwweDZkLDB4MzgsMHhlNSwweGJjLDB4NWUsMHgzNCwweGEyLDB4NWYsMHgwZiwweDBhLDB4NTMsCi0gIDB4OTAsMHhmYSwweGQzLDB4MWMsMHgzZSwweGQxLDB4NzUsMHhiOSwweGRhLDB4NDEsMHhmZiwweDViLDB4ZjAsMHgxMSwweGJkLDB4ZmIsCi0gIDB4NDEsMHhmNywweDMzLDB4YjgsMHg1MSwweDMyLDB4NjcsMHg0YiwweDQ2LDB4YWEsMHgzZiwweDhjLDB4NDEsMHgwNywweDhmLDB4ZTYsCi0gIDB4ZmMsMHhiYiwweGFkLDB4MmIsMHhiMCwweDkyLDB4NDcsMHhlOSwweDlmLDB4ZDYsMHg1ZiwweDI1LDB4YjAsMHhjYywweGY5LDB4NjMsCi0gIDB4NjQsMHhiOCwweDMwLDB4OTUsMHhmNywweDg3LDB4ZjMsMHg0YywweDhhLDB4NjEsMHgzNywweDZhLDB4ZjYsMHgwMCwweGQ1LDB4MDcsCi0gIDB4MzIsMHgxMSwweGEzLDB4ZGEsMHg2MCwweGU5LDB4MzAsMHhlNCwweGZhLDB4YzMsMHgyMSwweDg5LDB4NTUsMHhkYSwweDJkLDB4ZTEsCi0gIDB4NTgsMHhjYiwweGU5LDB4OGEsMHhiMCwweDdiLDB4ZDUsMHhkMCwweDMxLDB4YTIsMHg1NCwweDU2LDB4ZjYsMHgyNywweDliLDB4NzYsCi0gIDB4ZjksMHhkMCwweGRhLDB4YmIsMHg0NywweDE4LDB4MDksMHgwYiwweDg1LDB4NDksMHhjOSwweDdjLDB4ODgsMHhmNSwweDI3LDB4YmQsCi0gIDB4YmQsMHhiZiwweDJlLDB4OTgsMHg0OSwweDQxLDB4NmMsMHg3YiwweGNlLDB4ODgsMHgyMSwweDFmLDB4MWEsMHgzYywweDJkLDB4MGMsCi0gIDB4ZDYsMHgxZiwweDIwLDB4ZDMsMHg4NSwweDQ2LDB4Y2EsMHgxZiwweDRhLDB4NDAsMHhhYSwweDdjLDB4MDUsMHhhYSwweDdjLDB4ZmEsCi0gIDB4YTEsMHg0MCwweDQyLDB4Y2IsMHg2MiwweDhlLDB4NTMsMHg2ZSwweDYyLDB4ZTMsMHhlMCwweDFhLDB4OTAsMHg4NCwweDEwLDB4ODgsCi0gIDB4N2MsMHgwOCwweDJiLDB4ZjQsMHgxMiwweDE2LDB4ZDIsMHg0OCwweGQxLDB4ZTEsMHg0MywweDcwLDB4NDEsMHgxMSwweDM0LDB4YmQsCi0gIDB4YmMsMHg5ZSwweGNkLDB4ZmUsMHg2ZCwweDVkLDB4YzUsMHhhOSwweGM2LDB4ZDUsMHhiMCwweGQ5LDB4YjcsMHg4OCwweDVmLDB4OTksCi0gIDB4NmEsMHg2YywweDBmLDB4NmQsMHhmNiwweDZkLDB4NDMsMHhkMywweGQxLDB4MWUsMHg3NSwweDQ2LDB4M2EsMHhkYSwweDIzLDB4ZDIsCi0gIDB4N2EsMHhmMCwweGY5LDB4ZWUsMHhlYiwweGFhLDB4MWYsMHhlZSwweDZkLDB4MzIsMHgyZSwweDM1LDB4ZWYsMHhjMSwweGIzLDB4ZmYsCi0gIDB4ZTEsMHg4NCwweDcxLDB4MjksMHhlMCwweDYyLDB4YzAsMHg0NSwweDk3LDB4MDcsMHg2MiwweDUyLDB4N2YsMHgwYSwweDAyLDB4MGIsCi0gIDB4ODksMHgwZiwweDZiLDB4ZmEsMHhmYSwweDY0LDB4M2UsMHhmYywweGIwLDB4YzQsMHg4NywweDdiLDB4YWIsMHhmOSwweDUwLDB4ZDAsCi0gIDB4MTcsMHhmMSwweGUxLDB4ZmEsMHg4MywweDViLDB4NjUsMHgzZSwweGJjLDB4ZmQsMHg4MCwweGY4LDB4NTAsMHg2MCwweGUxLDB4NmYsCi0gIDB4YzMsMHg3MywweGIzLDB4OWQsMHg3ZiwweDM4LDB4YTAsMHhiOCwweGJmLDB4ZjksMHgwMywweGMyLDB4YzIsMHhlMSwweGI3LDB4NjcsCi0gIDB4OTcsMHhjZiwweGI5LDB4NDYsMHg5ZSwweDJmLDB4ZmUsMHhmYSwweGVmLDB4ZDMsMHgzOCwweGZmLDB4NGYsMHgwNywweDE0LDB4NjcsCi0gIDB4ZDcsMHgxZiwweDI0LDB4MmMsMHg5YywweGJlLDB4MzUsMHhiYiwweDdlLDB4Y2UsMHgzNSwweDU1LDB4ZjMsMHgxYiwweDVjLDB4M2UsCi0gIDB4NGMsMHgzNiwweDZjLDB4YjksMHgzNiwweGIyLDB4MTIsMHhmOSwweDMwLDB4NzksMHg2MCwweGNiLDB4MDUsMHg0MSwweDk4LDB4NDksCi0gIDB4ODEsMHg5YSwweGM1LDB4NWIsMHhmZiwweDYxLDB4ZmQsMHgyNiwweDI0LDB4MzQsMHg3YSwweDdiLDB4YWEsMHgwOSwweGE5LDB4YzgsCi0gIDB4ZmQsMHg0NywweDUxLDB4NTIsMHg1MiwweDUyLDB4NTIsMHg1MiwweDUyLDB4NTIsMHg1MiwweDUyLDB4NTIsMHhmYSwweGJmLDB4NGIsCi0gIDB4ZjQsMHgwZSwweDRjLDB4ZjUsMHgwZSwweDRhLDB4NGEsMHg0YSwweDRhLDB4NGEsMHg0YSwweDRhLDB4NGEsMHg0YSwweDRhLDB4NGEsCi0gIDB4NzcsMHg5NywweGU4LDB4MWQsMHg4MiwweGFhLDB4NzcsMHg1MCwweDUyLDB4NTIsMHg1MiwweDUyLDB4NTIsMHg1MiwweDUyLDB4NTIsCi0gIDB4NTIsMHg1MiwweGJhLDB4YmIsMHg0NCwweGVmLDB4MTAsMHgxMiwweGJkLDB4MDMsMHhmZSwweDE0LDB4NTgsMHhmYiwweGRjLDB4MmUsCi0gIDB4ZGUsMHhiOSwweGUxLDB4YjUsMHg1ZCwweDFlLDB4ZmQsMHhiNSwweGI2LDB4MGIsMHhiMCwweDgyLDB4MjcsMHhkMywweDEwLDB4YjMsCi0gIDB4YmQsMHg4OSwweGNmLDB4ZTYsMHhiZiwweGY0LDB4OGUsMHg1NSwweDUzLDB4ZjcsMHg0ZCwweGQ2LDB4OWIsMHhmMCwweGQwLDB4MzksCi0gIDB4NDksMHhlYiwweGU3LDB4ZDAsMHg2OSwweDdiLDB4MTMsMHg5ZiwweDI1LDB4NDYsMHg0ZiwweGRhLDB4Y2IsMHhhZSwweDljLDB4MzgsCi0gIDB4ZTYsMHg0ZCwweDc4LDB4MzAsMHgyNywweGNkLDB4OWIsMHgzYywweDM5LDB4NjgsMHg5YiwweGI2LDB4MzcsMHhmMSwweGEzLDB4NmIsCi0gIDB4ZjYsMHgxZiwweGIxLDB4ZWIsMHgzZiwweDdiLDB4N2UsMHhhYiwweDM3LDB4ZTEsMHg3MSwweGZmLDB4OWQsMHhmNSwweDdiLDB4YjUsCi0gIDB4ZmYsMHg5MSwweGQ2LDB4NzEsMHgwYiwweDllLDB4NTgsMHgzMiwweGUxLDB4ZGQsMHhmZSwweDJmLDB4YzAsMHhmYywweGQ5LDB4MGEsCi0gIDB4NWUsMHhlZCwweDdmLDB4NmQsMHhjYiwweGQ3LDB4MzMsMHhmMCwweGQwLDB4OGUsMHgyZiwweDM3LDB4N2EsMHgxMywweDFlLDB4ZjcsCi0gIDB4ZGYsMHg1OSwweGJmLDB4NjcsMHhmOSwweGZmLDB4NTgsMHhkZCwweDI3LDB4YmMsMHhlNiwweDk1LDB4ZDEsMHg3YiwweDdkLDB4ZTYsCi0gIDB4ZmYsMHg3ZSwweDY1LDB4NGUsMHg3NiwweDYyLDB4ZmUsMHgxYywweGY0LDB4MmUsMHhmZiwweDc1LDB4NmQsMHgzNSwweDJjLDB4MGYsCi0gIDB4M2YsMHhlYywweDVkLDB4ZmUsMHgzYiwweGViLDB4ZjcsMHg2YSwweGZmLDB4YTMsMHg4ZCwweGU5LDB4MWUsMHg1OCwweDc1LDB4YmIsCi0gIDB4YzUsMHhhYiwweGZjLDB4MzEsMHhlNywweDZjLDB4YWEsMHg5ZiwweGU2LDB4OGMsMHhlZCwweDRkLDB4N2MsMHgxNiwweDFhLDB4N2EsCi0gIDB4ZDMsMHg1ZSwweGZkLDB4YzUsMHhhOCwweDY3LDB4ZjUsMHhkZiwweDVkLDB4ZmYsMHhkZiwweGJmLDB4OTksMHhlMCwweGMxLDB4ODgsCi0gIDB4MjUsMHg0NywweGNmLDB4ZDgsMHhjOSwweDI1LDB4MjMsMHg5ZSwweGQ1LDB4OWYsMHhiOSwweDE5LDB4YWEsMHg5ZiwweDMzLDB4NWUsCi0gIDB4ZWQsMHhmZiwweDgyLDB4MGQsMHhiZiwweGRlLDB4YjIsMHgzYiwweDdlLDB4N2EsMHg2NiwweGQyLDB4OWIsMHhmMCwweGI4LDB4ZmYsCi0gIDB4Y2UsMHhmYSwweDNkLDB4ZGIsMHhmZiwweDBkLDB4YzcsMHhkZiwweGI3LDB4MWUsMHg1ZiwweDcyLDB4M2EsMHg3YywweGVmLDB4YTksCi0gIDB4ZjcsMHgyNSwweDczLDB4NmUsMHg5MiwweGVhLDB4YTcsMHg2NywweGY5LDB4MWYsMHg2YywweDM4LDB4ZjMsMHhiMiwweGQ1LDB4ZjIsCi0gIDB4ZWQsMHhjZiwweDY5LDB4NmYsMHhjMiwweGUzLDB4ZmUsMHgzYiwweGViLDB4ZjcsMHg2YywweGZmLDB4OTcsMHhlZiwweGY4LDB4MGEsCi0gIDB4MTIsMHg3NSwweGVmLDB4NzksMHg1NywweDdmLDB4ZTYsMHhhOCwweDdlLDB4N2EsMHg5NywweGZmLDB4Y2IsMHgwMiwweDhkLDB4N2MsCi0gIDB4YzMsMHhlOSwweGU4LDB4NjUsMHg2ZiwweGMyLDB4ZDMsMHg5NywweDljLDB4ODgsMHhmNSwweDdiLDB4YjMsMHhmZiwweGE2LDB4ZjgsCi0gIDB4NDYsMHg4YSwweDFiLDB4M2YsMHg5OCwweDYwLDB4ZDEsMHg2NywweDQ0LDB4ZmMsMHgyNiwweGYwLDB4N2YsMHg3ZCwweDNmLDB4YzEsCi0gIDB4N2QsMHg2YywweGMwLDB4ODQsMHgwOSwweDRkLDB4OGEsMHhiOSwweGZiLDB4Y2UsMHg3OSwweDdmLDB4MDEsMHhmNCwweGI3LDB4YzEsCi0gIDB4ZGUsMHhmMCwweDMzLDB4MDEsMHgwMCwKKyAgMHgxZiwweDhiLDB4MDgsMHgwOCwweDdhLDB4OGUsMHhjNiwweDQzLDB4MDAsMHgwMywweDY4LDB4NjgsMHgzNCwweDMwLDB4MzUsMHg1ZiwKKyAgMHgzMSwweDVmLDB4MzAsMHgzNiwweDJlLDB4NjIsMHg2OSwweDc0LDB4MDAsMHhlYywweGZkLDB4N2YsMHg3YywweDE0LDB4NTUsMHg5YSwKKyAgMHgyZiwweDhlLDB4M2YsMHg3NSwweGFhLDB4MTIsMHg0ZSwweGJhLDB4M2EsMHhlOSwweDIyLDB4MDksMHg0ZSwweDU0LDB4YzQsMHg0YSwKKyAgMHgyNywweDMwLDB4NGQsMHhlYywweDg0LDB4YTYsMHg4MywweDIxLDB4NDIsMHg0OCwweDJhLDB4OWQsMHhlOCwweDQ0LDB4NDAsMHhlOSwKKyAgMHg3MSwweGRjLDB4NTksMHg3NiwweGFlLDB4NzcsMHhiNiwweDY1LDB4OTgsMHhiZCwweDk5LDB4YjksMHhlOCwweDQ2LDB4YzcsMHhiYiwKKyAgMHg5NywweGYxLDB4Y2UsMHg4ZiwweDkzLDB4NGUsMHg4MCwweDRlLDB4ODIsMHhkMCwweDIwLDB4MzMsMHg0NiwweDg3LDB4NzEsMHg5YiwKKyAgMHgxMCwweDM1LDB4MmEsMHgzMywweGRiLDB4MDQsMHg5NCwweGYwLDB4NjMsMHhiMCwweDEyLDB4YTMsMHgzNiwweDEwLDB4MjAsMHgzMiwKKyAgMHhkYywweDE5LDB4NTQsMHg0NiwweDFiLDB4OGMsMHg0YywweGQ0LDB4ZTgsMHgwNCwweDQ0LDB4NGQsMHhmOCwweGY5LDB4N2QsMHg0ZSwKKyAgMHg3NSwweGE3LDB4YmIsMHgxYSwweDc3LDB4ZjcsMHhjZSwweGZkLDB4ZGMsMHhkNywweGY3LDB4ZjMsMHhkYSwweGQ3LDB4ZWIsMHg3MywKKyAgMHhiMywweDdmLDB4ZWMsMHg5OSwweGVhLDB4NDMsMHg1OSwweDc1LDB4ZWEsMHg5YywweGU3LDB4NzksMHgzZiwweGJmLDB4ZGUsMHgwZiwKKyAgMHg2NCwweGQ4LDB4NDYsMHg2MywweGZmLDB4MDcsMHgyMCwweGRjLDB4MGYsMHhiNiwweGZhLDB4ZmEsMHgzOSwweGFlLDB4NWIsMHhmZiwKKyAgMHg3ZSwweGY2LDB4ZGYsMHhiYiwweGNhLDB4NGEsMHgxZSwweGZjLDB4ZGUsMHg3MiwweDU4LDB4MDYsMHhiMiwweGZiLDB4NDcsMHhiNywKKyAgMHhiYSwweGJlLDB4ZmYsMHhjOCwweDQzLDB4YjMsMHhlNywweGNjLDB4ODEsMHhlZiwweGUxLDB4ZmYsMHg3MiwweGI5LDB4Y2EsMHg2NiwKKyAgMHhiOSwweDY2LDB4Y2YsMHg5YSwweGVkLDB4ODYsMHhlNSwweDkwLDB4MzEsMHhiYiwweDdjLDB4ZGUsMHhlYywweDM5LDB4ZjMsMHg0YSwKKyAgMHg2ZiwweDg1LDB4ZWYsMHg4MywweDUwLDB4ZGEsMHg3OSwweDE1LDB4ZmYsMHg1ZSwweDc4LDB4ZjIsMHg2ZiwweGZlLDB4YzEsMHgwNSwKKyAgMHg0YywweDAwLDB4ODAsMHg0OSwweDJlLDB4YzEsMHhjNywweGZmLDB4YmYsMHhlYywweDEyLDB4NTQsMHgwMSwweDU4LDB4NTUsMHhiMSwKKyAgMHgwYiwweDc0LDB4ZmUsMHhiZiwweDIxLDB4ZmUsMHg3YiwweDg2LDB4MGIsMHg1NCwweGYzLDB4ZmYsMHgxNiwweDVjLDB4YTAsMHg4MSwKKyAgMHgxNywweGI0LDB4YjUsMHg2YSwweDM2LDB4ZmMsMHgxNSwweDdmLDB4OTIsMHhjNCwweDI2LDB4ODYsMHg3ZiwweGQ1LDB4N2MsMHg0OCwKKyAgMHhjYywweGJmLDB4N2EsMHg5MCwweGZkLDB4OWIsMHg5MywweDkyLDB4N2YsMHg1NSwweGU3LDB4NDIsMHhmMSwweDkxLDB4NGEsMHg1YywKKyAgMHhmZiwweGViLDB4ZTksMHg0MiwweDJkLDB4NGMsMHhkYywweGY1LDB4YmQsMHhiNywweGZmLDB4OWEsMHhmYiwweGNmLDB4ZmYsMHg2MiwKKyAgMHhlMiwweGZlLDB4ZmYsMHhiYiwweGYzLDB4NDEsMHhmOSwweDJiLDB4YTYsMHhlMywweGZiLDB4NGUsMHgwYywweGRlLDB4NTMsMHgwNCwKKyAgMHgxZiwweGU0LDB4YzEsMHg3NSwweDkwLDB4YzYsMHg4MCwweDBmLDB4ZDIsMHg0MSwweGY4LDB4NTcsMHgwNiwweGYzLDB4ZmIsMHgyNywKKyAgMHhlNiwweGViLDB4OGQsMHhmYiwweGUwLDB4MDgsMHgyYiwweDU1LDB4YWQsMHgxMSwweGQxLDB4MGQsMHhlZiwweGU1LDB4NTcsMHg0NSwKKyAgMHg5NiwweDljLDB4Y2IsMHhkOSwweGQ3LDB4N2MsMHhmNSwweDdiLDB4NzMsMHgyMywweGI2LDB4NzMsMHg2MiwweDM5LDB4M2IsMHgwOSwKKyAgMHgzZiwweDFhLDB4YjUsMHg4ZSwweGU1LDB4OGMsMHg0YSwweDBkLDB4MTMsMHhmMywweGU5LDB4MDgsMHg2ZCwweDY1LDB4ZWUsMHg3YywKKyAgMHgxYSwweDkwLDB4ZWQsMHg3MCwweDQ4LDB4MjksMHgxOSwweDkyLDB4MWIsMHg0OSwweGQxLDB4ZDIsMHgzZCwweGQ5LDB4MjUsMHg0NywKKyAgMHg2YywweGZiLDB4NDgsMHg5NywweDE2LDB4OTAsMHhjYSwweDIyLDB4OTYsMHgxZSwweDMxLDB4MmMsMHg0ZCwweGFjLDB4NjIsMHg0NCwKKyAgMHg1YSwweGJiLDB4YTUsMHg1NSwweDk4LDB4YTEsMHg2NSwweDMwLDB4YmIsMHgwZiwweDFlLDB4MTcsMHg5YywweGRhLDB4OGQsMHgyZSwKKyAgMHhiMiwweDU2LDB4ZGEsMHhhMSwweDNhLDB4NDEsMHhjZSwweDI1LDB4NTQsMHhkOSwweDIwLDB4ODYsMHg3NCwweGVhLDB4MjIsMHhlNywKKyAgMHg4NCwweGM0LDB4ZmQsMHhhNSwweDZkLDB4ZTksMHhhZCwweGNjLDB4YWUsMHg2NSwweDA0LDB4NDgsMHgzZSwweDZiLDB4Y2IsMHgyYiwKKyAgMHhkMSwweDY0LDB4ZDYsMHhiYSwweDBkLDB4ZjYsMHg5MiwweDEyLDB4NjIsMHgwOSwweGY2LDB4NzUsMHg0MSwweDA2LDB4ZmIsMHgwNywKKyAgMHhkZCwweDEyLDB4ZjYsMHg4YywweDRhLDB4YmUsMHhmOCwweGZjLDB4ZWEsMHgyOSwweDJiLDB4MjAsMHhkMiwweDM4LDB4NjcsMHg0ZSwKKyAgMHg3MSwweGFiLDB4MjgsMHhjMiwweGRiLDB4NWEsMHhhNSwweGJlLDB4NjQsMHg4ZSwweGZjLDB4NWIsMHhlZCwweDYyLDB4YjAsMHg2NCwKKyAgMHhiMCwweDI2LDB4NWMsMHg5YSwweDA1LDB4ZGYsMHgwOSwweGQ5LDB4N2IsMHhhZCwweGUxLDB4ODIsMHg0MSwweDk4LDB4YjgsMHg3ZiwKKyAgMHg0OCwweGQ4LDB4MGMsMHg5NywweDY4LDB4MTUsMHhjYiwweGQyLDB4NzMsMHhiYSwweGUxLDB4OGEsMHg1MCwweGE1LDB4MmYsMHg4OSwKKyAgMHgzNiwweGQ1LDB4YzMsMHgwNSwweGE4LDB4ZDQsMHhkNywweDg3LDB4MGIsMHg0NiwweGQ4LDB4ODUsMHg4YywweGFhLDB4YjMsMHhiNiwKKyAgMHg1MSwweGIxLDB4MGIsMHgyNiwweGVlLDB4ZGYsMHhhZiwweDZjLDB4ODMsMHg3MSwweGJmLDB4ZGIsMHg2MywweDYzLDB4ZTIsMHgyOSwKKyAgMHgzOCwweGE4LDB4YjksMHhmNSwweDY5LDB4M2IsMHg3MywweGI2LDB4ZDEsMHg0MywweGUwLDB4ZGUsMHg2MCwweGRkLDB4MjksMHgzYSwKKyAgMHhlMSwweDEwLDB4MmIsMHhkMywweDk3LDB4ODQsMHg2YiwweDQ2LDB4NDEsMHg4ZCwweGNmLDB4M2YsMHg5MSwweDU2LDB4MjEsMHg2YywKKyAgMHhkNywweGVjLDB4NjMsMHg4YiwweDI0LDB4MzIsMHhjYywweDVhLDB4YzEsMHgxZCwweDk5LDB4ZGEsMHg0OSwweDljLDB4ZDAsMHgyNiwKKyAgMHhkOSwweDE5LDB4MmQsMHhjNywweGMxLDB4M2IsMHg3ZSwweGJiLDB4MmUsMHg4NywweGM5LDB4MTcsMHhiOCwweGZiLDB4MjcsMHhkZSwKKyAgMHg3NywweGIxLDB4YjUsMHg1YiwweGRiLDB4MTYsMHg5MiwweDY3LDB4YTQsMHhiZiwweGFhLDB4MzYsMHgwYSwweDg1LDB4YTEsMHgwYywKKyAgMHgxNywweDU5LDB4MGQsMHgxYiwweDI0LDB4OWYsMHg2ZSwweDcxLDB4MTAsMHgwMiwweGNmLDB4ZDcsMHhlMiwweDdjLDB4MTcsMHgxOSwKKyAgMHhjMywweGIzLDB4MTIsMHhmYiwweDFiLDB4ODUsMHhlZiwweGIyLDB4OTcsMHg1OSwweGYxLDB4MjksMHhkOSwweDk3LDB4N2UsMHg0YywKKyAgMHgxMiwweDk4LDB4MWEsMHhhNSwweDI3LDB4NDgsMHhiNiwweGJhLDB4NjksMHg2MywweDdlLDB4ZDQsMHg1MiwweDhmLDB4ODMsMHg1ZCwKKyAgMHg0MSwweDIxLDB4MmEsMHhhZiwweGQ0LDB4YWUsMHgyNCwweGVlLDB4NWYsMHgwNywweDhiLDB4YjUsMHg2ZSwweGE4LDB4NjAsMHhiNiwKKyAgMHg3YywweDUxLDB4ZWYsMHhlYiwweDg1LDB4MzksMHg4YSwweDFjLDB4MTYsMHg5YiwweGM5LDB4OWIsMHgxMCwweGQ2LDB4NGEsMHg5NCwKKyAgMHgzNiwweDIwLDB4ZWYsMHg4NywweDgyLDB4YmEsMHhjZCwweDI1LDB4MWUsMHgyMywweDEzLDB4ZmIsMHg0MSwweGJiLDB4NjksMHhkZiwKKyAgMHhkMCwweDE3LDB4NTAsMHhhYSwweGRiLDB4YjYsMHg4OCwweDgzLDB4ZGEsMHg2NSwweGU1LDB4OTUsMHhkYSwweDU5LDB4MWIsMHhjNCwKKyAgMHhmMywweGYwLDB4M2MsMHg1NCwweGQ1LDB4NjYsMHgwZSwweDBhLDB4ZTcsMHgxNiwweDFmLDB4ODIsMHhmOSwweGZkLDB4ZWIsMHhjMywKKyAgMHhlMiwweDYwLDB4ZmEsMHhjNCwweGZhLDB4NTAsMHg2OSwweDFiLDB4ZjQsMHg0MSwweGY3LDB4NTQsMHgxYiwweDJiLDB4NTAsMHhlMSwKKyAgMHgyMiwweDcxLDB4MzMsMHg2NywweDM4LDB4YzcsMHgwOSwweDE3LDB4YzEsMHhhZCwweDViLDB4NDMsMHhlMiwweGM4LDB4ZTQsMHhjZiwKKyAgMHgwNCwweDFjLDB4ODQsMHhjNSwweDhmLDB4OTQsMHg4OSwweGY1LDB4OGYsMHhlNCwweDZkLDB4NjYsMHhhYiwweGUxLDB4ZDYsMHg4MSwKKyAgMHgyYywweDhkLDB4MDQsMHg5NSwweDFkLDB4ZTksMHgyYSwweGZmLDB4ZmEsMHg3OSwweGIwLDB4MWYsMHgxYywweDNhLDB4ZjUsMHg5MSwKKyAgMHg5MywweGYwLDB4MTIsMHhiOSwweDU1LDB4YTcsMHgwZCwweGU0LDB4NWMsMHhlMiwweGZiLDB4YWEsMHgzMCwweDBkLDB4MWUsMHg2MywKKyAgMHhmOSwweDJlLDB4MzksMHg0MiwweDFlLDB4YTcsMHhjZiwweGIxLDB4ZmMsMHgxMCwweDVkLDB4NDksMHg5ZSwweDg2LDB4NTcsMHg1OCwKKyAgMHg3ZSwweDE0LDB4MDcsMHhlZiwweGMyLDB4ZWYsMHg5YSwweGJmLDB4N2UsMHg5YSwweGFlLDB4Y2MsMHg4ZSwweDI2LDB4ZDYsMHhiZiwKKyAgMHg1ZSwweDVhLDB4MGIsMHg0ZCwweDlhLDB4NTMsMHhiNywweGU0LDB4MmQsMHg0YiwweDYzLDB4M2IsMHg3NCwweDVjLDB4OWYsMHg3MiwKKyAgMHg5MiwweGE1LDB4ZWQsMHgwOCwweDNhLDB4ODYsMHhlOCwweDZkLDB4ZjAsMHhhOSwweGI2LDB4N2QsMHhlMywweDBjLDB4MWYsMHhmZSwKKyAgMHgxNywweDhmLDB4MjUsMHhmNiwweGU3LDB4ZjAsMHg5NCwweDdhLDB4ZmEsMHgzYSwweGI4LDB4OTksMHg2ZCwweDc5LDB4ZDMsMHgxZSwKKyAgMHhlYiwweDQ3LDB4MWQsMHhkZCwweDVkLDB4ZDYsMHgxNywweGU0LDB4MmUsMHhkYywweDBmLDB4NmUsMHhkNiwweDE1LDB4MTIsMHg4NywKKyAgMHhlMSwweDBhLDB4Y2MsMHg2MCwweGNlLDB4NTAsMHhjMSwweDg1LDB4YzQsMHhmMywweGQ0LDB4NTUsMHg4NywweGM4LDB4OTgsMHg1YSwKKyAgMHhhNiwweGQ4LDB4OTgsMHhmZiwweDE0LDB4OGMsMHg0MSwweDI1LDB4ZTAsMHhjNiwweDg4LDB4YzIsMHhhOCwweDUwLDB4ODEsMHg4MywKKyAgMHg5YywweDUxLDB4MzUsMHg3NiwweGE1LDB4ZTYsMHgxOCwweDRjLDB4ZGMsMHg5ZiwweDJhLDB4Y2YsMHgwNiwweDBlLDB4NDAsMHg5MSwKKyAgMHgzNiwweDI5LDB4OTgsMHhmMywweDBjLDB4NmMsMHhhNywweDJlLDB4Y2QsMHhhYSwweDg4LDB4ODUsMHgzMCwweDBlLDB4NmUsMHhjZCwKKyAgMHgxYSwweDE0LDB4ODcsMHhmMiwweDdhLDB4ODMsMHhjNiwweGEwLDB4MmYsMHhmMSwweDNjLDB4NGMsMHhmYSwweDA3LDB4NjgsMHhkMSwKKyAgMHg3ZSwweDc4LDB4NDIsMHhkZSwweDQ0LDB4OWUsMHg4MSwweGRkLDB4NjAsMHhkNywweGU4LDB4MjYsMHg5YywweGJmLDB4MWIsMHg4OCwKKyAgMHg0NiwweGRiLDB4ZWQsMHgxZiwweDQwLDB4OGIsMHg1ZSwweGE0LDB4ZDEsMHgyMCwweDg5LDB4MjYsMHhjNCwweDQyLDB4NzksMHg5YSwKKyAgMHgwNCwweDJkLDB4YWYsMHhlMywweDI2LDB4MDksMHg2YSwweGNiLDB4YTUsMHgyNywweGUxLDB4OTYsMHg1YSwweDNhLDB4ZTgsMHg5ZiwKKyAgMHhhMywweGZkLDB4MGUsMHg0NCwweDZkLDB4ZTYsMHgzMSwweDcyLDB4M2UsMHhkNCwweGEyLDB4ZDksMHhiNSwweGZhLDB4YTAsMHhmZCwKKyAgMHhmNSwweGM0LDB4N2UsMHg1MCwweDczLDB4MjUsMHhhZCwweDA1LDB4MWMsMHhkYSwweDhkLDB4MGEsMHhlOSwweDg3LDB4NWIsMHhiNSwKKyAgMHg3YywweDhkLDB4ZGUsMHg0YiwweDcyLDB4ZTEsMHgyNSwweDJkLDB4ZGYsMHg0YiwweGJkLDB4ZTQsMHg3ZiwweDQyLDB4YTMsMHhlNiwKKyAgMHhmMCwweDUyLDB4ODUsMHhmNCwweDRkLDB4OWUsMHhkOCwweDBmLDB4MmIsMHhhZCwweDQyLDB4NDcsMHg0NCwweGIwLDB4ODMsMHgyZCwKKyAgMHg1NCwweDMzLDB4MGMsMHg0YiwweGExLDB4MWIsMHg5YywweDRjLDB4NTYsMHhmMSwweGM1LDB4YmIsMHgyMSwweDkzLDB4ODksMHhhMywKKyAgMHgyNCwweDIyLDB4YjksMHhmMSwweDhhLDB4NzgsMHg0NCwweDljLDB4ZDgsMHg5ZiwweGVkLDB4NjksMHg0MywweGVjLDB4YTcsMHg1MCwKKyAgMHhhOSwweDJkLDB4NjksMHhjOCwweGQ5LDB4MDksMHhiYiwweDNkLDB4OTUsMHg1ZSwweGRiLDB4MjYsMHhmOSwweDE5LDB4MTgsMHhkNywKKyAgMHhmOCwweDQwLDB4ZmMsMHgwMCwweGFlLDB4ZDYsMHhmZSwweDRlLDB4YjMsMHgwNSwweGM1LDB4MzMsMHhlOSwweDEzLDB4ZmIsMHgyMSwKKyAgMHg2ZiwweGNhLDB4ZTcsMHhlYywweDI4LDB4YWUsMHg4NiwweDZkLDB4NTAsMHhjYywweDg1LDB4NzEsMHg1ZiwweGE5LDB4NjYsMHgxZCwKKyAgMHg2YywweGRhLDB4ZTksMHgzOCwweDMwLDB4N2IsMHhkZSwweDNkLDB4ZWIsMHg4ZiwweDg5LDB4NzMsMHhkOCwweDYxLDB4Y2QsMHg1ZCwKKyAgMHg2YiwweGY1LDB4OGEsMHhlOSwweDg5LDB4ZjMsMHg1YiwweGFlLDB4OWMsMHg2MiwweDAxLDB4YjAsMHg4MywweGNjLDB4ZWMsMHgyMSwKKyAgMHgyOSwweDkwLDB4NjYsMHg1NywweGE4LDB4YmYsMHg0OSwweDg1LDB4ODAsMHhkNiwweGQxLDB4ZWUsMHg1OCwweDY1LDB4NTEsMHgwMywKKyAgMHgwMSwweDRmLDB4OTksMHg0MCwweDk5LDB4NjUsMHg1ZCwweDYyLDB4M2QsMHhlYiwweDYwLDB4MTUsMHhiNCwweDA4LDB4MjEsMHg0ZCwKKyAgMHgwZSwweGE2LDB4MTcsMHhjMiwweDg2LDB4ZmIsMHg0MywweGRlLDB4M2MsMHg4NSwweDM0LDB4NGIsMHg4ZCwweDNlLDB4NDcsMHgxZCwKKyAgMHg1NSwweGIyLDB4ZDMsMHhkNCwweDM2LDB4OWYsMHhhZiwweGNlLDB4YTEsMHhjYywweGM4LDB4NGUsMHhjOCwweDlmLDB4NzYsMHhhOSwKKyAgMHgzMywweGFiLDB4NDUsMHhiMSwweDU3LDB4MmYsMHgwYSwweGUyLDB4ZmEsMHgzNywweGUyLDB4ZmEsMHgzYiwweDgyLDB4OTYsMHg0ZSwKKyAgMHhhMSwweDg1LDB4ZDgsMHgzNSwweDA4LDB4OTIsMHg0MiwweGM4LDB4NTAsMHgwYSwweGY5LDB4ZmEsMHhhZiwweDRlLDB4ZWMsMHg4NywKKyAgMHg1MCwweGRhLDB4MTAsMHgzZCwweDUwLDB4ZTcsMHhiZSwweDQ3LDB4ZGUsMHg2NCwweGZmLDB4YmEsMHg3NywweDFjLDB4YmEsMHhmMSwKKyAgMHhmYiwweGU2LDB4NzQsMHhmYSwweDBmLDB4ZTQsMHhjZiwweGYzLDB4OTEsMHg4ZCwweDYyLDB4MjEsMHgzOSwweGEwLDB4YmIsMHgzNSwKKyAgMHhhNywweDUyLDB4ZTMsMHg0OCwweGM4LDB4Y2YsMHg4OCwweGQwLDB4MDksMHhlMywweGFjLDB4OTIsMHgyZiwweGMyLDB4OTAsMHgzYSwKKyAgMHgwZSwweDk1LDB4Y2IsMHhlNSwweDYwLDB4OGQsMHg4NCwweGZiLDB4YTEsMHhlMiwweDA3LDB4ZDMsMHhiMiwweGM1LDB4N2UsMHg4YSwKKyAgMHgzZiwweGQ1LDB4ZTMsMHg0ZiwweDE3LDB4MTIsMHhmMiwweDg3LDB4NDIsMHgwOCwweDIyLDB4M2UsMHhiNywweDYyLDB4NmIsMHgyZSwKKyAgMHhiOCwweDFmLDB4NGUsMHg4MCwweDFiLDB4ZDYsMHhiMiwweGE2LDB4N2MsMHg4OCwweDY4LDB4NmUsMHhjOCwweDZjLDB4MTYsMHg1NSwKKyAgMHg3NSwweDhjLDB4Y2MsMHgwMywweDJiLDB4MTMsMHgyZCwweGQyLDB4YzQsMHhmZSwweDc3LDB4NGMsMHhlOSwweDgyLDB4ZDUsMHg1YSwKKyAgMHg0NywweGIwLDB4NmQsMHg4OCwweDVjLDB4ZWYsMHg2OCwweDI1LDB4NmEsMHgyMywweDFkLDB4ZjEsMHgzOCwweGEwLDB4NTUsMHgyYSwKKyAgMHg2MiwweDk2LDB4YWUsMHhlYywweDcyLDB4NzgsMHgxOSwweDA1LDB4NTEsMHgyMCwweDVhLDB4YjMsMHgzMCwweGIxLDB4MWYsMHgxYywKKyAgMHhkMiwweDgzLDB4MTAsMHg2NCwweDhlLDB4NjMsMHhmMiwweDNmLDB4N2IsMHg5NiwweGMwLDB4ZTMsMHg1MCwweDE4LDB4YmQsMHg3ZSwKKyAgMHgwZSwweDU5LDB4NDcsMHg3ZiwweDA1LDB4ODUsMHhiYSwweGE1LDB4OWMsMHg1OCwweGFhLDB4NTEsMHg1MCwweGViLDB4NTQsMHgyNSwKKyAgMHgwYiwweDEzLDB4ZjIsMHg4NywweDI5LDB4N2YsMHhhMiwweDRmLDB4NmIsMHgzMywweDc1LDB4NzksMHhkMCwweDUyLDB4MDEsMHg2YiwKKyAgMHhhMCwweGQwLDB4OWIsMHhmMSwweDA4LDB4ZDksMHhhYywweDNlLDB4ZTEsMHgyZSwweGQ2LDB4MmQsMHgwZCwweGZlLDB4M2MsMHg3OCwKKyAgMHg0NSwweDdjLDB4MjAsMHg0MiwweDdkLDB4MzAsMHgzYywweGIxLDB4N2QsMHgyMCwweDEwLDB4ZjgsMHgyNywweDcyLDB4OWMsMHhkZCwKKyAgMHg3NiwweGRhLDB4YjYsMHhiNCwweGU2LDB4YmIsMHhmMCwweGRlLDB4ZjAsMHgyZiwweGEyLDB4YzUsMHhlNSwweGYyLDB4M2EsMHhmMiwKKyAgMHg3YiwweGY2LDB4NWMsMHg2NCwweDRkLDB4YjksMHgzYywweDBkLDB4YWUsMHhiMiwweGFhLDB4MzEsMHg2NywweDNkLDB4ZmMsMHgzMCwKKyAgMHgyMSwweDdmLDB4NjgsMHhkYSwweDMzLDB4ZjgsMHhlZSwweDY1LDB4ZWQsMHgzNiwweGM1LDB4YjYsMHg0ZCwweGJhLDB4YTgsMHhjZCwKKyAgMHhkMywweGQ3LDB4ODUsMHhjNSwweDE1LDB4ZjAsMHgzMSwweGI4LDB4ZmIsMHgzMiwweGMzLDB4ZTIsMHgwOCwweGRkLDB4MGIsMHhlZSwKKyAgMHhjMSwweDI1LDB4MjEsMHhkMSwweDMzLDB4NjksMHhlMiwweDdkLDB4NDEsMHg3YSwweDRlLDB4M2IsMHhjOCwweGFhLDB4NDIsMHhiNiwKKyAgMHg4OCwweGZjLDB4MzYsMHhmZCwweDRiLDB4NzAsMHg3ZSwweDc0LDB4YzksMHhkOCwweDhkLDB4OTUsMHhkMiwweGQxLDB4YmUsMHhhYSwKKyAgMHhkMywweDRiLDB4N2EsMHhjNCwweDMyLDB4ZWQsMHhhNywweDZjLDB4YzcsMHhhOCwweGI1LDB4M2UsMHg4NywweGUzLDB4OGQsMHhkOCwKKyAgMHg1ZiwweDZiLDB4ZGUsMHgyZiwweDYxLDB4NzUsMHhiOCwweDU4LDB4OTcsMHhiZiwweDIzLDB4ZGUsMHhlNywweDU5LDB4ZTMsMHhjYSwKKyAgMHg4ZiwweGM4LDB4NjMsMHhlMiwweDY2LDB4ZWIsMHg5YSwweDUwLDB4ODEsMHg5ZSwweGYxLDB4MjgsMHhlNCwweGMyLDB4MGUsMHg5NiwKKyAgMHhhZiwweGQzLDB4MWYsMHgwYSwweDJmLDB4MjQsMHhkNiwweDEzLDB4ZTAsMHhlOSwweDYwLDB4YjMsMHg1YSwweGNjLDB4ZTQsMHg2ZiwKKyAgMHg5MiwweDdkLDB4ZjAsMHg5YywweDMwLDB4NTMsMHhiZiwweGYxLDB4MTEsMHhiMiwweDE4LDB4ZDYsMHhhOCwweGY4LDB4YmUsMHg2ZSwKKyAgMHhhMiwweDA4LDB4MmYsMHhjMSwweDc0LDB4OWQsMHgyZSwweDRiLDB4ZDcsMHgxMiwweGYyLDB4NDcsMHg5NSwweGQ2LDB4NGEsMHg4ZCwKKyAgMHhlMCwweGVjLDB4OTQsMHgxNSwweGZmLDB4NjEsMHhhZCwweDBkLDB4ZDQsMHgwOCwweDRhLDB4ZWYsMHhjNywweGEwLDB4YTksMHg5NiwKKyAgMHg3MiwweDQxLDB4MjcsMHhhYiwweDNiLDB4YTAsMHhiMCwweGRmLDB4YTEsMHg1YSwweDIyLDB4ZDIsMHhjNCwweGY5LDB4ZWQsMHg5YSwKKyAgMHgzMiwweDQyLDB4MGUsMHgzNiwweDU3LDB4OGUsMHhkYSwweDk0LDB4ODIsMHhkNSwweGYwLDB4MmYsMHgzMCwweDZmLDB4ZDAsMHhiNiwKKyAgMHg0ZiwweGJjLDB4MGIsMHg4ZSwweGRlLDB4ZmUsMHhmNywweGE4LDB4OGYsMHg2NCwweDA3LDB4ZGIsMHhjMSwweGU2LDB4NzIsMHg0MSwKKyAgMHhmYSwweGMzLDB4YzQsMHg3ZSwweDYzLDB4YzIsMHgzNiwweGU1LDB4ODIsMHg3NywweDlhLDB4YjYsMHg3ZSwweDkzLDB4YmMsMHgwMiwKKyAgMHhjNSwweDZjLDB4YTUsMHg4ZSwweGYzLDB4NDcsMHhlOCwweDQ1LDB4NjksMHg4NiwweDZlLDB4MGIsMHhhMywweGJjLDB4YmEsMHhkOCwKKyAgMHgzOCwweDRmLDB4YjcsMHg4NSwweGM0LDB4NTAsMHg0MiwweGZlLDB4ZTQsMHgyYiwweDNiLDB4ZTEsMHgxMiwweGVjLDB4M2QsMHg2ZCwKKyAgMHg3YiwweGIzLDB4ZTAsMHgyNywweGVhLDB4MjEsMHhkOCwweDExLDB4OTEsMHg0NywweGM1LDB4OWYsMHg4NCwweGQ2LDB4ZDAsMHhiOSwKKyAgMHhiZCwweGQ2LDB4NzMsMHhlMiwweDE1LDB4ZjgsMHgyOSwweDk0LDB4ZjYsMHg2NiwweDQ1LDB4NDUsMHhiZCwweDc2LDB4NjIsMHhmZSwKKyAgMHgxNiwweDY5LDB4YjksMHgxMiwweGQ2LDB4ZjEsMHg3YywweDNkLDB4NDUsMHhmZSwweDI1LDB4NzAsMHgwOCwweGVjLDB4YTcsMHg2YywKKyAgMHhhOCwweGI2LDB4NTAsMHg1MywweGQ4LDB4ZjUsMHhjYywweDFlLDB4NzIsMHg0NiwweGRhLDB4M2QsMHg1MCwweGE0LDB4ZDMsMHgxMCwKKyAgMHg4OSwweDJhLDB4NGEsMHhlMiwweDc5LDB4MGEsMHg2MSwweDRmLDB4YzAsMHgxZSwweGI4LDB4MzEsMHg3YywweDVkLDB4MDksMHhmMCwKKyAgMHg2OSwweDhiLDB4MzYsMHg5MywweDZkLDB4ZjAsMHgyMiwweGE4LDB4N2EsMHg0NiwweGQ4LDB4M2UsMHhjNCwweDc2LDB4MzcsMHgzYSwKKyAgMHg3YSwweDJkLDB4MjEsMHgzNSwweDlhLDB4ZDgsMHg2ZiwweDU0LDB4OTIsMHhlOCwweDFlLDB4YjUsMHg1ZSwweGJiLDB4MzEsMHg0YywKKyAgMHhkNiwweDkyLDB4YzcsMHg3MSwweGRhLDB4OGQsMHhjNCwweGIyLDB4MTYsMHhiNiwweDQyLDB4NDgsMHhiZiwweGQzLDB4OGQsMHgxMiwKKyAgMHg2OSwweGFmLDB4YWYsMHg1ZSwweGFmLDB4NTMsMHhiNSwweDNlLDB4MjEsMHhiMSwweGZjLDB4ZDYsMHhhOSwweDUyLDB4OGYsMHgxZCwKKyAgMHhlNSwweDczLDB4NTgsMHg3NCwweGQyLDB4ZjUsMHg4MiwweGJiLDB4ZDcsMHhiNiwweGIxLDB4YWQsMHg5MywweGZjLDB4MTksMHgzNSwKKyAgMHg5NCwweDE0LDB4NDYsMHhjMSwweDNiLDB4NWUsMHg3NywweDliLDB4OWUsMHgxNSwweDIyLDB4N2EsMHg0MiwweGZlLDB4M2MsMHg3YiwKKyAgMHhkMywweDI1LDB4ZWQsMHg5MiwweDMyLDB4MTcsMHg2YywweGIzLDB4NzMsMHgyZSwweGMxLDB4NWYsMHhhMCwweDRhLDB4Y2YsMHgwYSwKKyAgMHg4YSwweDNmLDB4ODEsMHg3NywweGI0LDB4ZjksMHhiYSwweGVkLDB4YjgsMHgzOCwweDhhLDB4NjIsMHhhNCwweDBhLDB4NTUsMHhkYiwKKyAgMHhkNywweGVhLDB4MTMsMHhmMiwweDQ3LDB4OWYsMHg3MiwweDQ5LDB4YmYsMHg0MiwweDRiLDB4MDcsMHg2YywweGRiLDB4YzUsMHg0YiwKKyAgMHg3ZSwweDA0LDB4NDIsMHg1MSwweGRiLDB4NTgsMHhjMSwweDE1LDB4YjgsMHhhYSwweGUyLDB4YTAsMHg0YiwweGZjLDB4YWUsMHg3NywKKyAgMHg0MCwweGQ5LDB4YTUsMHg1YiwweGU3LDB4N2MsMHhhZiwweDIxLDB4YjEsMHg3ZiwweDU4LDB4ZGUsMHgyNywweGYwLDB4OTEsMHg2NiwKKyAgMHgzZiwweDJjLDB4N2YsMHg0MSwweGFlLDB4NjgsMHhhZCwweDYwLDB4OGYsMHhjYSwweDNkLDB4ZTQsMHg1MywweDc4LDB4MjUsMHg1OCwKKyAgMHgxNCwweDk1LDB4NDMsMHg3ZSwweDI3LDB4OGIsMHhhOCwweGY2LDB4NjgsMHg2NiwweDMwLDB4NWIsMHg0ZCwweGNhLDB4ZmYsMHhiNCwKKyAgMHhjMywweDI4LDB4MmIsMHg1NSwweDVkLDB4OWUsMHg2ZCwweDFmLDB4MDAsMHgzZiwweDFmLDB4YjgsMHhjOCwweDAwLDB4ZWMsMHg0MCwKKyAgMHg3ZCwweDI3LDB4ZGIsMHhjOSwweDYyLDB4ZjYsMHg5NCwweDVhLDB4YTIsMHhkNywweGQ5LDB4MDksMHg0OSwweGRjLDB4NWYsMHg0ZiwKKyAgMHhkYiwweDQ2LDB4NWYsMHhjMCwweDY1LDB4NmMsMHgwYiwweDkzLDB4MTEsMHhmMCwweDA3LDB4MGMsMHhiNCwweDMwLDB4MDIsMHg3YiwKKyAgMHhhMSwweDQ4LDB4OTcsMHgxZCwweGFiLDB4OGIsMHhhMSwweDlkLDB4YmQsMHgxMCwweGJhLDB4OTMsMHg1OSwweDVjLDB4ODksMHhmZCwKKyAgMHgwMCwweGI5LDB4ZGIsMHhlMCwweDVjLDB4NWUsMHgzNywweGZmLDB4ZmEsMHgyMywweDg4LDB4NGYsMHhlMiwweDgzLDB4OGIsMHg4MCwKKyAgMHhkYiwweDYwLDB4OWIsMHhmOCwweDVmLDB4NzMsMHgyMywweGFjLDB4ZDIsMHg2NSwweGRkLDB4ZDksMHhhNCwweDI0LDB4ZTQsMHhjZiwKKyAgMHgyOSwweGM0LDB4N2IsMHg1NywweDQ4LDB4YTUsMHg3ZSwweGYzLDB4NjgsMHhjMSwweDI1LDB4ZDQsMHg2ZSwweDU1LDB4ZmEsMHhmYSwKKyAgMHg1MSwweGYxLDB4OTIsMHg3MiwweDk1LDB4MmYsMHg0YiwweDU0LDB4YmUsMHhlMCwweGZkLDB4OTgsMHhlMiwweGQyLDB4MGQsMHg4OSwKKyAgMHg2MywweDA5LDB4ZjksMHhhMywweDIzLDB4ZmUsMHhiOSwweDQwLDB4ZjcsMHhhMCwweDEyLDB4OTcsMHg5ZCwweDcwLDB4MTAsMHhkNSwKKyAgMHhiYSwweDcxLDB4ZmYsMHhjZiwweGY4LDB4YzYsMHhlYiwweDE0LDB4ZGYsMHg4NywweGI3LDB4MDEsMHhlNSwweGNmLDB4NDYsMHhkMSwKKyAgMHg5NSwweDM4LDB4MmYsMHgwNywweGQzLDB4MmEsMHg2MCwweDBmLDB4MTQsMHhmNCwweGQyLDB4NTEsMHgzMiwweDE1LDB4ZjgsMHg4YiwKKyAgMHgxOCwweGNmLDB4ZmYsMHgwYSwweDk0LDB4ZTgsMHhmMiwweDhiLDB4NjQsMHgwYiwweDM0LDB4ZjksMHgxMCwweDQxLDB4ZmEsMHg2YiwKKyAgMHgxZSwweDRlLDB4ZWMsMHg4NywweGQzLDB4NjksMHg4YiwweDcxLDB4N2QsMHhiYSwweDc0LDB4ODQsMHgzZCwweDU2LDB4NWMsMHg5ZiwKKyAgMHhkMCwweGM0LDB4ZmEsMHgzOCwweDc1LDB4MTksMHgyYywweDVkLDB4NjksMHg0MSwweGRkLDB4ZDEsMHg0OSwweGMzLDB4OWUsMHhmMiwKKyAgMHg4NCwweGZjLDB4ZjEsMHgwOSwweGQzLDB4NjAsMHg3ZiwweDI4LDB4N2YsMHgyNCwweDYzLDB4MjUsMHhiMSwweGVhLDB4Y2YsMHhiMiwKKyAgMHhmYywweDYxLDB4OTksMHhjMywweDgwLDB4NWQsMHhhYywweDM4LDB4MmEsMHhkNywweDU5LDB4ZjYsMHg2YSwweGNkLDB4YWMsMHgyMCwKKyAgMHg0YSwweDdmLDB4NjgsMHg1ZiwweDlhLDB4YzQsMHgzZiwweGQ0LDB4YWEsMHg5ZCwweDBiLDB4OTUsMHgwZiwweDY3LDB4ZWUsMHgxMSwKKyAgMHhiMywweGYwLDB4ZjksMHg1ZCwweDUxLDB4NDQsMHgzYiwweDAzLDB4ZjgsMHhmYywweDc4LDB4ZmYsMHgyZSwweDMxLDB4YTAsMHgwZCwKKyAgMHg0MiwweDM5LDB4YjMsMHhkZSwweDIwLDB4MjcsMHg4ZCwweDBhLDB4YzQsMHgzZiwweGVhLDB4NzksMHhhOCwweGVhLDB4NWYsMHg3NywKKyAgMHg0ZSwweGJjLDB4M2MsMHg5YiwweGFmLDB4Y2YsMHgyNCwweDVjLDB4MWYsMHhlZCwweDJhLDB4YzUsMHhmNSwweDc5LDB4N2YsMHg1MSwKKyAgMHg4ZiwweDM2LDB4MDYsMHgwYiwweGQ4LDB4MmMsMHg1ZCwweDBjLDB4MjYsMHhmMCwweDRmLDB4NTcsMHhkYSwweDI1LDB4OGUsMHgxNiwKKyAgMHhmYSwweGFkLDB4MmYsMHhiNywweDM5LDB4ZDksMHg4NSwweDg5LDB4ZjUsMHhiOSwweGU4LDB4YzAsMHhmNSwweDYxLDB4YTIsMHg0MywKKyAgMHg0MiwweDY4LDB4YzQsMHhmMSwweDRmLDB4NTEsMHg0MiwweDdmLDB4NDUsMHgyNiwweDZmLDB4NDYsMHhiNCwweDkzLDB4M2YsMHg0YywKKyAgMHgxZiwweDIxLDB4NTMsMHhkOSwweGNiLDB4MzAsMHg1MywweGNmLDB4NmEsMHg0MCwweGQ4LDB4YjMsMHgwYiwweGU1LDB4ODksMHhhYywKKyAgMHg4OSwweDJiLDB4ZTEsMHg4ZiwweGIwLDB4ODUsMHg2NSwweDQ2LDB4ODksMHgzYiwweGYxLDB4N2QsMHg3NSwweDc4LDB4OWEsMHhlZCwKKyAgMHg2MiwweGQxLDB4MjgsMHg3ZCwweGQ0LDB4MzMsMHgyZCwweGMwLDB4NjEsMHg0ZiwweGYyLDB4N2QsMHhlYiwweDJkLDB4MzcsMHhjMCwKKyAgMHhiYSwweDgwLDB4N2EsMHg5YSwweDJlLDB4NDUsMHg5YiwweDY1LDB4NjIsMHhmZCwweGViLDB4NzIsMHg0NywweDcwLDB4M2QsMHg3ZCwKKyAgMHgzYSwweDBkLDB4NWYsMHg2NywweDg1LDB4ZWQsMHhiOCwweGNkLDB4MmMsMHg4OSwweGY1LDB4NzQsMHhmOSwweGViLDB4YjQsMHg1ZiwKKyAgMHgxZCwweDUwLDB4MDcsMHgzMywweGFjLDB4YWQsMHhkOSwweDI2LDB4ZmMsMHgzMywweDBjLDB4MmYsMHhiYiwweGJhLDB4OTksMHgzNSwKKyAgMHg2NCwweDcxLDB4YzAsMHgxNSwweDBkLDB4MGYsMHgxYSwweDg3LDB4M2QsMHg4OCwweDg3LDB4OTksMHg2ZCwweDQ4LDB4OWUsMHg5ZiwKKyAgMHg3ZCwweDQ0LDB4OWYsMHgxZCwweGIyLDB4N2UsMHg0YSwweGU2LDB4MjUsMHhmMSwweDBmLDB4ZWEsMHgyMywweDBlLDB4NzIsMHg2NiwKKyAgMHhiMSwweDQ5LDB4NTEsMHgxOCwweGIzLDB4NTQsMHg0MiwweDk2LDB4MzEsMHgxMCwweDM4LDB4ZWMsMHg5MSwweDRmLDB4YTksMHg2MywKKyAgMHhkYSwweDdlLDB4ODIsMHgyZiwweDZlLDB4YzYsMHgzZiwweDQzLDB4NzAsMHgwMCwweDJhLDB4MzgsMHhjOCwweDkxLDB4YzgsMHgwMSwKKyAgMHhhZSwweGU4LDB4NTEsMHhmMSwweGMxLDB4NWIsMHg4OCwweDEwLDB4NmMsMHhlZCwweDA4LDB4NmMsMHgzZSwweGQ0LDB4YmYsMHhkMCwKKyAgMHhhYywweDkzLDB4NDUsMHg5MiwweDc4LDB4OWUsMHg5MCwweGI0LDB4MWMsMHg0MSwweDBlLDB4YzIsMHg5ZSwweGEwLDB4YTUsMHg5MCwKKyAgMHg3MiwweGZkLDB4MmIsMHgwNywweGM5LDB4MTAsMHhlMiwweDFmLDB4MzQsMHgwNCwweDE0LDB4MzIsMHg4OSwweDE5LDB4M2YsMHg2ZCwKKyAgMHgxMiwweDdkLDB4MjYsMHhmYywweDUzLDB4MDgsMHgyZCwweGY3LDB4OTYsMHhlMCwweDdjLDB4NGYsMHgyMSwweDNjLDB4MjksMHhmMCwKKyAgMHhmOSwweGY2LDB4Y2UsMHhkOCwweGZjLDB4MGQsMHg5NiwweDQyLDB4ZWQsMHg3OSwweGNkLDB4YWUsMHgzYiwweDgyLDB4ZmUsMHg3NCwKKyAgMHg5MywweGZjLDB4NDEsMHgzYywweGMwLDB4NDEsMHg0ZSwweDJlLDB4OTEsMHhlMCwweDdhLDB4NGQsMHhkNSwweDMyLDB4MzgsMHgxMCwKKyAgMHhkYSwweDBlLDB4NGUsMHgwZCwweDExLDB4ZDcsMHg3NCwweGM0LDB4M2YsMHg3OCwweGZmLDB4NWMsMHhlMiwweDQ5LDB4YzgsMHg5ZiwKKyAgMHg3NiwweGFhLDB4NDIsMHgwNCwweGRmLDB4ZDcsMHgwYSwweDM1LDB4MmEsMHhlYSwweGRmLDB4ZWUsMHgxOCwweGRlLDB4M2IsMHgwMSwKKyAgMHgyNSwweDYwLDB4MDMsMHg1MSwweDQ1LDB4NDUsMHg1NywweDI2LDB4MmMsMHg2NiwweDYyLDB4NDksMHgxMiwweGZmLDB4ZGMsMHhmNCwKKyAgMHhjMSwweGE0LDB4Y2IsMHg1YSwweDk5LDB4ZjcsMHgzOSwweDhlLDB4NzYsMHgzZSwweGUwLDB4YWYsMHgxOSwweDJjLDB4MTgsMHhlMiwKKyAgMHhmOCwweDg3LDB4MjMsMHg5YywweGYzLDB4NzAsMHg1OSwweGFiLDB4ZjIsMHhjZSwweDNhLDB4M2UsMHgyOSwweDg5LDB4N2YsMHgzOCwKKyAgMHg1ZSwweGZhLDB4ZGMsMHhlMSwweDVlLDB4NmMsMHgwZCwweGU2LDB4Y2MsMHhhMSwweDE3LDB4YjUsMHhmOCwweGZhLDB4OGMsMHhkMywKKyAgMHg5ZiwweDY5LDB4YjYsMHgzNywweDI3LDB4Y2QsMHg4MSwweDRmLDB4MWMsMHhiYiwweGVhLDB4YWMsMHhjNywweDllLDB4OTgsMHg5MSwKKyAgMHgzOCwweGJmLDB4NzksMHg0YSwweDM0LDB4MTQsMHgyOSwweGVjLDB4YjAsMHg1MiwweGE5LDB4ZWQsMHg3ZSwweDNjLDB4NjgsMHgxZCwKKyAgMHgwOCwweDg0LDB4NTAsMHgxYSwweGY3LDB4ZTAsMHgxMywweGNhLDB4NGMsMHhmMCwweDg1LDB4MDIsMHhhYSwweDViLDB4YjIsMHgzZSwKKyAgMHg0YiwweGIyLDB4ZDIsMHgxMywweDU2LDB4NmMsMHg1YSwweDdmLDB4NjQsMHg4YiwweDIzLDB4NWEsMHg2NywweGM5LDB4MjksMHg0YSwKKyAgMHg4MywweGRkLDB4YWEsMHhhYSwweDU5LDB4MTIsMHhlZiwweDhiLDB4NzgsMHg4NiwweDNkLDB4ZWYsMHg5OCwweGExLDB4NTEsMHhjNSwKKyAgMHg0ZiwweDg0LDB4ODksMHhlNywweGNmLDB4OWIsMHhkMiwweDA5LDB4NmQsMHg5NCwweGFmLDB4M2YsMHg1OSwweDZlLDB4ZTAsMHhjZiwKKyAgMHhmOCwweGZhLDB4MTcsMHhmMSwweGMxLDB4NzIsMHg2OCwweDUzLDB4ZWQsMHhiNSwweDc1LDB4NDEsMHhjZiwweDFkLDB4MDksMHhmOSwKKyAgMHhkMCwweGExLDB4NzQsMHgwYSwweDFmLDB4MjIsMHg4OCwweDc1LDB4MDYsMHg1MSwweDExLDB4NmMsMHhkNywweDg5LDB4OTYsMHg2NSwKKyAgMHgzYywweDNmLDB4YWUsMHhiZiwweGVkLDB4MjksMHg1YywweGUxLDB4ZTcsMHhhMSwweGNjLDB4ZTMsMHhmYywweDc1LDB4ODYsMHgyMywKKyAgMHgyMSwweDFmLDB4MDIsMHhkMCwweDA5LDB4YTcsMHhkOCwweDNlLDB4YzQsMHhjMywweDIyLDB4MDIsMHgyMSwweGI1LDB4MzIsMHhmZSwKKyAgMHhiZSwweDdjLDB4YTEsMHgzNiwweDM1LDB4ZmQsMHgxOSwweGM2LDB4MDMsMHhmMywweGVlLDB4Y2YsMHgwYSwweDM2LDB4YmQsMHg5MCwKKyAgMHhkOCwweGNmLDB4NDUsMHg0YSwweDg4LDB4OGUsMHhlOSwweDZlLDB4YmUsMHhjZCwweDcwLDB4ZTMsMHg2OSwweGYxLDB4ZjUsMHhlNywKKyAgMHgzYiwweGYwLDB4ZWUsMHg2NiwweGQxLDB4ZDcsMHgzYywweDBjLDB4NmUsMHhjNSwweGNhLDB4NzIsMHgwZSwweDI2LDB4ZjEsMHg0ZiwKKyAgMHhhZCwweDAzLDB4M2UsMHgwZCwweGQ4LDB4NTksMHg1ZCwweDQ4LDB4YWMsMHhjNywweGY1LDB4YjEsMHgzMywweDM5LDB4NDQsMHg4NiwKKyAgMHg3MSwweGYwLDB4MzMsMHgyNiwweGFmLDB4ZjAsMHhmNCwweGMwLDB4ZWEsMHg1YSwweDk1LDB4NTksMHg4NiwweGM0LDB4ODMsMHg4OSwKKyAgMHhmMywweGVlLDB4NDgsMHg1YiwweDIxLDB4ZWMsMHhlMCwweDY4LDB4MDcsMHhmNSwweDkxLDB4NjIsMHg4OCwweDY1LDB4ZTMsMHhiYywKKyAgMHg4OCwweDRlLDB4N2UsMHg3MCwweGVlLDB4ZDIsMHhiNiwweGIyLDB4NjgsMHgzZiwweGRkLDB4NzcsMHhjZiwweGMxLDB4ODQsMHhmYywKKyAgMHhjOSwweDE3LDB4YTYsMHgwYSwweDJmLDB4OTMsMHhlOSwweDExLDB4MzQsMHg1MiwweDM2LDB4ZTMsMHhiMSwweDQ1LDB4M2MsMHg2MCwKKyAgMHg5YywweDVmLDB4M2MsMHhjOCwweDcyLDB4ODMsMHg3ZiwweDEzLDB4YWMsMHhkMSwweDBhLDB4YjQsMHhhNywweDFhLDB4ZmMsMHg5MSwKKyAgMHgyNCwweGJlLDB4YTIsMHgzNywweDA3LDB4YmUsMHg2NCwweGJiLDB4M2UsMHhjYywweGZhLDB4MTksMHg5YSwweDJkLDB4NTcsMHhkZiwKKyAgMHhiYywweDJkLDB4YmEsMHg3ZSwweGE1LDB4ZjgsMHgyZSwweDdjLDB4ODksMHhlNywweDM3LDB4NmIsMHg0YywweDdjLDB4OTQsMHhmYywKKyAgMHg4NSwweGNkLDB4OGUsMHgzYSwweGViLDB4YzUsMHg4MywweDQ5LDB4ZmMsMHg3MywweGU3LDB4NmYsMHhlMSwweDIzLDB4OTgsMHhkNywKKyAgMHg2ZiwweGViLDB4N2UsMHgxNSwweGY1LDB4YmIsMHg1NiwweDY2LDB4YzgsMHgxMywweDZhLDB4MjgsMHhmYSwweGIwLDB4MzgsMHg0NCwKKyAgMHgyZSwweGUwLDB4NTEsMHhjMiwweDEzLDB4ZWEsMHg0ZiwweGM4LDB4MWYsMHg2ZCwweGNhLDB4MTUsMHhmOCwweDA0LDB4ZDUsMHg5NiwKKyAgMHg3NSwweDRjLDB4YWMsMHg2MCwweDU3LDB4NzEsMHg5MCwweDM5LDB4ODYsMHg2YSwweGZkLDB4YTIsMHhhMSwweGM4LDB4YzQsMHhmZCwKKyAgMHg3MCwweGI0LDB4NzEsMHg3NiwweGQ0LDB4ZGEsMHg4MywweDVmLDB4NzcsMHg2MiwweGZmLDB4NzQsMHhhMSwweGZjLDB4NjEsMHg3OSwKKyAgMHhhYSwweGVlLDB4NjgsMHg1OCwweDY4LDB4YzUsMHhjNywweDU2LDB4ODcsMHg2NSwweDdjLDB4N2UsMHhiYSwweDhiLDB4ZGQsMHhhYSwKKyAgMHhjYiwweGZhLDB4ZTQsMHg0NywweDFhLDB4ZGYsMHhhMywweGI3LDB4ZDYsMHg2NSwweGQ2LDB4ZGYsMHhmMiwweDQyLDB4ZTIsMHhmYiwKKyAgMHgwNiwweDYxLDB4MzMsMHgzYywweDA3LDB4ZjksMHhmZCwweDI4LDB4OWYsMHhhNywweDZhLDB4YmIsMHgwMCwweGYxLDB4NTIsMHhlYywKKyAgMHg3ZCwweGYzLDB4ZjEsMHg3ZCwweGM5LDB4MjYsMHhiYSwweDA5LDB4ZjEsMHhjZiwweGY1LDB4MmUsMHg3YiwweDMzLDB4OWIsMHg1OCwKKyAgMHg3ZiwweDlmLDB4MzQsMHgwMCwweGFkLDB4YjUsMHg0NSwweDMxLDB4NzksMHhiZSwweDIzLDB4OTgsMHhkMCwweDc3LDB4ODUsMHhmYSwKKyAgMHhhMiwweDE5LDB4NDQsMHhhNSwweDdlLDB4YWQsMHhkMCwweDc3LDB4N2QsMHgyMSwweDY5LDB4NGYsMHg5YywweDc3LDB4NDcsMHhkYSwKKyAgMHgzZSwweGY4LDB4YTgsMHhiZiwweDU0LDB4Y2YsMHgxYywweDQ1LDB4ZWIsMHg3OCwweDJlLDB4NzQsMHg0YywweGU4LDB4MmYsMHgyZSwKKyAgMHg0OCwweDQ5LDB4MTcsMHhkOSwweGU4LDB4OWQsMHg3MywweDM2LDB4YjMsMHg2NywweDkyLDB4NDUsMHg0YSwweDNlLDB4Y2YsMHgwOCwKKyAgMHg1YywweGMwLDB4NjUsMHhjOSwweDBhLDB4ZTcsMHg4YywweGM0LDB4ZjAsMHg0ZiwweDU4LDB4NDgsMHhhZSwweDhmLDB4ODQsMHg4MywKKyAgMHhkNywweDhmLDB4MzYsMHhlMSwweDU2LDB4OWMsMHhiOCwweGZmLDB4MDYsMHhiNiwweDgyLDB4NWUsMHhhNCwweGRkLDB4NjgsMHg1NCwKKyAgMHg3YSwweDJhLDB4NTAsMHgwZCwweGExLDB4NjEsMHg4YiwweGYyLDB4MWMsMHhmZiwweGUxLDB4Y2QsMHhiYSwweGVkLDB4YmMsMHg1YywKKyAgMHg5ZSwweGY2LDB4MjksMHhkYSwweGIzLDB4NzQsMHg1NCwweDhjLDB4ZDYsMHg0ZSwweGM4LDB4OTMsMHhkZSwweGRjLDB4MTUsMHg3YywKKyAgMHhkYiwweGU4LDB4OGUsMHgzMCwweGMyLDB4OTgsMHhiZCwweDkwLDB4ZDAsMHhiZiwweDBmLDB4ZWEsMHg3MiwweDhmLDB4ZmQsMHgzOSwKKyAgMHhiNSwweDk1LDB4YmQsMHhhMCwweDc3LDB4YjEsMHg4MiwweDIxLDB4MmQsMHg4MSwweDdmLDB4ZDIsMHg5YywweGZjLDB4OTgsMHhmNCwKKyAgMHhkZSwweDcwLDB4Y2QsMHg3YywweGQ0LDB4NzcsMHgwYSwweGY5LDB4MDcsMHg2MSwweDZmLDB4ZTMsMHgwYiwweGRhLDB4MGQsMHhkYiwKKyAgMHg1NywweDQ3LDB4MTMsMHhmYiwweDg3LDB4NGEsMHg1NiwweDA4LDB4MjMsMHgwYywweGIwLDB4NzAsMHg1OCwweGI4LDB4MTcsMHg0MiwKKyAgMHg2ZiwweGM1LDB4ZDYsMHgwNywweDYxLDB4YjYsMHgyYywweDEwLDB4MjYsMHhiNSwweGUwLDB4NDEsMHhiMywweGE4LDB4YTQsMHgyZiwKKyAgMHg2ZCwweDYyLDB4M2YsMHhiMCwweDBjLDB4YmUsMHgwZCwweGRjLDB4ZmEsMHhkZCwweDY3LDB4MGIsMHg3ZSwweDQzLDB4YmYsMHgwNCwKKyAgMHhmNywweGRiLDB4NzEsMHhmZCwweDgyLDB4ZjcsMHgwZiwweDhhLDB4Y2IsMHhhNSwweDMxLDB4OTgsMHhhNywweDY1LDB4M2QsMHhkMSwKKyAgMHg5NCwweGI0LDB4MDcsMHg0MywweDk5LDB4YTgsMHhkNiwweDlkLDB4YWYsMHhmNCwweGRkLDB4ODUsMHhhZiwweGM5LDB4YWUsMHg0MiwKKyAgMHg2NSwweGM0LDB4NzgsMHg1ZiwweDQzLDB4YmYsMHhhMywweDJhLDB4MjMsMHg5NywweGEwLDB4YWEsMHhmYSwweGFlLDB4M2UsMHhiMSwKKyAgMHgyYiwweDJkLDB4ODksMHgzNywweDQ2LDB4ZDgsMHgyMSwweDFmLDB4ODIsMHhjYywweDczLDB4ZTIsMHhjOSwweDhlLDB4YTMsMHhmNiwKKyAgMHhmOSwweGY4LDB4MjEsMHhjNCwweDhhLDB4ZDAsMHg1MSwweDc1LDB4N2UsMHgyNCwweGIzLDB4YmIsMHg2MCwweDVmLDB4MzMsMHgwMiwKKyAgMHgyMSwweDdkLDB4ZWQsMHg2OSwweDAzLDB4MzgsMHhjNSwweGU3LDB4MmIsMHhhNywweGI0LDB4ZDYsMHgwNiwweGZiLDB4MWMsMHhiYSwKKyAgMHgyZiwweDY3LDB4MTYsMHhiNCwweDI5LDB4NjgsMHg3ZiwweGZkLDB4ZGEsMHhmMywweDc1LDB4ZTgsMHhjYSwweGI1LDB4MGYsMHhkMiwKKyAgMHhlZCwweDI0LDB4YTQsMHg3ZCwweDE4LDB4YjQsMHg5ZiwweGI1LDB4NmMsMHgyMywweGEzLDB4ODksMHhmNSwweDhmLDB4YTQsMHgwZCwKKyAgMHg5MCwweDQ2LDB4ZmMsMHhmYSwweDAxLDB4ODksMHgwNCwweDUwLDB4NWEsMHgzOSwweDA2LDB4ZjEsMHg3ZCwweGFkLDB4OTIsMHg0OCwKKyAgMHgwYSwweDA3LDB4YTksMHhiMSwweDQzLDB4ODgsMHhhYSwweGQ0LDB4NGQsMHg0ZSwweDM3LDB4ZjksMHg3ZiwweDI2LDB4NzcsMHg0OSwKKyAgMHg2OCwweGRmLDB4MTEsMHhjYSwweGZhLDB4YmEsMHhkNCwweDE3LDB4YTgsMHg5ZCwweDU4LDB4ODIsMHg3ZSwweDE0LDB4ZTMsMHg2MCwKKyAgMHhlZiwweGEzLDB4ZTEsMHhlYywweDkwLDB4ZjAsMHgzYywweGI1LDB4MDMsMHgwOSwweDkyLDB4YTQsMHhmZiwweGE3LDB4NzYsMHhjYSwKKyAgMHgyNywweDcwLDB4MDgsMHg1ZSwweDFlLDB4NzQsMHhjZSwweDExLDB4N2YsMHgyMywweGJkLDB4ZWYsMHg0MSwweGZjLDB4YmMsMHg1MywKKyAgMHgyZSwweDkyLDB4MGUsMHhjMSwweDA1LDB4NjUsMHhlZCwweGY2LDB4YWQsMHhiZiwweDY1LDB4MTcsMHhhYiwweGRkLDB4YmQsMHhkNiwKKyAgMHhkMCwweGE0LDB4YzEsMHg4NCwweGZjLDB4MGMsMHgwOSwweDYxLDB4YmUsMHg2ZCwweGQ4LDB4OTIsMHhiMCwweGY4LDB4NWQsMHhmZiwKKyAgMHgzYiwweGExLDB4NGEsMHg3NiwweDU3LDB4NTgsMHhlYywweDUzLDB4MmUsMHhjMCwweDY1LDB4OTgsMHgxNSwweDJlLDB4MzgsMHg1ZCwKKyAgMHhmYiwweGIxLDB4NTQsMHhkMSwweDY3LDB4MGIsMHhlMSwweGQ2LDB4OWEsMHhiOCwweGZmLDB4YTAsMHhmMiwweDE4LDB4YmMsMHgyZiwKKyAgMHg5NSwweDlkLDB4YjAsMHg3NiwweDRlLDB4OWEsMHg4OSwweGY4LDB4Y2EsMHgzNSwweDY4LDB4OWQsMHgyMywweDNlLDB4NDgsMHgwZSwKKyAgMHg0MSwweDU5LDB4MzAsMHhkMywweGQ1LDB4ZTQsMHg5NCwweDNlLDB4YmUsMHhkZiwweGFkLDB4YWYsMHgwZCwweDE3LDB4ODQsMHgxMywKKyAgMHhmMiwweDI3LDB4OTIsMHhlNiwweDYwLDB4NmQsMHgwMSwweDM1LDB4ODAsMHgyMCwweGQ5LDB4MDEsMHg2ZiwweDdiLDB4ZWQsMHgzZCwKKyAgMHg4MSwweDMwLDB4OWEsMHg4ZCwweDJmLDB4N2UsMHhkMywweGNlLDB4NjgsMHg5OCwweGU0LDB4NGIsMHg0ZCwweGJhLDB4YmQsMHg5NywKKyAgMHg3NiwweDkzLDB4YjIsMHg4NCwweDdjLDB4ODgsMHgyMiwweGZlLDB4ZDksMHhhYSwweGFhLDB4ODMsMHg2OCwweDZkLDB4NDksMHg2YSwKKyAgMHgyMywweDM4LDB4MjIsMHhmOCwweGY1LDB4MTcsMHhjMywweDhiLDB4NGMsMHhkNSwweDViLDB4ODAsMHg2NCwweDBkLDB4NzYsMHhmNywKKyAgMHhhYiwweDlmLDB4NWIsMHg1NCwweGJmLDB4YzksMHhmZiwweDIzLDB4YTQsMHg2YiwweGFiLDB4OWYsMHhiOSwweGJmLDB4M2UsMHhiMCwKKyAgMHg5MiwweDdjLDB4MWIsMHg3ZSwweGMxLDB4ZjIsMHg3ZCwweDk2LDB4ODUsMHhmNiwweDY5LDB4ZDAsMHhkOSwweGFlLDB4NDYsMHg2OSwKKyAgMHg5ZCwweDY1LDB4MWEsMHhlYywweDZjLDB4MzcsMHgxYywweDQxLDB4M2YsMHgzMSwweGUxLDB4OWYsMHhhYywweGUwLDB4YTksMHg1MCwKKyAgMHg1OCwweDJmLDB4YzksMHg2YiwweGIzLDB4YjIsMHg1ZSwweGU4LDB4ZDEsMHg0YiwweDFjLDB4ZTIsMHg2MiwweDc4LDB4MzUsMHhiYywKKyAgMHg1MywweGNmLDB4Y2MsMHg5MywweGFkLDB4ZWMsMHhiMywweDcwLDB4MTgsMHg0YSwweGYyLDB4ODQsMHg2MywweDEzLDB4ZGIsMHgwZCwKKyAgMHhiNCwweGNjLDB4N2QsMHhiOSwweDk3LDB4OTQsMHhmOSwweDc1LDB4YjYsMHgzNywweDZiLDB4ZjYsMHhjMSwweDY1LDB4YTUsMHhhYSwKKyAgMHgzNiwweDUzLDB4YzcsMHhmZCwweGYzLDB4MjcsMHhmOCwweDc5LDB4YmYsMHhlZCwweDRkLDB4MWMsMHgxYywweDg2LDB4MmEsMHgyOSwKKyAgMHhmMywweDQ0LDB4MGEsMHhmZSwweDE5LDB4ODEsMHg4ZiwweDA1LDB4YmUsMHgwOCwweDM5LDB4ODUsMHhjYSwweDIxLDB4ZWUsMHhmNiwKKyAgMHgwOSwweDE3LDB4ZmMsMHgxMCwweGJmLDB4ODgsMHg1YiwweGNiLDB4MGMsMHg4OSwweDg4LDB4MTgsMHg5OSwweDViLDB4YzcsMHhjMSwKKyAgMHg0NywweDI2LDB4ZmMsMHg4MywweDQyLDB4MTIsMHhiOCwweGRiLDB4ODcsMHg0YSwweGQwLDB4NDQsMHgwYywweGZmLDB4NGYsMHgwMCwKKyAgMHg5ZSwweDA1LDB4ODcsMHg5NiwweGU5LDB4NDMsMHhjNCwweGU4LDB4MTcsMHgwYywweDQ3LDB4ZDAsMHhiOSwweGM0LDB4ZmEsMHgzMywKKyAgMHhmOCwweDJkLDB4M2MsMHhjNywweDFhLDB4YjksMHhiNywweDY3LDB4MWEsMHgzYywweGMxLDB4YTYsMHhjNywweDA2LDB4NWIsMHg2MywKKyAgMHhmZSwweDlmLDB4YmIsMHg2MSwweDBkLDB4MGEsMHg1MiwweDg0LDB4ODIsMHg1MSwweDEzLDB4ZmUsMHgxOSwweDgwLDB4YjYsMHhhMCwKKyAgMHgzYSwweDQ0LDB4NmYsMHhmMywweDU4LDB4ZTEsMHg1NywweGMxLDB4YzIsMHgyMSwweDVhLDB4NGUsMHgxZSwweDUzLDB4YjcsMHgwNiwKKyAgMHgxZCwweDdkLDB4MTksMHhiYiwweDcxLDB4NjEsMHg5YiwweDgyLDB4Y2UsMHg0YiwweDc5LDB4YTksMHhmZSwweDlmLDB4MmUsMHhjNCwKKyAgMHhmMywweDZlLDB4YjYsMHg0ZCwweDk1LDB4MjksMHg3OSwweDFiLDB4NWUsMHg2NiwweDhlLDB4ZGYsMHg4YSwweDMzLDB4NTEsMHgwMiwKKyAgMHhiYiwweGMzLDB4Y2UsMHg5MCwweDVjLDB4NGYsMHgwZSwweGMyLDB4ODMsMHhjMSwweGNjLDB4MTcsMHg0NCwweDkzLDB4ZmYsMHgwNywKKyAgMHg3YywweGNhLDB4ZDgsMHhjMiwweDBhLDB4YjQsMHhjNywweDZiLDB4NGUsMHgyOSwweGMzLDB4ODgsMHg3ZSwweDZkLDB4YWMsMHgyOSwKKyAgMHgwNCwweGE4LDB4N2YsMHhhNSwweDJjLDB4MjYsMHgzMiwweDE4LDB4YWIsMHhhNiwweGNhLDB4Y2QsMHhmZCwweDI5LDB4ZjgsMHhhNywKKyAgMHgxZiwweDBlLDB4ZTgsMHg5NSwweGJlLDB4Y2MsMHg3NiwweGYxLDB4NTksMHgxOCwweGQ3LDB4YzMsMHhkYywweGZmLDB4YjMsMHgxYywKKyAgMHhjNiwweDM3LDB4YmEsMHhiNCwweGNjLDB4MjAsMHhlMiwweDlmLDB4MDMsMHg1MCwweGY5LDB4OTAsMHg3NSwweDQzLDB4OGEsMHhmZiwKKyAgMHhlNywweGZiLDB4ZDAsMHgwMiwweDFkLDB4YjUsMHg3NCwweDEzLDB4OTksMHhkMSwweGQ3LDB4YTIsMHg3NywweDc4LDB4MmQsMHhkYywKKyAgMHhlZCwweGIwLDB4OWIsMHg3NSwweDc4LDB4NjksMHhkMCwweDVlLDB4MjgsMHhiNSwweDY4LDB4MjUsMHhkZiwweGM0LDB4OWYsMHg5MiwKKyAgMHhlNywweDNkLDB4MmYsMHg2ZCwweDAxLDB4M2MsMHgwNiwweDA1LDB4MWUsMHhmOSwweDRkLDB4YjIsMHgxMywweDdlLDB4YTcsMHgxNSwKKyAgMHg3OCwweGU5LDB4MjAsMHhkOSwweDI5LDB4M2QsMHgyMywweDE4LDB4ODMsMHgzOSwweGYwLDB4OTgsMHhlZiwweDFmLDB4MzUsMHg3YSwKKyAgMHg5YywweGJjLDB4NmUsMHhjMiwweDNmLDB4YjksMHg5ZSwweDU1LDB4YjUsMHhmOSwweDVhLDB4NWQsMHgwMywweGM5LDB4ODUsMHgzNCwKKyAgMHgyZCwweGRmLDB4NGIsMHhiYywweGU5LDB4MzEsMHhmZiwweDhmLDB4ZTMsMHg1ZSwweDMyLDB4MDUsMHg1NiwweGMxLDB4MDMsMHgzYSwKKyAgMHhmNSwweDkyLDB4YTQsMHhmZCwweDU1LDB4OWUsMHg3OSwweDNmLDB4ODcsMHhmZCwweDVjLDB4ZWQsMHg4NiwweDYwLDB4MjUsMHgwZSwKKyAgMHhhYywweDRjLDB4ZTYsMHhmYSwweGQ3LDB4MGQsMHg3NywweDgxLDB4YWMsMHgxMiwweDBlLDB4OGQsMHg5YywweDdhLDB4YzEsMHgxMSwKKyAgMHhjMSwweDg0LDB4N2YsMHhkOCwweDU5LDB4ZWQsMHg2NSwweGVlLDB4ZWQsMHhmOSwweDNlLDB4YzIsMHg5ZSwweGZkLDB4ZGUsMHhmNSwKKyAgMHgxYywweDA4LDB4NGQsMHhmOCwweDdmLDB4NjgsMHg3YywweDYwLDB4ZjIsMHhmZiwweGE0LDB4N2QsMHgxZSwweDNhLDB4NWMsMHg1OCwKKyAgMHg1YSwweDY3LDB4MWQsMHg2YywweDNhLDB4MmYsMHgxZCwweDU2LDB4NGEsMHhiNSwweGNjLDB4OGQsMHhlMiwweDc5LDB4NzYsMHg1OCwKKyAgMHhhOSwweGY0LDB4NWEsMHg3ZiwweDI5LDB4NGUsMHg2NywweDg3LDB4MGQsMHhjNCwweGU4LDB4MzcsMHhmYiwweDdmLDB4N2EsMHgzNywKKyAgMHgwNiwweDFjLDB4NzYsMHhhMCwweGNkLDB4ZTIsMHgxNiwweDRkLDB4ZjUsMHg4NiwweGYyLDB4MWMsMHhjYywweDczLDB4MGEsMHgwMiwKKyAgMHhkZiwweDJjLDB4OWEsMHg1YSwweGI0LDB4OWEsMHhjYywweDZlLDB4MGUsMHg0MCwweDk5LDB4MjIsMHhmNywweDViLDB4YjIsMHgxMiwKKyAgMHhmNiwweDc1LDB4NWQsMHg1YSwweDNmLDB4ODIsMHgzYSwweGQ1LDB4MWIsMHhlMCwweGIwLDB4YTcsMHg1MSwweDU1LDB4ZWYsMHg0MSwKKyAgMHg3NCwweGQ3LDB4YWYsMHgzNSwweGFhLDB4ZDMsMHhiNSwweDNhLDB4N2MsMHg1ZiwweDY1LDB4Y2IsMHhlZCwweDMzLDB4YmQsMHg4YiwKKyAgMHhiYywweDY0LDB4NjMsMHg0MiwweGZlLDB4MjAsMHhmZSwweDYxLDB4MmQsMHg2YSwweDg3LDB4ODYsMHhhNywweGI1LDB4OTMsMHg2ZSwKKyAgMHgwNSwweDFmLDB4MDcsMHg0MiwweDQzLDB4ZjgsMHg0NSwweDY2LDB4NzIsMHg0NywweGQ5LDB4MWMsMHg2MSwweDI2LDB4Y2MsMHhmMiwKKyAgMHhkYywweDM4LDB4NjgsMHhmNiwweGZmLDB4NGMsMHgxOSwweDIyLDB4MDcsMHg5OCwweDRiLDB4NzMsMHgzZSwweDdkLDB4Y2YsMHg5OSwKKyAgMHhlMCwweDAxLDB4MzUsMHhlNiwweGQ2LDB4NmIsMHgzYSwweGEwLDB4OTYsMHhmOSwweDE2LDB4MDcsMHhlNSwweDQyLDB4ZjIsMHhhMSwKKyAgMHg3ZCwweDVlLDB4ODMsMHhlZCwweDA5LDB4YjEsMHgyYiwweDIxLDB4N2YsMHg4NiwweDg1LDB4NGUsMHgzOCwweDRiLDB4MTEsMHhlZCwKKyAgMHgzYywweDU1LDB4MzAsMHhkNCwweDgxLDB4YjAsMHhjNywweDYzLDB4ZTAsMHg5ZiwweDFmLDB4NDMsMHg2NSwweGRkLDB4Y2QsMHg3YywKKyAgMHhmMCwweDI2LDB4OTQsMHhkNSwweGRhLDB4OTQsMHhhNiwweDQ3LDB4MTMsMHhmYiwweGRmLDB4YTEsMHg4NCwweDEwLDB4N2YsMHhjZSwKKyAgMHg4MywweGM3LDB4NTYsMHgxNSwweDQ0LDB4MzUsMHhlZSwweDc2LDB4Y2IsMHhlMiwweDhlLDB4ZTgsMHhjOCwweDIwLDB4N2UsMHg4OCwKKyAgMHg2NiwweDUxLDB4MzEsMHgxYywweDQxLDB4YjYsMHg1NSwweDA1LDB4MjYsMHhmYywweDkzLDB4NTYsMHgwZSwweGViLDB4ZDQsMHgwMiwKKyAgMHg0NiwweDg3LDB4NzEsMHgzNywweGFmLDB4ZDMsMHg3MCwweDEwLDB4MjIsMHgxMSwweGI1LDB4YjUsMHhiYSwweDhjLDB4MzksMHg0MiwKKyAgMHg3NiwweDA3LDB4OTQsMHhhYywweGI1LDB4MzcsMHgyMywweDIyLDB4M2EsMHg5OCwweGM0LDB4MjcsMHg2OSwweGNiLDB4MDksMHhhZSwKKyAgMHg0ZiwweDZkLDB4ODYsMHg0YSwweDVlLDB4ODMsMHgxZCwweDJkLDB4ODUsMHg2NywweGYxLDB4M2MsMHhiZSwweDBlLDB4MmQsMHgwNCwKKyAgMHgwYywweGM3LDB4NjksMHg3ZSwweGY3LDB4MTYsMHg5MCwweDY0LDB4MGEsMHg0OSwweGZjLDB4MTMsMHgxMiwweGE2LDB4NTIsMHgzYywKKyAgMHhiZiwweDFhLDB4MWUsMHhkMiwweDQxLDB4YjIsMHg0NiwweDliLDB4M2UsMHg4OCwweDQwLDB4ZTgsMHhiOCwweGI0LDB4MWEsMHg3MCwKKyAgMHhiMCwweGRjLDB4N2UsMHgxMywweGJjLDB4MTQsMHgwMywweDA2LDB4YzMsMHg4OSwweGZiLDB4NzcsMHhkMSwweDZjLDB4NzgsMHhhZCwKKyAgMHg3OSwweDc2LDB4MzQsMHg3MywweDI1LDB4MzksMHgwNiwweDlmLDB4YjMsMHg5NywweGEyLDB4Y2UsMHg5NSwweGUyLDB4ZWIsMHhlNCwKKyAgMHg1NSwweGI2LDB4MjMsMHhlNCwweDFjLDB4OTMsMHgyYiwweGM5LDB4NjcsMHg2YywweDdiLDB4ZDQsMHhiNiwweDUyLDB4ZmMsMHgyOCwKKyAgMHg4OSwweDdmLDB4NmUsMHhlYSwweDUyLDB4M2UsMHg0YiwweGZmLDB4YWQsMHhiZSwweDNlLDB4MmMsMHhlYSwweGNhLDB4MzgsMHhjYywKKyAgMHhlMywweDg2LDB4ZmYsMHgxMCwweDVjLDB4MTAsMHgyYiwweGI5LDB4NjEsMHgzMiwweDgyLDB4ODIsMHg2NSwweDFhLDB4YmYsMHhkMiwKKyAgMHg5NywweDkwLDB4M2YsMHg5MCwweGY2LDB4MDUsMHg5YywweDY0LDB4OTMsMHg3YywweDRiLDB4M2UsMHgxNCwweGJiLDB4ZTEsMHhhNCwKKyAgMHgzZSwweGRmLDB4OTcsMHhjNSwweGYxLDB4Y2YsMHg5NywweGFjLDB4NmEsMHg4NSwweGY1LDB4ODQsMHhlOCwweDY2LDB4ZmYsMHgyMywKKyAgMHg1OCwweDM1LDB4NjQsMHgxYiwweDE3LDB4ZjUsMHhjNCwweGZhLDB4NzcsMHgwOSwweDUzLDB4NjEsMHgzNSwweGRjLDB4YmEsMHg1NCwKKyAgMHhjZSwweDI3LDB4NWUsMHhlZCwweGI4LDB4ODIsMHhlYiwweGUzLDB4MjIsMHhjNywweGI1LDB4MWQsMHhjYSwweGFkLDB4YjUsMHg1NCwKKyAgMHgyMywweDhhLDB4YjQsMHg3ZCwweDdiLDB4MzEsMHg1NywweGM0LDB4MWYsMHgyNSwweGVkLDB4NmIsMHgyNSwweDA4LDB4YmYsMHg1NCwKKyAgMHhhNiwweGUzLDB4NGIsMHg3OSwweDA2LDB4NTEsMHg3MSwweGNmLDB4ZDQsMHg2NiwweGM2LDB4ZjEsMHgwZiwweGNkLDB4OTgsMHg0YywKKyAgMHhiMiwweDU3LDB4ZWQsMHhjYSwweDJmLDB4ZDYsMHhlNCwweDg2LDB4NzQsMHgzZCwweGU5LDB4ZmYsMHhjOSwweDhkLDB4ZDQsMHhiNSwKKyAgMHhmYSwweDBhLDB4Y2YsMHhhMSwweGY2LDB4ZDcsMHg3MCwweGJlLDB4YmQsMHgxOSwweDgxLDB4NTAsMHgzZiwweGVjLDB4MjgsMHg5YywKKyAgMHgwMSwweDE5LDB4NDAsMHg1NCwweDZkLDB4ODcsMHg4NCwweDhhLDB4YmUsMHgxYywweDhmLDB4Y2QsMHhjNCwweDc5LDB4ZGYsMHgzNiwKKyAgMHg2NSwweDFiLDB4YmMsMHhhNSwweDk1LDB4NTUsMHhlMywweGY5LDB4ZWEsMHg0NCwweGIzLDB4NmIsMHg5ZSwweDllLDB4ZDksMHgyMywKKyAgMHg5ZSwweDgxLDB4Y2YsMHhhMiwweDM4LDB4MDgsMHg1YiwweDljLDB4MDgsMHhlNCwweDBjLDB4MGYsMHhjZiwweDQ3LDB4MjYsMHg3OSwKKyAgMHgzOCwweGUyLDB4YjgsMHg1OCwweDVkLDB4NTksMHg2YiwweDZiLDB4MTYsMHg5OSwweGYyLDB4OGUsMHg1NiwweGQ1LDB4NzcsMHhmNywKKyAgMHg3NiwweDcxLDB4NDgsMHhiYiwweDAwLDB4N2IsMHhmNCwweGFjLDB4ZDAsMHhhNCwweDExLDB4YzcsMHhiOCwweDgyLDB4NWIsMHg2YiwKKyAgMHgwNywweDIyLDB4ZTQsMHg4OSwweGZiLDB4MGIsMHhjYSwweDg4LDB4NzgsMHgxOCwweDYxLDB4Y2YsMHhmYSwweDgwLDB4ZDgsMHgyMywKKyAgMHhiYywweDExLDB4NDIsMHg0NSwweDNmLDB4OGEsMHg2NiwweGM4LDB4Y2YsMHhkNSwweGI5LDB4ZmQsMHgzOCwweGI4LDB4MjQsMHhhZCwKKyAgMHgyNywweDU1LDB4MTEsMHhhYiwweDVlLDB4YTMsMHg2YiwweDQ5LDB4ZjksMHhmMywweGEwLDB4YjcsMHhkNSwweDgzLDB4OWIsMHg2NCwKKyAgMHgyZCwweDJlLDB4YzIsMHg4YiwweDlhLDB4OWQsMHhhZCwweDBkLDB4ZTMsMHhmZSwweGRmLDB4YzMsMHhlYywweGM3LDB4OTYsMHg4NCwKKyAgMHhlYywweDIzLDB4ZDIsMHgzYiwweGNkLDB4ZjMsMHg3NCwweDU0LDB4ZjQsMHg0OSwweGY5LDB4YzMsMHhkMiwweGFjLDB4NmEsMHg0MCwKKyAgMHgyYiwweGVhLDB4OTUsMHhmZCwweGU5LDB4NTEsMHgxNiwweDgwLDB4MTksMHgxYSwweDAyLDB4YTEsMHgyMSwweDhkLDB4ZTMsMHgxZiwKKyAgMHgxYSwweGNjLDB4OGUsMHg0YSwweGNmLDB4ZWIsMHhjZSwweDIwLDB4ZGQsMHg0OSwweGEyLDB4ZDIsMHhjNCwweDdlLDB4NDAsMHhmYywKKyAgMHg0MywweGZjLDB4OTIsMHg0MywweGMzLDB4NDUsMHhkNiwweDcxLDB4NmIsMHhhYiwweDZjLDB4ZTEsMHhlYywweGY0LDB4N2UsMHg2OSwKKyAgMHg4NywweGYyLDB4NDMsMHhkZCwweDIyLDB4NjUsMHhlYiwweGMyLDB4NzYsMHg1ZiwweDkxLDB4ZWUsMHg5OCwweDYzLDB4OTIsMHgzZiwKKyAgMHg5MCwweGY2LDB4ODAsMHhhNywweGY1LDB4OWIsMHhmMywweDc0LDB4NDMsMHhmZSwweDU4LDB4ODUsMHgzMiwweGFkLDB4MjgsMHhlYywKKyAgMHgxOSwweDQyLDB4MGQsMHg1ZSwweDgxLDB4ZjcsMHgyZiwweDg4LDB4NGEsMHgxZiwweGQ2LDB4NTcsMHhlYSwweGQ2LDB4OWQsMHhhMiwKKyAgMHgyZSwweDRlLDB4NGMsMHgwZiwweDRkLDB4YjksMHgwNCwweDVmLDB4ZTQsMHhlZiwweDEyLDB4NmMsMHg3ZCwweGUyLDB4MjAsMHgyMCwKKyAgMHhkYSwweDY5LDB4NDQsMHg2MCwweDczLDB4MWUsMHhhZSwweGFhLDB4YmIsMHg3NCwweDViLDB4ZGYsMHhhNCwweDUxLDB4ZjgsMHg5MywKKyAgMHgzYSwweDFmLDB4ZDYsMHhlYiwweGUyLDB4ZjAsMHhhNCwweDA0LDB4ZGUsMHg0OCwweGJiLDB4MDIsMHhhZiwweGIzLDB4YjksMHhmZCwKKyAgMHg4YiwweDFiLDB4NmEsMHg3ZSwweDRhLDB4OGUsMHg4MiwweDliLDB4YzMsMHg2NiwweGM0LDB4NGIsMHg1MiwweDE1LDB4MWYsMHg4YywKKyAgMHhmZSwweDYyLDB4YzQsMHg1NSwweDlhLDB4NmUsMHhlZCwweDE1LDB4NWQsMHgwOSwweGY5LDB4YzMsMHg5NCwweDRmLDB4YTEsMHgxNSwKKyAgMHg2MSwweDFlLDB4MGQsMHg3YiwweDE2LDB4NjgsMHhlYiwweGExLDB4YTMsMHg0ZiwweGVlLDB4MjEsMHg1NywweGI1LDB4NTcsMHgwNiwKKyAgMHg0YiwweGEyLDB4ODgsMHgwZiwweGNmLDB4NjgsMHhiYiwweDVkLDB4ODgsMHg4OCwweGQ2LDB4MTAsMHgzNSwweDIxLDB4Y2YsMHg2OSwKKyAgMHhkYSwweDMwLDB4YzIsMHgxZSwweDNiLDB4YzcsMHg3YiwweDZiLDB4NTksMHgxMywweGVhLDB4NzcsMHg4ZSwweGY3LDB4ZDAsMHhkMCwKKyAgMHg1OCwweDYxLDB4MDAsMHg2MywweGJlLDB4MDIsMHhhOCwweDMxLDB4M2MsMHhmZSwweDI0LDB4ZmUsMHg5OSwweGQyLDB4MTUsMHg3YSwKKyAgMHhhMSwweGM1LDB4ZWUsMHhiMywweGI0LDB4MjMsMHgzZSwweDZmLDB4ODMsMHgyMiwweDVkLDB4NGMsMHhlMCwweGM5LDB4MzAsMHhmOSwKKyAgMHgxNCwweGY2LDB4ZjQsMHg3NywweDZjLDB4YTcsMHg5YiwweDQ5LDB4MzgsMHhiMSwweDNmLDB4YjUsMHgyOSwweDlmLDB4NGEsMHgxZiwKKyAgMHgzNywweDk3LDB4OGQsMHg5NiwweDk0LDB4ZDcsMHhhYywweDgwLDB4NDMsMHg2NCwweGRlLDB4MDQsMHg3ZSwweDM2LDB4ZjAsMHhmMCwKKyAgMHhhNywweGMyLDB4MzAsMHg3MywweGFiLDB4ZDYsMHg4MCwweDFjLDB4NGMsMHhlYywweGZmLDB4YTgsMHhiMCwweDhmLDB4YmMsMHg0NywKKyAgMHg1ZSwweDQxLDB4OTgsMHg2NywweGMxLDB4ZDUsMHg4MSwweGI5LDB4ZGMsMHhiZiwweDMxLDB4NDIsMHgwZCwweDdjLDB4YzgsMHhmNywKKyAgMHhjMywweDM4LDB4YWQsMHhmNCwweGNjLDB4NmEsMHgxMCwweDU3LDB4OWEsMHhmYywweDNmLDB4NWQsMHhlYSwweGM3LDB4OTMsMHhjYiwKKyAgMHgwNiwweGIzLDB4N2EsMHgyNiwweDM5LDB4ZTEsMHg3ZCwweGU4LDB4NDYsMHhlMCwweDZkLDB4MWMsMHhjMywweGI4LDB4YTMsMHhlMywKKyAgMHhhZCwweGJmLDB4NzUsMHg3YiwweGFkLDB4Y2QsMHgzNSwweGEzLDB4MjYsMHhmYywweDYzLDB4NjEsMHg2ZCwweDgzLDB4YTgsMHhkNiwKKyAgMHg3ZiwweDQzLDB4MmEsMHg2MCwweDdkLDB4MGMsMHgwZiwweDVmLDB4ODIsMHhmNywweGEwLDB4MGMsMHgwNywweGY2LDB4MTEsMHgzNCwKKyAgMHhiZCwweGVkLDB4ZjcsMHhkMCwweDVmLDB4YTMsMHg3ZSwweDlmLDB4ZDgsMHgwZiwweGQxLDB4YjQsMHgzYiwweGUxLDB4MDUsMHg0NCwKKyAgMHgzYiwweDg0LDB4YTMsMHhjMSwweGFkLDB4MTMsMHhmZSwweGIxLDB4MjYsMHg0NCwweDhjLDB4MzgsMHg4OCwweDQwLDB4NmIsMHgyMywKKyAgMHgwMiwweDI3LDB4MzUsMHhiZCwweGM3LDB4ZTQsMHhmZiwweGI5LDB4MDEsMHg1NiwweDFiLDB4NjEsMHgyMCwweDRiLDB4NTYsMHg1ZCwKKyAgMHg1MywweDYzLDB4ZGMsMHgxZiwweGYyLDB4NzgsMHhmMywweGY3LDB4ZjksMHhlMCwweGNhLDB4M2QsMHhjNiwweDRmLDB4ZGYsMHhkOSwKKyAgMHg3OCwweDQyLDB4OTksMHhiOCwweDdmLDB4MWQsMHhhNSwweDEwLDB4NTUsMHhkZCwweDExLDB4OGIsMHgxYiwweGVmLDB4ZmYsMHhiZSwKKyAgMHhlMCwweGZhLDB4MjQsMHg4YiwweGZiLDB4N2YsMHg1ZSwweDY1LDB4YjksMHhiYSwweDZkLDB4YjYsMHgzOCwweDQwLDB4ZjgsMHg5OSwKKyAgMHg3NiwweDVhLDB4YzQsMHg4ZCwweGE2LDB4ZjgsMHg1NywweDNiLDB4MWUsMHhjMywweGJkLDB4NmMsMHhjOSwweGU4LDB4YTQsMHg0YiwKKyAgMHhlYSwweDU1LDB4YWQsMHhkMiwweDU4LDB4MTYsMHg1ZiwweDZjLDB4N2QsMHg2YSwweDRlLDB4MmEsMHg1NywweGUwLDB4MTUsMHg4NiwKKyAgMHg0MCwweDY4LDB4ZDAsMHg4NCwweDdmLDB4ODYsMHhlMSwweDZkLDB4NWMsMHg4ZCwweGM1LDB4NjEsMHhkMSwweGM5LDB4MGUsMHg1NSwKKyAgMHg3NywweGY3LDB4ZGUsMHgxYywweDE2LDB4M2YsMHg1MSwweGRmLDB4NzEsMHhmMSwweDc4LDB4MjIsMHhhZSwweGNmLDB4OWYsMHhmYywKKyAgMHhhNSwweGQ1LDB4YjYsMHg2OCwweDhhLDB4ZmYsMHhhNywweDFkLDB4ZDYsMHg5MSwweGFkLDB4M2MsMHhjOCwweDU1LDB4NjEsMHg1ZiwKKyAgMHhhZiwweDFhLDB4ZDIsMHhmMiwweDI0LDB4ZGIsMHhlNSwweDI4LDB4ZDYsMHgxNywweDcxLDB4YzEsMHhmMiwweDk4LDB4OTAsMHhhZiwKKyAgMHhiNSwweDhkLDB4MTYsMHg5OSwweGZkLDB4M2YsMHhkZCwweGYwLDB4NGIsMHhlZSwweGY2LDB4MjksMHhmNywweDNjLDB4Y2QsMHg5ZSwKKyAgMHgwYiwweDI2LDB4ZmQsMHgzZiwweGE3LDB4NzAsMHg3MCwweDA0LDB4MTEsMHhlMCwweGZkLDB4M2UsMHhiOSwweDhlLDB4MzQsMHg5OCwKKyAgMHhmMCwweDRmLDB4NDQsMHhmMywweDA3LDB4ZDQsMHg1MSwweDRiLDB4OTcsMHg3OSwweDNkLDB4NjMsMHhmZSwweDFmLDB4ZmIsMHg4MCwKKyAgMHhkNiwweGE4LDB4NzUsMHgzNCwweGM4LDB4YmYsMHhiMCwweDk4LDB4ZmQsMHgzZiwweDdiLDB4ZTAsMHg1ZCwweGE5LDB4NzQsMHhlNywKKyAgMHhhYywweDExLDB4YjksMHgwYiwweDVlLDB4ODAsMHhiOCwweGZmLDB4ZTcsMHg2ZCwweDMwLDB4ZTQsMHhlZCwweGRiLDB4ZjAsMHgyZSwKKyAgMHgyZCwweGVkLDB4YjAsMHgwZCwweDhiLDB4OGYsMHg5YSwweGYwLDB4MGYsMHg2YSwweDdmLDB4NjUsMHhiZiwweDk0LDB4YjksMHhjYSwKKyAgMHg3MCwweDgzLDB4NzAsMHhiNywweDBmLDB4OWUsMHhlZSwweDk4LDB4ZmYsMHg0NywweDNjLDB4MmQsMHg4ZCwweGQxLDB4Y2EsMHg2YywKKyAgMHhkYiwweGVhLDB4MTQsMHhmYywweDczLDB4ODYsMHgxZCwweGM4LDB4ZWUsMHhhZSwweGNlLDB4MGEsMHg2ZSwweDk1LDB4YzgsMHg4NywKKyAgMHhkMCwweDZkLDB4ZDgsMHhmYiwweDkyLDB4NjEsMHhlZiwweDczLDB4N2QsMHg3NywweDQwLDB4YWQsMHhkNCwweDljLDB4MWIsMHg0NCwKKyAgMHg4ZiwweDA5LDB4ZmYsMHhkYywweDAxLDB4OGQsMHhjYywweGFlLDB4ZDEsMHg4ZCwweGE0LDB4OTAsMHhiNiwweDRjLDB4ZjgsMHgxZiwKKyAgMHg2ZSwweGUzLDB4ZmUsMHgxYywweDQzLDB4MTEsMHg3YiwweDRhLDB4MWUsMHhhMSwweDRmLDB4NWIsMHg1NCwweDEzLDB4ZmUsMHgyOSwKKyAgMHg0NCwweGVkLDB4OGMsMHhmNiwweGQ0LDB4MDYsMHhiMiwweDFjLDB4YjYsMHhhNCwweDliLDB4ZmQsMHg0NSwweGM2LDB4ZmMsMHgwYywKKyAgMHhlZSwweDFhLDB4MjIsMHg2NiwweGZmLDB4OGYsMHg4NCwweDliLDB4NTAsMHhmNSwweGQyLDB4NWMsMHhjYiwweGVkLDB4MDYsMHgzMCwKKyAgMHg5MCwweDE1LDB4NzcsMHhkYywweDFmLDB4YTIsMHhlMCwweGZjLDB4NDYsMHhjZCwweDM5LDB4MDgsMHhiOSwweGQ5LDB4YzQsMHg4NCwKKyAgMHg3ZiwweDdjLDB4YjgsMHgwZCwweGRkLDB4YzIsMHhkZCwweGFjLDB4YzYsMHg0NywweDg3LDB4MDUsMHgzNywweGFjLDB4OWYsMHhmMCwKKyAgMHgzZiwweDE4LDB4OGUsMHgwOCwweDhlLDB4N2YsMHgxNiwweDMzLDB4MzEsMHhjYiwweGU0LDB4ZmYsMHgzOSwweDQ5LDB4N2YsMHgwNywKKyAgMHg1NSwweDVlLDB4ZGIsMHg3OSwweGYxLDB4OTksMHg5OCwweGRiLDB4MjcsMHgxOCwweGMzLDB4M2YsMHg3YywweGYwLDB4MzksMHhiOSwKKyAgMHg1YywweDhiLDB4M2YsMHgxZCwweGFmLDB4NzksMHhkNiwweDg0LDB4N2YsMHg4ZSwweGEzLDB4ZWQsMHhlMSwweGFlLDB4Y2QsMHhmMiwKKyAgMHhjYSwweDA4LDB4MGIsMHgzNSwweGI3LDB4ZDcsMHgxNiwweGFjLDB4MTksMHgzMiwweGUyLDB4ODMsMHg3YywweDdkLDB4ZDgsMHg5ZiwKKyAgMHg3YywweGE1LDB4OGIsMHhhYywweGM3LDB4OWEsMHg1ZSwweDM3LDB4ZTEsMHg5ZiwweDI4LDB4ODQsMHg1NSwweGZiLDB4OTQsMHhiYSwKKyAgMHg1NSwweDQ0LDB4NDUsMHg3OSwweDViLDB4YzYsMHhmZCwweDNmLDB4YTcsMHhhMCwweGM3LDB4MWIsMHgxZiwweDA0LDB4N2MsMHhmNiwKKyAgMHgzYywweGZhLDB4MmMsMHgzOSwweDYyLDB4OTIsMHgzZiwweGZkLDB4YjAsMHgzYiwweGQzLDB4NTksMHg2NywweDUxLDB4ZmMsMHhiNywKKyAgMHhiYiwweDM2LDB4NjgsMHg2YSwweDM1LDB4YmUsMHhlNiwweDZiLDB4ZjgsMHhiZSwweDJhLDB4N2YsMHhkZiwweDM3LDB4NjAsMHg4MywKKyAgMHhhZSwweDdhLDB4ZWEsMHgxNCwweDdmLDB4OWYsMHgxOSwweGZmLDB4MTgsMHhhYiwweDQ3LDB4MzcsMHg2NiwweGUxLDB4NDIsMHhhMSwKKyAgMHgzYywweDhmLDB4YWYsMHg2NywweDdjLDB4ZDAsMHgyMiwweGQ4LDB4M2QsMHgzNCwweGU4LDB4NzksMHhkZCwweDg0LDB4N2YsMHhjZSwKKyAgMHhjMCwweDU5LDB4YTgsMHhhYywweGJlLDB4N2IsMHg3MywweGMxLDB4NzIsMHg3OCwweDJiLDB4ZmUsMHhkOCwweGQyLDB4MzgsMHg3OSwKKyAgMHgzOCwweGVlLDB4ZTgsMHg2MywweDI4LDB4MWYsMHgzNiwweDhiLDB4YzMsMHgyNiwweGZkLDB4ZGIsMHhjOSwweGM2LDB4ODMsMHhlMSwKKyAgMHg3YSwweDliLDB4OTIsMHgxMywweDc3LDB4MDMsMHhmMiwweDY5LDB4NjcsMHg2MywweDgzLDB4N2UsMHhlZCwweGFjLDB4YmEsMHg2ZiwKKyAgMHhlMSwweGFjLDB4Y2QsMHgyNiwweDdkLDB4ODcsMHhmOCwweDg3LDB4MGQsMHg1MywweDAzLDB4ZWQsMHhmOCwweDcwLDB4YjUsMHgzOSwKKyAgMHhmZSwweDE0LDB4NjMsMHhmOCwweDMzLDB4ZTYsMHg4OCwweDYzLDB4NmUsMHg2NSwweDMxLDB4ZGIsMHhkYSwweDZhLDB4YzIsMHgzZiwKKyAgMHhiNywweGI5LDB4ZDYsMHg2OSwweDdlLDB4NDYsMHhhMywweDY4LDB4N2YsMHhiZCwweDAwLDB4NzYsMHg5NiwweDE2LDB4ZjMsMHhmZiwKKyAgMHhjYywweDhiLDB4MzksMHg4MiwweGQ2LDB4YTUsMHhhMSwweGM2LDB4MWYsMHgyMSwweGFkLDB4MjYsMHhmYywweDczLDB4OTcsMHg3MSwKKyAgMHg0YywweDY4LDB4NzksMHhiYSwweDk1LDB4YjQsMHhmMSwweGIwLDB4YzUsMHg4NCwweGJmLDB4ODIsMHgxZiwweDFjLDB4YjIsMHg4MSwKKyAgMHhhOSwweDBkLDB4NTQsMHg0OSwweDZmLDB4MzUsMHhlMSwweDlmLDB4NGEsMHg1OCwweGFkLDB4ZTEsMHhmYywweDA2LDB4ZmYsMHg1NCwKKyAgMHhiNiwweDU1LDB4OTksMHgzOSwweDdjLDB4N2QsMHhkMiwweGZmLDB4ODMsMHg4MiwweDZlLDB4MGQsMHgwZiwweGE0LDB4NWEsMHg0OSwKKyAgMHg1NywweGUyLDB4ZmUsMHhkYiwweGU4LDB4MzQsMHhiNCwweDVmLDB4NjYsMHgyMywweGVjLDB4YjEsMHg2NCwweGE5LDB4NmYsMHg4NCwKKyAgMHg3NiwweDhjLDB4NjQsMHg3MiwweGZmLDB4Y2YsMHg2NywweGVjLDB4NTYsMHgwZSwweDdiLDB4ZGUsMHg1NSwweDRlLDB4NzIsMHgyMCwKKyAgMHhiNCwweGI0LDB4ZTYsMHgwNSwweDEzLDB4ZmUsMHhkOSwweGM2LDB4YmQsMHhhZiwweDdmLDB4YzAsMHhkMywweGI3LDB4NGQsMHg3ZiwKKyAgMHhhNywweGJlLDB4Y2MsMHhlNCwweGNmLDB4MGYsMHg4YiwweDAzLDB4OTMsMHhhZSwweDQwLDB4MTUsMHhiMywweGU5LDB4YTIsMHhjNywKKyAgMHg4NCwweDdmLDB4YWUsMHg0OCwweDNmLDB4NjcsMHhmMywweGEzLDB4YjYsMHhkZCwweGE1LDB4M2YsMHhhMywweDQ3LDB4NTksMHhlOSwKKyAgMHg2OSwweDFiLDB4YzcsMHgzZiwweDU3LDB4ZjksMHg5NSwweDFlLDB4MWMsMHhmYywweDY5LDB4NTMsMHhkNSwweDcyLDB4NWIsMHg0ZiwKKyAgMHg4ZCwweDZlLDB4ZjIsMHhmZiwweGU0LDB4YjEsMHg1NywweDgyLDB4ZjksMHg0MywweDZkLDB4MTcsMHgzYywweDk1LDB4NmMsMHgwZCwKKyAgMHhlNCwweDFiLDB4ZmUsMHgxZiwweDZkLDB4MDcsMHg3ZiwweGZlLDB4NDcsMHg3MSwweGIwLDB4YWEsMHhiYywweGY4LDB4NmUsMHg3OSwKKyAgMHg2NiwweDhlLDB4MDksMHhmZiwweGMwLDB4ZTYsMHhiNCwweDVkLDB4ZjAsMHhiYywweGRlLDB4ZDYsMHg0MCwweGVlLDB4ZjMsMHhhZiwKKyAgMHg0OSwweGZhLDB4N2YsMHg3MCwweGZlLDB4YzMsMHhmOCwweGJlLDB4Y2QsMHg4OCwweDg4LDB4NjUsMHhhZiwweDNkLDB4MDUsMHhmZiwKKyAgMHgyMCwweDlhLDB4NDIsMHhiMSwweGEzLDB4ZmEsMHhhZCwweDI4LDB4YzYsMHg5MywweGYxLDB4OGUsMHg1ZSwweDFjLDB4MWMsMHg2NiwKKyAgMHg3ZSwweGVhLDB4NmMsMHg5MSwweGU3LDB4OTAsMHg0OCwweDYyLDB4N2YsMHg3NiwweDRkLDB4ZjksMHgyZCwweDgyLDB4OWMsMHhmOSwKKyAgMHhiYSwweDZkLDB4NGYsMHhjMSwweDRmLDB4ZTAsMHhhOCwweDUwLDB4MWEsMHgxMywweDliLDB4YjEsMHhmNywweDE1LDB4MDYsMHhhMCwKKyAgMHg4NSwweDU1LDB4MzYsMHhkOCwweDdlLDB4YmQsMHgzNSwweGY5LDB4M2MsMHg4YywweGZiLDB4N2YsMHhhMCwweGYyLDB4YjQsMHgyZCwKKyAgMHg1YywweDMzLDB4MjAsMHhjNSwweGQ1LDB4ZGMsMHg0MCwweDJjLDB4MWUsMHhjMSwweDFkLDB4NjUsMHgxZiwweGYzLDB4ODMsMHhjNiwKKyAgMHg0YywweGYxLDB4MmYsMHgwMSwweDQ1LDB4ZjYsMHg1NSwweDY4LDB4ZDIsMHg5ZCwweDBkLDB4ZTIsMHgzZSwweGNiLDB4MjIsMHgwNCwKKyAgMHg0MiwweDFjLDB4ZjYsMHhhMCwweGZlLDB4OWEsMHg4YiwweGYyLDB4YmMsMHhlMCwweDEyLDB4MGMsMHhmMCwweGY1LDB4ZjQsMHg4YSwKKyAgMHg5MCwweDg4LDB4N2YsMHgzNSwweDRhLDB4MGYsMHg0MiwweGI4LDB4MTksMHhmNSwweDNiLDB4MjMsMHg0ZSwweDkwLDB4YjksMHhlMiwKKyAgMHhlNiwweGZhLDB4ZjcsMHg0NSwweGM5LDB4MWQsMHg3MywweGVjLDB4NzQsMHhiZCwweDVlLDB4ZTIsMHg5NiwweDAzLDB4MDgsMHhlNCwKKyAgMHg0YywweGZlLDB4MWYsMHhiNiwweDk3LDB4MzksMHhmNCwweGJhLDB4NmUsMHhjZiwweDM2LDB4NWEsMHg4MCwweGVmLDB4OWIsMHhjNywKKyAgMHhhNywweGI1LDB4YzEsMHg4YywweGQ4LDB4ZmMsMHhkZCwweGJkLDB4MjUsMHgzZSwweGI5LDB4YTcsMHg0MywweDM1LDB4YzksMHgxZiwKKyAgMHgwYSwweDdiLDB4YTksMHgxYSwweGUxLDB4ZGUsMHgwZiwweDg2LDB4MWIsMHg2ZiwweDkwLDB4ZmIsMHhlNywweDI1LDB4NDMsMHg1MCwKKyAgMHhiYiwweDcxLDB4N2UsMHgwOCwweGYwLDB4YmYsMHg5YSwweDllLDB4OWUsMHg5NCwweDNmLDB4OTAsMHhiOSwweDFjLDB4NTcsMHg2MywKKyAgMHhiZSwweGJlLDB4YjgsMHhkYiwweGIzLDB4NGYsMHhmZCwweDBiLDB4OTQsMHgwZSwweDVhLDB4MGQsMHhmZCwweGFiLDB4ZTAsMHhjNiwKKyAgMHhlOCwweDZlLDB4MWEsMHg5OSwweDhjLDB4ODIsMHhiNCwweGRhLDB4YjYsMHhiYSwweDBkLDB4MTIsMHhmMiwweDI3LDB4OTQsMHgzOSwKKyAgMHg4NiwweGYzLDB4ZjcsMHgwZiwweGRhLDB4ODYsMHg3MCwweGRhLDB4N2IsMHg1MCwweGQ5LDB4MmYsMHg0ZiwweGY4LDB4N2YsMHg5NiwKKyAgMHg4YywweDhhLDB4MjcsMHgxNSwweGFlLDB4ZjMsMHg3MSwweGZmLDB4MGMsMHgyNywweGUzLDB4NWYsMHg2OSwweGZjLDB4ZDcsMHg1MiwKKyAgMHhiZCwweDc4LDB4NTQsMHhhZSwweGU0LDB4ZGIsMHgyNiwweDkyLDB4ZjksMHhkOSwweGFiLDB4M2YsMHg4MywweGFiLDB4YWUsMHhiOSwKKyAgMHgzZSwweDliLDB4MmUsMHg4YywweGUyLDB4ODksMHgyYiwweDA1LDB4NmIsMHg1ZiwweDkzLDB4MTksMHhmZiwweDdjLDB4YTIsMHhlZCwKKyAgMHg2OSwweDQyLDB4ZjksMHgzYywweDQ2LDB4NGEsMHg2MCwweGFmLDB4NWEsMHhmNCwweDdiLDB4N2EsMHgxZSwweDA3LDB4YWYsMHhmOCwKKyAgMHhlNiwweDY4LDB4ZjIsMHg2YSwweDMyLDB4NGIsMHgwYiwweGU4LDB4ZjYsMHhhMCwweGU1LDB4NTksMHhiYiwweDE5LDB4ZmYsMHgwYywKKyAgMHg0OCwweDNiLDB4MDQsMHg1NSwweDZmLDB4NTEsMHhiOCwweGI3LDB4ODcsMHgzYSwweDA2LDB4MzIsMHhkYywweDY4LDB4ODYsMHhlZiwKKyAgMHg1MCwweDBhLDB4MzUsMHgzOSwweGQ3LDB4YWYsMHgwMSwweGFiLDB4NTYsMHg5NSwweDNjLDB4NzgsMHg5OSwweDk4LDB4ZjAsMHhjZiwKKyAgMHgzNiwweGQ4LDB4ZGIsMHhiYywweGFjLDB4MTYsMHg4NSwweGI2LDB4ZDMsMHgwOCwweDdiLDB4YTEsMHgyMSwweGU2LDB4YTQsMHgzNywKKyAgMHhjMiwweDBjLDB4OWYsMHhiYywweDg5LDB4OTQsMHgwOCwweGFkLDB4Y2QsMHhjYiwweDFhLDB4YjMsMHhiYiwweDU2LDB4YTcsMHhjNCwKKyAgMHhiZiwweGE0LDB4OGIsMHgyYywweGFjLDB4NjUsMHhmNiwweGM4LDB4NGUsMHg2MywweGRiLDB4NjQsMHhmMiwweDc4LDB4ZjEsMHg0NSwKKyAgMHgyOCwweGQzLDB4NmMsMHg5YiwweGU0LDB4ZWYsMHg5MSwweDQzLDB4YmEsMHg3YiwweGJiLDB4YjUsMHg1ZCwweDg0LDB4NjQsMHhmYywKKyAgMHgwYiwweGY2LDB4YzUsMHhkMCwweGQxLDB4NmUsMHg2MywweDU5LDB4ZjYsMHhmNywweGM2LDB4ZmQsMHg4MSwweDU1LDB4MWEsMHgyMiwKKyAgMHg0NiwweGJlLDB4OTEsMHhmNiwweDZmLDB4YjAsMHgzNSwweGM4LDB4YTksMHhmMSwweGFmLDB4OGYsMHg4OSwweDliLDB4OWIsMHhlZCwKKyAgMHhmYywweGZlLDB4NjUsMHhmYSwweDVkLDB4YWUsMHgxYSwweDFlLDB4ZmYsMHg5YSwweGE3LDB4NjUsMHhiOSwweDI2LDB4N2QsMHgwOCwKKyAgMHhlZiwweGY4LDB4ZjYsMHgwNCwweDlkLDB4M2IsMHg0NSwweDEzLDB4ZmUsMHg5MSwweDJhLDB4NTksMHg5MywweGI3LDB4ZTMsMHgzNCwKKyAgMHg1YSwweGViLDB4NGUsMHhkYywweGY2LDB4MDUsMHhiZCwweDc1LDB4YTMsMHg0NiwweGZjLDB4MGIsMHg1NywweGFjLDB4M2IsMHhmYiwKKyAgMHg1MywweGQ2LDB4YmEsMHhkMCwweDFlLDB4YTAsMHg3YiwweDZhLDB4YmEsMHg0ZCwweGY4LDB4ZTcsMHgyZSwweGI2LDB4OTUsMHgxNSwKKyAgMHg3YSwweDhhLDB4MTQsMHhiZSwweDJjLDB4ZWMsMHg1OSwweDNkLDB4MmYsMHg3ZSwweDVlLDB4MzQsMHg0NCwweDJjLDB4MDEsMHhjMSwKKyAgMHhkZiwweDViLDB4NDIsMHg2NCwweGJiLDB4MjksMHhmZiwweGM3LDB4ODcsMHhmMiwweGU3LDB4OTcsMHhhMSwweGU5LDB4Y2IsMHhlOSwKKyAgMHg1MiwweGNmLDB4MzQsMHhkOCwweDE1LDB4ODgsMHhhNywweGMxLDB4ZWMsMHg2MiwweGY5LDB4M2UsMHg1YSwweGVmLDB4NzksMHg5NywKKyAgMHg2ZSwweDBhLDB4NGQsMHhiZiwweGZmLDB4YzYsMHgxZiwweGE0LDB4YjcsMHgyNywweGZkLDB4M2YsMHg3NSwweGNlLDB4ZTYsMHhmNywKKyAgMHgyZCwweDczLDB4NmEsMHg3MSwweGRiLDB4NWEsMHhlOSwweDY3LDB4MzAsMHg0NywweDJmLDB4NDYsMHhmYywweGEzLDB4N2QsMHg4NiwKKyAgMHhlNywweDMxLDB4Y2IsMHgyNSwweGY0LDB4OTIsMHg2MywweDdhLDB4NDUsMHg3MCwweDNkLDB4YTQsMHhlNCwweGZmLDB4ZTAsMHhmYiwKKyAgMHhhYSwweGYzLDB4NmIsMHgyNywweDhkLDB4ZTUsMHg1YywweDgyLDB4MmYsMHhmOSwweDQyLDB4OWQsMHhlNSwweGYxLDB4MmYsMHg4ZSwKKyAgMHg3ZiwweDc2LDB4OGEsMHg2MywweGYwLDB4MTcsMHhkYywweDhhLDB4NzgsMHg4MiwweDRjLDB4ZjgsMHg2NywweGNhLDB4YTcsMHhkYSwKKyAgMHhlZiwweDcxLDB4NTksMHhkNiwweDA1LDB4ZDcsMHhhYywweGMwLDB4NjUsMHg3MSwweGYzLDB4ODMsMHg4YywweDBiLDB4ODUsMHg4NiwKKyAgMHgzMCwweGNlLDB4YWYsMHhlNywweDhlLDB4NWMsMHg2ZSwweGFmLDB4OTksMHhmMSwweGNmLDB4M2UsMHhiNiwweDBhLDB4MGEsMHhmNCwKKyAgMHgzYSwweDZmLDB4ZjYsMHg1NCwweDA5LDB4MDUsMHg0YiwweDQ0LDB4M2UsMHhiZiwweDcxLDB4MmEsMHhlYywweDcyLDB4ZGMsMHg1YSwKKyAgMHgyZCwweDQ3LDB4YzUsMHhmYiwweDk0LDB4NWQsMHhiMCwweDQ1LDB4OTcsMHg3ZCwweGE5LDB4ZjEsMHgyZiwweDU0LDB4YjksMHhkMywKKyAgMHgxMSwweGZmLDB4OTAsMHg2OSwweDE0LDB4NWYsMHg3MywweGU4LDB4YzksMHg0NywweGM5LDB4MzQsMHhkOCwweGYxLDB4Y2IsMHg3YywKKyAgMHg5ZiwweGJjLDB4NzIsMHhmNSwweDM0LDB4ZmUsMHhlMiwweGVmLDB4MmYsMHgyYSwweDRmLDB4NzcsMHhhNSwweGY4LDB4N2YsMHg5YSwKKyAgMHgzNCwweGZiLDB4NTAsMHhjYywweGZmLDB4NmMsMHhmOCwweGYzLDB4MmQsMHg1NiwweGRjLDB4NDgsMHhjYiwweDdkLDB4NzIsMHgzNywKKyAgMHhiOSwweGFiLDB4N2EsMHg4NywweDU3LDB4MWQsMHg5NSwweGU3LDB4OTgsMHhlMywweDVmLDB4ODgsMHhkZiwweDVlLDB4YTcsMHg2NSwKKyAgMHg4OCwweDc2LDB4NmMsMHg3NSwweDcwLDB4MGUsMHhkYywweDhkLDB4OTksMHgyMSwweGQxLDB4YzEsMHgyMywweDdhLDB4NWQsMHhlYiwKKyAgMHg0MywweGUyLDB4M2MsMHhmOCwweDgyLDB4OTUsMHgwNiwweDZkLDB4MjMsMHg5MywweDUyLDB4ZTIsMHg1ZiwweDY0LDB4ZjgsMHhjZSwKKyAgMHg0YSwweGM4LDB4MDIsMHgzMSwweDk0LDB4ODQsMHgwMSwweDdjLDB4YjAsMHhhNCwweDU5LDB4OGMsMHhhYSwweDg4LDB4N2YsMHhjMCwKKyAgMHhkNiwweDY4LDB4YzYsMHgzZiwweDcwLDB4MjYsMHg2MywweGJjLDB4YmEsMHhjMywweGRiLDB4MTUsMHg5NCwweGI5LDB4YjcsMHhjNywKKyAgMHg4ZSwweDZhLDB4ZWUsMHg1YiwweDQzLDB4NzgsMHg2YywweGNiLDB4MzQsMHg2NywweDU4LDB4OWMsMHhjMSwweGM2LDB4MjUsMHhmNywKKyAgMHg0MiwweDViLDB4OWUsMHgyOSwweGZlLDB4YzUsMHg2YSwweGZmLDB4MmMsMHhlYywweGY2LDB4ZDksMHgxZiwweGM2LDB4ZmQsMHg1ZiwKKyAgMHhhOCwweDNjLDB4YWYsMHhkOSwweGI1LDB4MmMsMHg0MywweGZmLDB4MGEsMHg2OCwweDcxLDB4NmYsMHhjYywweGVlLDB4YTQsMHhiYiwKKyAgMHg0OSwweGM3LDB4NDMsMHg1OSwweDliLDB4ODksMHgwOSwweGZmLDB4NDgsMHhjZiwweDM0LDB4ZjMsMHhlOCwweDhjLDB4MjUsMHg5OCwKKyAgMHg1ZSwweGE4LDB4YjUsMHg2OCwweDJmLDB4MjQsMHhmMSwweDBmLDB4ZTUsMHgxOSwweDJmLDB4YmIsMHhhYiwweDExLDB4MTEsMHhmZCwKKyAgMHgzMiwweDA1LDB4ZmYsMHhhNCwweGUxLDB4YWYsMHgwZSwweGVmLDB4MGQsMHg0YSwweGJhLDB4MDQsMHg1YiwweDM0LDB4ZWEsMHhiNSwKKyAgMHhlNCwweGYyLDB4NzgsMHg1MCwweDZkLDB4MTEsMHgyMiwweGEyLDB4ZjQsMHhlNiwweDhjLDB4ZWQsMHg4MiwweGNhLDB4YWYsMHg5OCwKKyAgMHhmMCwweDRmLDB4ODYsMHgwZiwweDdhLDB4NjAsMHg5ZSwweDI1LDB4OGIsMHhhNywweGQ5LDB4NzAsMHg0NywweDg0LDB4ODEsMHg3ZiwKKyAgMHg3OCwweGJjLDB4MDksMHgxNSwweGIxLDB4NGEsMHg1NywweDQyLDB4MzcsMHg1YiwweGMyLDB4ZTQsMHg5NCwweGY4LDB4OTcsMHg3NCwKKyAgMHhiOSwweDdhLDB4YWUsMHg5NiwweDM2LDB4NjgsMHg4NCwweDc1LDB4Y2EsMHhiYywweGViLDB4MzYsMHhmMSwweDgxLDB4MzYsMHgxNywKKyAgMHhjZiwweGEzLDB4ZjgsMHgzOSwweGZkLDB4NWMsMHhhYiwweGYyLDB4NjYsMHgxZCwweDM3LDB4ZmIsMHg3ZiwweDg0LDB4ZjMsMHg3MCwKKyAgMHhkOCwweDMxLDB4ZjcsMHhlZiwweDk2LDB4NmMsMHhhYywweDM5LDB4OWYsMHg3YiwweGI5LDB4MTYsMHhiNywweGNkLDB4MmYsMHg3OSwKKyAgMHg2MCwweGM4LDB4MzcsMHg0ZiwweGIzLDB4ZmQsMHg0MSwweGQ4LDB4MDksMHg4NywweGQ1LDB4ZDIsMHhjNSwweGYwLDB4N2IsMHg3MSwKKyAgMHg4NiwweDM5LDB4ZmYsMHhjNywweDFlLDB4MjAsMHg3NiwweDJhLDB4YWYsMHg0MiwweDIzLDB4NzQsMHhhNywweGRhLDB4NDEsMHg2NSwKKyAgMHgzZiwweGFlLDB4NDYsMHg4ZiwweGNmLDB4NmUsMHhiMSwweDNkLDB4NmIsMHhjOSwweGM3LDB4MjcsMHhlYywweGQ4LDB4NWMsMHhiNywKKyAgMHhjNiwweDkyLDB4OTUsMHg1OCwweDRmLDB4YjgsMHhiZCwweGJmLDB4YmYsMHgwNSwweDljLDB4NGIsMHg2NSwweGM1LDB4YzMsMHg2MSwKKyAgMHg5ZSwweGVhLDB4OTEsMHg3MywweDQ5LDB4MzMsMHg2YywweGQ3LDB4ZDAsMHgwMiwweGNkLDB4NGQsMHg0ZiwweDgzLDB4YzYsMHg1YSwKKyAgMHg1YywweDU4LDB4ODUsMHgxMCwweDMzLDB4ZmUsMHgxMSwweDVhLDB4YWEsMHhmOSwweDMyLDB4YTIsMHg5OSwweGI5LDB4MWQsMHhlYywKKyAgMHhkNSwweDNjLDB4NGMsMHgwNiwweGRiLDB4ODUsMHg2NSwweGRhLDB4MjIsMHgxZSwweDYxLDB4Y2MsMHhjMCwweDJmLDB4YTgsMHg2YywKKyAgMHgyMCwweGU5LDB4NDksMHhmYywweGEzLDB4NzQsMHhlNiwweDFlLDB4NjAsMHgzZiwweGQzLDB4OTYsMHgyNCwweDYxLDB4NWIsMHgwMSwKKyAgMHgzZSwweGJmLDB4MzQsMHhlZiwweGY2LDB4NDUsMHg5YiwweGM1LDB4MTksMHhmYSwweDgxLDB4OTAsMHhiYiwweGExLDB4ZjAsMHg2OSwKKyAgMHgzMSwweDk5LDB4ZmYsMHhmMywweDAyLDB4ZTAsMHhhZiwweGVkLDB4MjgsMHg5ZCwweDllLDB4MmEsMHg4ZCwweDg3LDB4YmQsMHg5NCwKKyAgMHg5YSwweGQ4LDB4MjAsMHhlYiwweDQ5LDB4NzEsMHhjOCwweGYyLDB4YTEsMHhiZCwweGEyLDB4NzYsMHg1MiwweDdiLDB4NGUsMHgwYSwKKyAgMHhmZSwweDUxLDB4MjMsMHg5YSwweDFiLDB4OGQsMHg0NywweDkxLDB4YzcsMHgxZiwweGRkLDB4NDIsMHg3YywweGJmLDB4OTUsMHg0MSwKKyAgMHg2NiwweGJhLDB4OTgsMHgyZiwweDhkLDB4NzksMHhkYywweGQ0LDB4ZGEsMHg2OCwweGY2LDB4ZmYsMHg0OCwweGI3LDB4YjksMHg1ZSwKKyAgMHhkNywweDlhLDB4OTgsMHgyNSwweDU0LDB4NWEsMHgwNCwweGFkLDB4YWMsMHhhYywweDUxLDB4MGUsMHhiOSwweDg3LDB4NjMsMHg4MSwKKyAgMHhiMCwweDIxLDB4ZDIsMHgxYSwweDdjLDB4MTksMHhiNiwweDMyLDB4M2EsMHg2NCwweGY2LDB4ZmYsMHgzNCwweGFmLDB4OTAsMHgxZSwKKyAgMHhkNywweDBkLDB4MzcsMHhlYywweDFkLDB4ZjAsMHg3OCwweDQ4LDB4MzUsMHhjYywweDA0LDB4NjksMHg4NywweDg0LDB4ZjgsMHg0NywKKyAgMHhjNSwweDJiLDB4M2IsMHhkNCwweGMyLDB4N2IsMHgxNywweGVkLDB4ZjQsMHg5YiwweGUyLDB4NWYsMHhkNSwweDE0LDB4OWEsMHg2OCwKKyAgMHhmZSwweDY5LDB4Y2IsMHg0YSwweDcyLDB4OWQsMHhiYSwweDhhLDB4NGUsMHhlNywweDMwLDB4MDAsMHhmMSwweDAwLDB4OTksMHg4ZSwKKyAgMHhjMCwweGMwLDB4Y2YsMHg4MSwweDAxLDB4ZmUsMHhjMywweDA2LDB4MTgsMHgzNiwweGM1LDB4YmYsMHhlZSwweDgxLDB4M2YsMHgyMiwKKyAgMHhjOCwweGIxLDB4OTYsMHhjYiwweGRmLDB4ODUsMHgzZiwweDA0LDB4NjYsMHg0NywweDZkLDB4M2YsMHg0NiwweGZjLDB4NzMsMHgzNSwKKyAgMHg3MCwweGViLDB4NzAsMHhlNiwweGIwLDB4ZjgsMHg1ZCwweGU5LDB4NGIsMHgzNiwweGM1LDB4MzcsMHhhYiwweGRlLDB4ZWMsMHhmZiwKKyAgMHhiOSwweDNlLDB4OWMsMHg3NywweDUxLDB4ZDgsMHhjZiwweGZkLDB4ZjMsMHgwMywweDMwLDB4YTYsMHg1NSwweGY2LDB4ZGIsMHg1ZSwKKyAgMHhlMiwweDc4LDB4YzAsMHgzYiwweGVmLDB4MjQsMHg0NywweDQ0LDB4NWMsMHhmMCwweGY2LDB4NmUsMHgzNiwweGZiLDB4N2YsMHhiNCwKKyAgMHhiNCwweDBiLDB4ZGEsMHg1NSwweDU2LDB4MTUsMHhiNSwweGY2LDB4ODgsMHhkNywweGMxLDB4MDcsMHg3MSwweGQ4LDB4YTMsMHg1ZCwKKyAgMHg2NCwweGE1LDB4YTMsMHhkNiwweDYxLDB4NTIsMHhhOSwweDFkLDB4ZGEsMHgzOCwweGI5LDB4ZjAsMHhiZSwweDFlLDB4NTMsMHhmZSwKKyAgMHg2NywweGQ3LDB4ZTQsMHhhNywweDYwLDB4NTcsMHhhOCwweDM4LDB4ODAsMHgzMCwweDJjLDB4MTcsMHhmZSwweGE3LDB4OTIsMHhkZiwKKyAgMHhkZiwweGI2LDB4ZDIsMHg4ZSwweDhmLDB4MWQsMHg5ZSwweGRiLDB4OWYsMHhiOSwweDEwLDB4YTYsMHhkZSwweGIzLDB4YTYsMHgzMywKKyAgMHg3ZiwweDYwLDB4ZTksMHgyMiwweDYyLDB4YzYsMHgxYiwweDQxLDB4NmQsMHg5NywweDVhLDB4ZWMsMHg0NywweDdiLDB4ZWQsMHg1ZSwKKyAgMHg3OCwweGM2LDB4ODAsMHg3OSwweGQ5LDB4MjcsMHgxNSwweDFlLDB4ZmYsMHhhMiwweGY2LDB4YWMsMHhhOSwweGRhLDB4MTMsMHhlNCwKKyAgMHg3ZCwweGVkLDB4YjYsMHhlZiwweGUxLDB4MDksMHg5YSwweDU4LDB4N2YsMHg1ZiwweGFlLDB4OGYsMHhlNywweDU2LDB4MzYsMHg2NiwKKyAgMHhiOCwweGRjLDB4MTIsMHhjZiwweDFmLDB4OGIsMHhlMywweDFmLDB4YTEsMHg1MCwweGNmLDB4OTAsMHhkMiwweDZkLDB4YmUsMHhjNywKKyAgMHhlYiwweGQ0LDB4YzEsMHhlYiwweGI3LDB4NWQsMHhmNywweDc2LDB4YzIsMHgzZiwweGM5LDB4ZjMsMHhiNSwweGM2LDB4YTUsMHg0YSwKKyAgMHhjZCwweDFhLDB4YmUsMHg2NSwweDM5LDB4MDIsMHhkMSwweGY5LDB4ZGMsMHhkZSwweDFjLDB4MzEsMHgzNCwweGIyLDB4YjUsMHg1MywKKyAgMHgyYywweDgxLDB4ZGYsMHhhYiwweDZlLDB4NWYsMHg0NiwweDhmLDB4NzgsMHhkMCwweGY0LDB4M2MsMHg1MSwweDE4LDB4ZjcsMHg1NiwKKyAgMHgyYSwweDg2LDB4NWIsMHgwYywweGI3LDB4NGQsMHgyZiwweDg3LDB4M2QsMHg0YSwweDFjLDB4MDgsMHg4ZCwweDI4LDB4MWYsMHg0MiwKKyAgMHg2NSwweGY0LDB4ZWUsMHg1ZCwweGY4LDB4NTMsMHgxMiwweGZmLDB4OGMsMHhjMiwweDZiLDB4NzQsMHg3ZSwweDQ4LDB4MGEsMHg0ZiwKKyAgMHgzYSwweGFmLDB4NWQsMHhkMSwweDBkLDB4ZmMsMHhiMywweDBmLDB4N2UsMHg2ZSwweGU0LDB4N2IsMHgzNCwweDNkLDB4MjAsMHg1YywKKyAgMHgxNSwweDRhLDB4ZmIsMHg2YywweGEzLDB4NzIsMHgyOCwweDcxLDB4NWUsMHg3YSwweDYxLDB4MTksMHg2OSwweDYxLDB4NzYsMHhkNSwKKyAgMHhjMSwweGEzLDB4NjksMHgzZCwweGQwLDB4ODEsMHhmYSwweGQ0LDB4NTAsMHhjNCwweDNmLDB4YzMsMHhmZCwweDYwLDB4NzEsMHhkMiwKKyAgMHhkZCwweDhkLDB4ZjYsMHgyMSwweDc5LDB4OGYsMHgxOCwweDMyLDB4ZTEsMHgxZiwweGJiLDB4ZDAsMHhhMiwweGZmLDB4ZjAsMHg4NCwKKyAgMHgyNSwweDljLDB4M2QsMHg2NCwweGM0LDB4YmYsMHgyMiwweDJlLDB4YjIsMHg0ZCwweGRhLDB4OWIsMHg1NiwweGEyLDB4MjMsMHhkZSwKKyAgMHg3NiwweDY2LDB4YmMsMHhkOCwweDZiLDB4NTcsMHg2ZSwweGVjLDB4OWEsMHgxMSwweDMyLDB4YzksMHgxZiwweDQyLDB4MWIsMHg1NSwKKyAgMHg5NSwweGExLDB4NzYsMHg2YiwweGU2LDB4ZTcsMHg1MSwweGJmLDB4ZGUsMHg4NSwweDQwLDB4NzEsMHg4NywweGVhLDB4ZDAsMHg0NSwKKyAgMHg0MiwweGFjLDB4YzIsMHg3NiwweDk3LDB4MGEsMHhiZiwweDIyLDB4NjYsMHhmYywweDYzLDB4NTUsMHgwMywweDJkLDB4ZWEsMHgzYywKKyAgMHg5NiwweDE1LDB4ZjYsMHg3MywweGI3LDB4NGYsMHgzNywweDdmLDB4ZmUsMHg2ZCwweGYwLDB4YTUsMHg2MywweDE2LDB4NGYsMHg3MywKKyAgMHg3MiwweGMyLDB4YzcsMHgzYywweDIyLDB4ZWMsMHg2ZiwweDBhLDB4MjUsMHhmMSwweGNmLDB4NGQsMHhkMSwweGRhLDB4NzEsMHg2NSwKKyAgMHgwMSwweDdiLDB4NjAsMHhiNCwweGUwLDB4YmMsMHg3NCwweDE5LDB4YWEsMHg3YSwweDkzLDB4ZjEsMHhhZiwweDQ2LDB4ZjEsMHg5MiwKKyAgMHg3NCwweDVlLDB4ZTMsMHhmOCwweGI5LDB4YTAsMHhjYiwweDg0LDB4N2YsMHgyZSwweGMwLDB4MDksMHhhOSwweDcyLDB4ZDAsMHg3OSwKKyAgMHgzZSwweDY3LDB4ODUsMHhmNCwweGRlLDB4ODYsMHhiMiwweDUzLDB4ZWIsMHg3ZiwweDJjLDB4YmEsMHhjOSwweGQxLDB4NmMsMHgyMywKKyAgMHg3ZSwweDdhLDB4M2UsMHgzNCwweGUwLDB4MmUsMHhjOCwweDVmLDB4ZmMsMHg2YSwweDhlLDB4Y2IsMHgxNCwweGZmLDB4ZmEsMHgwOCwKKyAgMHg0MSwweGU5LDB4YWMsMHg0MSwweGZhLDB4ODUsMHg3ZCwweDQxLDB4ZjMsMHg4YiwweDUwLDB4MTQsMHhjZCwweGVhLDB4MjYsMHgzMywKKyAgMHg2MCwweDdkLDB4MDMsMHg0ZiwweDA0LDB4ZjIsMHg3YywweDEwLDB4NmUsMHg3ZiwweGM0LDB4MWUsMHhhMiwweGFiLDB4ODksMHgyYiwKKyAgMHgxMSwweDdmLDB4OGYsMHhhMCwweGZkLDB4YzUsMHhjMCwweDc5LDB4ODIsMHhjZSwweDIxLDB4NzcsMHhhOSwweDRkLDB4YWEsMHgxMSwKKyAgMHg1ZiwweDFlLDB4Y2EsMHg2ZCwweDUyLDB4NjMsMHhmNiwweDQ1LDB4NjMsMHg1MCwweGIwLDB4MDMsMHgxNSwweDg4LDB4ZGIsMHgxNCwKKyAgMHhmZiwweGZhLDB4MTcsMHhkMiwweGUyLDB4MmYsMHg0MSwweGQ4LDB4NjMsMHg1ZiwweDgxLDB4ZmIsMHhhMSwweGE4LDB4MTcsMHhmMSwKKyAgMHhlNywweDE5LDB4MDQsMHhkMiwweDA2LDB4OWUsMHhmYywweDk0LDB4M2MsMHhjNSwweGVjLDB4OGMsMHhiNiwweDEzLDB4NTcsMHgzMiwKKyAgMHgzZiwweDc5LDB4ZjIsMHg0NywweDEwLDB4ODksMHg1NCwweGVhLDB4OGIsMHhjMywweGYyLDB4MGEsMHg4NCwweGI1LDB4NjUsMHhiOCwKKyAgMHgxZiwweDZhLDB4MWUsMHhlNCwweDAzLDB4N2QsMHg1MiwweDU4LDB4ZmMsMHhiMywweGUzLDB4NDAsMHg5ZiwweDJiLDB4N2IsMHhmMSwKKyAgMHg2NiwweDUxLDB4MzEsMHhjNSwweGJmLDB4N2EsMHhkNCwweDcxLDB4YmUsMHgyYywweDYxLDB4ZGMsMHgwNiwweDdjLDB4NTksMHhlNCwKKyAgMHhmMywweGE0LDB4MDIsMHgwNywweDdiLDB4MzksMHgzZSwweDFjLDB4YzIsMHhjZCwweGY1LDB4NGEsMHg2NCwweDg5LDB4MjYsMHgwZiwKKyAgMHg5YiwweGUyLDB4NWYsMHhkYiwweGI4LDB4NzYsMHhkMywweGQ3LDB4ODYsMHhjNSwweGI1LDB4ZjQsMHgxZCwweDYzLDB4OWIsMHhkZCwKKyAgMHhlOCwweDk0LDB4MGUsMHg0OSwweDcxLDB4ZmYsMHhjZiwweDMwLDB4NWYsMHhmZiwweGIwLDB4MTksMHhmZiwweGE0LDB4NjUsMHhiMSwKKyAgMHhkZCwweDZhLDB4ODEsMHg0ZSwweDQ3LDB4YzUsMHg5ZiwweGUwLDB4N2MsMHhkYywweDA2LDB4M2QsMHhhOCwweDg4LDB4ZDcsMHg0YiwKKyAgMHg4NiwweDIzLDB4ZTgsMHhlMywweGJlLDB4YzAsMHg1MiwweDFjLDB4ZmMsMHhkYSwweDk0LDB4ZmYsMHg4YywweGY4LDB4MDcsMHhjMiwKKyAgMHg0MywweDMzLDB4MzgsMHhjYywweDViLDB4OGIsMHhhZiwweGU5LDB4ZDQsMHgzMywweGI2LDB4MjcsMHgxZCwweDE3LDB4NTEsMHhkNCwKKyAgMHgyZSwweDY4LDB4OTgsMHgzYiwweDk2LDB4OWQsMHg0ZCwweGU4LDB4YmIsMHg1MSwweDAxLDB4OTUsMHhiZSwweGRmLDB4MzcsMHg0NCwKKyAgMHgxZiwweDI1LDB4ZGYsMHg1ZCwweGY1LDB4MDQsMHg0ZiwweDgzLDB4NTksMHg0OSwweDJhLDB4ZDEsMHhjMiwweDlhLDB4Y2UsMHgwNywKKyAgMHg2ZiwweDZiLDB4YmYsMHg2MCwweGQzLDB4NTUsMHhiOSwweDhlLDB4NWMsMHg0OSwweDljLDB4YWYsMHgzYiwweGE5LDB4NTUsMHgxYSwKKyAgMHgwZCwweDNmLDB4MzIsMHhiMiwweGI4LDB4NWMsMHhmZSwweDJkLDB4YmMsMHgyYSwweDU0LDB4OGMsMHhhYywweDc3LDB4ODksMHg1NiwKKyAgMHhmOCwweDE4LDB4YzIsMHhiYSwweDZkLDB4YmUsMHgxOCwweDgxLDB4Y2YsMHhiNCwweDM5LDB4NzcsMHhkOCwweDJhLDB4OWEsMHg3ZSwKKyAgMHg0ZiwweDI2LDB4ZTYsMHg2YiwweDM3LDB4ZjEsMHg2NSwweGIxLDB4NDUsMHhlNCwweGQxLDB4YTYsMHhkOCwweGZhLDB4ZTAsMHhmZSwKKyAgMHgzOSwweDQ5LDB4ZGUsMHhhMSwweGYzLDB4MGMsMHg0NywweDEwLDB4NDEsMHhmYywweDAzLDB4YjYsMHgwZCwweGUyLDB4NjAsMHhlMiwKKyAgMHgzYywweGYyLDB4ZjgsMHhkNywweDI1LDB4YTgsMHg3YywweDBiLDB4NjEsMHhmOSwweDhhLDB4YzgsMHhhMSwweGQ4LDB4MzEsMHg3NCwKKyAgMHhjMiwweGExLDB4ZTUsMHg5NSwweGIxLDB4N2MsMHhiYywweGRmLDB4MDgsMHgyNSwweDdmLDB4YzQsMHhmZCwweDQ2LDB4OTIsMHhmOSwKKyAgMHg5ZiwweDFiLDB4MzYsMHhhMywweGI0LDB4MmMsMHgzZSwweDFlLDB4OTgsMHg1ZCwweDY0LDB4NTUsMHhkNywweDQwLDB4MzEsMHhjYSwKKyAgMHgxMywweDcxLDB4MmEsMHg1OSwweGUzLDB4YjgsMHg4ZCwweGZiLDB4N2YsMHg0ZSwweGMwLDB4MmEsMHg3ZSwweDQ1LDB4YjcsMHhiOCwKKyAgMHg0ZCwweGZlLDB4ZGUsMHhhNywweDFkLDB4YmIsMHhmNCwweDk5LDB4YzMsMHgxYywweGU2LDB4NjUsMHgzYywweDY3LDB4YmMsMHhhZiwKKyAgMHhlNSwweDBhLDB4YzQsMHg1ZiwweGZjLDB4YTAsMHhiMiwweDZhLDB4NzUsMHg3MSwweGI0LDB4NmQsMHgyNSwweGM5LDB4MzMsMHhlMSwKKyAgMHg5ZiwweDIzLDB4NDYsMHhmNiwweDQyLDB4MWQsMHgxZSwweDQzLDB4NjEsMHgyZiwweDc3LDB4ZmIsMHhiNCwweDEzLDB4NWIsMHhlMSwKKyAgMHhlMywweGIxLDB4YzQsMHg4NiwweDYxLDB4N2YsMHg4YiwweGI2LDB4NjIsMHg1MCwweGRlLDB4NDAsMHg2ZSwweDQ4LDB4ZjEsMHhmZiwKKyAgMHg1YywweDYxLDB4ZjMsMHg3OCwweDkyLDB4ZjMsMHgzMCwweGY5LDB4MjgsMHhlNiwweGY2LDB4NTksMHhhOSwweGM2LDB4ZmQsMHgzZiwKKyAgMHhlMywweGVjLDB4YzgsMHhkMiwweGNhLDB4NmUsMHhkYiwweDA4LDB4MDIsMHhhMSwweDg5LDB4ZTcsMHgzNywweGZjLDB4M2YsMHhiZCwKKyAgMHgzYywweGRiLDB4NTksMHhmMCwweDQ5LDB4ZGMsMHhmYiwweGIxLDB4YTQsMHgxMSwweDgxLDB4NTAsMHgyYywweDEwLDB4MjYsMHg0NiwKKyAgMHgwOSwweDRhLDB4NmMsMHg2YSwweGY4LDB4N2YsMHgyNiwweDllLDB4OWYsMHgyYSwweDY3LDB4YjQsMHgwMywweGZlLDB4NzksMHg1YSwKKyAgMHg0OSwweGYwLDB4YzYsMHhjMiwweGI4LDB4N2UsMHgzNCwweDgwLDB4OTAsMHgxYiwweDM1LDB4YWMsMHhmOCwweDY3LDB4MzgsMHhjMCwKKyAgMHhkYywweGI1LDB4YjYsMHg4ZCwweDg0LDB4MjQsMHg5ZSwweDlmLDB4ZmIsMHg3ZiwweDVhLDB4ZWUsMHhjYywweGQyLDB4NzgsMHhiNCwKKyAgMHgwYiwweDVhLDB4MjQsMHg0NCwweDJmLDB4OWIsMHhiMiwweDI1LDB4NjksMHhjMiwweDExLDB4NjQsMHg2ZiwweGYxLDB4NzYsMHhlOCwKKyAgMHhmMiwweDUzLDB4MjksMHhmZSwweDlmLDB4ZTksMHhkMCwweGEyLDB4MjAsMHhmZSwweDUxLDB4ZWUsMHgyOSwweDg0LDB4ZTcsMHhiOSwKKyAgMHg5YiwweDYyLDB4MjMsMHhjYSwweDJiLDB4OWUsMHgzOCwweDY0LDB4MDksMHg5MiwweDRlLDB4ZWUsMHhjMSwweGYwLDB4ZTAsMHgzZiwKKyAgMHg1YywweDk3LDB4ZDgsMHg2ZiwweDIwLDB4MTUsMHhlMiwweGFmLDB4Y2UsMHg2ZiwweGQyLDB4NWMsMHg4MiwweGRhLDB4NWYsMHgwYiwKKyAgMHg1NSwweGNiLDB4NTMsMHhlZiwweDI4LDB4ZTQsMHg4ZSwweDIwLDB4Y2QsMHg3MCwweDhjLDB4MzQsMHhkNiwweDJjLDB4ZDcsMHgwZSwKKyAgMHhlNSwweDY2LDB4YjcsMHgyNiwweGUyLDB4ZWYsMHhlNSwweDk5LDB4M2UsMHg4OCwweDA4LDB4ZTUsMHg1MCwweGMyLDB4NjQsMHg1NSwKKyAgMHgxOSwweDhlLDB4YjksMHgxZCwweDc4LDB4ZDgsMHhjYiwweDA4LDB4YzQsMHg0NCwweGUxLDB4YTAsMHg1NCwweGM2LDB4YWYsMHhhYywKKyAgMHg0YiwweGM0LDB4YmYsMHg0ZSwweGRjLDB4NzQsMHhkZSwweDcyLDB4YjksMHhiYSwweGQyLDB4YmIsMHhjNCwweDA4LDB4N2IsMHg3MSwKKyAgMHhmZCwweGVlLDB4MTUsMHg4ZiwweDczLDB4ZmYsMHg0ZiwweGI1LDB4MmQsMHgyOCwweDVlLDB4ODYsMHhjYiwweDFhLDB4MDIsMHg5YiwKKyAgMHhlMywweGUyLDB4M2YsMHgyNCwweGYzLDB4NzksMHhkMiwweDc2LDB4YzIsMHg2NSwweDA3LDB4MGYsMHgxYiwweGI1LDB4MTUsMHhhYSwKKyAgMHgwNywweGY4LDB4ZmMsMHg0MSwweDU5LDB4ODIsMHhiNywweGMwLDB4ZjAsMHg5ZiwweGVjLDB4ZDQsMHgwZSwweGYzLDB4MmIsMHhiZiwKKyAgMHg4ZiwweGE2LDB4MjcsMHhlNiwweGFmLDB4NTQsMHgxMCwweDdkLDB4NzksMHhlYywweDUzLDB4ZWIsMHg5YSwweDQ5LDB4M2UsMHgwNCwKKyAgMHhhMCwweDQ0LDB4OTAsMHg5OSwweDQ3LDB4Y2QsMHgzOCwweDExLDB4ZjcsMHhmZiwweDY4LDB4MDEsMHg1ZiwweDA5LDB4YzgsMHhjZCwKKyAgMHgyNCwweDJiLDB4NzEsMHgxZSwweGE5LDB4ODQsMHhiMCwweDg3LDB4YTksMHg5ZSwweGZhLDB4ZWMsMHgzZSwweDI5LDB4ZDQsMHhlOCwKKyAgMHhjMCwweGQzLDB4OTQsMHhiZCwweDExLDB4ZGYsMHhiNywweGM4LDB4NzgsMHhkZiwweDdlLDB4ZDYsMHg3OCwweGE3LDB4YjMsMHg1YSwKKyAgMHhjZSwweDI2LDB4ZDksMHhjMiwweGM0LDB4ZmMsMHhiYywweDI5LDB4Y2YsMHg0OCwweGJiLDB4NTUsMHgyMywweGZmLDB4ODcsMHgzYiwKKyAgMHhkNiwweDRhLDB4MzQsMHgzYywweGI2LDB4Y2IsMHhlMSwweDQ5LDB4NWMsMHhkOCwweDFiLDB4NzEsMHhmZCwweDJkLDB4NmQsMHg4NiwKKyAgMHg2MywweGFkLDB4MjMsMHgzZCwweDcxLDB4ZmYsMHhkMCwweDY0LDB4ZWUsMHhkZCwweDcyLDB4NTcsMHg1YiwweDgzLDB4NjIsMHgyMSwKKyAgMHgzNSwweDllLDB4M2YsMHg0ZiwweDRjLDB4NmIsMHg4YSwweDAxLDB4ZGQsMHg5YywweDNmLDB4ZDcsMHhiNiwweDZjLDB4YzEsMHgyYiwKKyAgMHg5YiwweGZmLDB4OGIsMHhjMywweDE0LDB4ZmYsMHg3YSwweDU2LDB4M2IsMHgwYiwweGZiLDB4ZjgsMHgzNiwweDE4LDB4MjIsMHhjNiwKKyAgMHhmYSwweDZjLDB4MjQsMHg5ZCwweDE5LDB4YTcsMHg2MiwweGZlLDB4OWYsMHhkNywweGU5LDB4YjgsMHgxMywweDA3LDB4ZDksMHhmMiwKKyAgMHgzOSwweDEzLDB4ZmUsMHhkOSwweGEyLDB4OGQsMHg0ZCwweDllLDB4MDcsMHgyNSwweDUwLDB4ODMsMHhlYiwweDJmLDB4NTQsMHgwYSwKKyAgMHg3ZiwweGNmLDB4ODEsMHgxMCwweDVhLDB4NTksMHhiMCwweDhlLDB4ODksMHhhNywweGQ0LDB4MDgsMHhiOCwweDMzLDB4NzAsMHhmZCwKKyAgMHg4OSwweDM5LDB4ZmUsMHhhNSwweGVkLDB4ZjcsMHhkYiwweDFiLDB4MjksMHhjZiwweGZmLDB4NjksMHhjNSwweGNmLDB4YjYsMHg4NCwKKyAgMHgzYiwweDgyLDB4NWEsMHg2MywweDg5LDB4NDAsMHg2MywweDcwLDB4NDQsMHhiMywweDA3LDB4ZGIsMHgzZSwweDIwLDB4MTYsMHg5MywKKyAgMHhmZiwweGU3LDB4MWIsMHhjMiwweDc2LDB4OWYsMHg0MywweDJmLDB4NzIsMHhhNSwweDNiLDB4NjMsMHhmNiwweDQyLDB4MzksMHhiMSwKKyAgMHg4YSwweDRkLDB4YjEsMHhjNCwweGI5LDB4MzcsMHhhMCwweDkxLDB4ZjksMHg3NCwweDM5LDB4MGYsMHhlNywweDI3LDB4ZmQsMHgzZiwKKyAgMHg3OSwweGMyLDB4NzYsMHg5MiwweGZmLDB4MWEsMHgzNywweDYzLDB4ZjUsMHgyNywweGY4LDB4NjksMHhiZCwweDk3LDB4NTQsMHhkMCwKKyAgMHhhNiwweDk4LDB4MjMsMHhmNywweDJkLDB4ZDgsMHhkNCwweDk3LDB4YWYsMHhjOSwweGI1LDB4NDQsMHg0ZCwweGM0LDB4M2IsMHhiYSwKKyAgMHgwMiwweGQ3LDB4YTUsMHhiZCwweGM0LDB4ZTYsMHg4ZiwweDk0LDB4ZmMsMHg0YywweDljLDB4MDYsMHg1ZiwweDg2LDB4MTcsMHg0NCwKKyAgMHhlNSwweDMxLDB4NzksMHgxYSwweGJjLDB4MzEsMHhiYywweDIwLDB4OWEsMHhiNSwweDUyLDB4ZmMsMHg4MiwweDFjLDB4NjUsMHhkYiwKKyAgMHg0ZiwweGRiLDB4YzYsMHhkMCwweGMyLDB4OWIsMHhkOCwweDZmLDB4ZjQsMHhhNiwweDJlLDB4YmUsMHg2ZCwweDA2LDB4YjMsMHg3NiwKKyAgMHhhMiwweDc0LDB4ZmQsMHgxOCwweGU1LDB4NDksMHg5NiwweGM5LDB4OWYsMHgzZiwweGE2LDB4N2MsMHhjYSwweDA3LDB4NTEsMHhiMSwKKyAgMHgyZiwweDY5LDB4ZmYsMHhmZSwweGUyLDB4MGIsMHhlNSwweDMyLDB4YWIsMHgzYSwweDY1LDB4YmQsMHg2NCwweGFiLDB4ZDQsMHg4ZSwKKyAgMHgwNiwweDJhLDB4YjksMHhkYSwweGFhLDB4ODQsMHhhMywweGVjLDB4OTYsMHgyMSwweDFjLDB4N2MsMHgwMSwweGJmLDB4ZTEsMHg4OSwKKyAgMHg0MCwweDZmLDB4ODksMHg5MCwweDM4LDB4NWYsMHgzYywweGZmLDB4ZTcsMHgyNSwweGE1LDB4OTgsMHhlMywweGJkLDB4Y2QsMHhmYSwKKyAgMHg3MywweDgwLDB4NjIsMHhlNCwweDliLDB4NmQsMHgyOCwweDdmLDB4ODIsMHg1YiwweGI4LDB4N2MsMHgxOCwweGQ0LDB4OGUsMHhhYiwKKyAgMHhmOSwweDVhLDB4NWIsMHhjNiwweDNkLDB4NDUsMHhlOSwweDEzLDB4ZjMsMHgxMSwweGQxLDB4MjMsMHhhOCwweDJiLDB4ZWUsMHg3NywKKyAgMHhjYywweDI2LDB4M2MsMHhmMCwweDM3LDB4NWQsMHg2ZiwweGY1LDB4NWEsMHgyYSwweGUwLDB4NzEsMHhiOCwweDlmLDB4N2IsMHg4NCwKKyAgMHhlZSwweDI1LDB4YWIsMHhhNCwweDdjLDB4MjYsMHhkZiwweDYzLDB4NDksMHhlNiwweDNmLDB4MTcsMHg0YSwweDA3LDB4YTUsMHhlZCwKKyAgMHgyOCwweDc2LDB4ZjAsMHhmZSwweDZiLDB4OTUsMHhhZCwweDVjLDB4ZmUsMHhlNCwweDkxLDB4NGMsMHhmOCwweDU1LDB4NGMsMHg5ZSwKKyAgMHgxZiwweDgwLDB4YTcsMHg0MiwweDJhLDB4OTMsMHgwYiwweDQ5LDB4NWQsMHhmMiwweDc5LDB4ZDIsMHgzYSwweDgzLDB4ZTMsMHhiZCwKKyAgMHg1NSwweGZhLDB4ZTIsMHhkMSwweDljLDB4MGEsMHgzOCwweDFhLDB4N2IsMHhjZCwweDYyLDB4NzgsMHgyZiwweDE2LDB4NWYsMHhmOCwKKyAgMHgwMCwweDBlLDB4NDQsMHhkZCwweDQxLDB4YjksMHhiZCwweGU5LDB4ODcsMHg2NiwweGZjLDB4YTMsMHg4YywweDc3LDB4YzYsMHhkZCwKKyAgMHgzZSwweGI4LDB4MmMsMHhiZCwweDRiLDB4NzYsMHg4YSwweGRiLDB4YTQsMHg4ZiwweDYzLDB4ZmYsMHhmMCwweDIzLDB4MzYsMHgwNiwKKyAgMHhmYiwweGVkLDB4NzIsMHhmMywweGY3LDB4NGMsMHhmZSwweDFmLDB4NzgsMHgwNCwweDBmLDB4ZGQsMHgwMiwweGFlLDB4OGYsMHg0NiwKKyAgMHgyOCwweGI3LDB4NWUsMHg2ZCwweDUxLDB4YjksMHg0MiwweDNkLDB4MWEsMHg0YiwweDA0LDB4YWEsMHg0NSwweDY5LDB4NWUsMHg1YSwKKyAgMHgyYiwweDg3LDB4YjcsMHg0NCwweDRjLDB4ZmUsMHg5ZiwweDY1LDB4YjAsMHgzYiwweGMwLDB4ZjUsMHhhZiwweDM2LDB4MDIsMHgzMiwKKyAgMHhkNywweDVmLDB4NGUsMHhkNCwweDQ3LDB4ZWYsMHhmMCwweGZjLDB4NWIsMHg1NCwweGM0LDB4Y2EsMHhmMywweGZkLDB4ZjYsMHg3YiwKKyAgMHg1MCwweGEyLDB4MGUsMHgyNywweGYxLDB4Y2YsMHg5NCwweDE5LDB4ZDAsMHgyMywweGNjLDB4ZDAsMHg0OSwweDk4LDB4YWMsMHg4MCwKKyAgMHgxNywweGExLDB4YTQsMHhiNywweGFkLDB4M2QsMHg3YiwweDg1LDB4MTAsMHg0ZiwweDA0LDB4M2EsMHg4MywweDUwLDB4NjEsMHgwNiwKKyAgMHhiMywweDZjLDB4MjYsMHhhMSwweDE0LDB4ZmYsMHgzMywweDVmLDB4OWYsMHhhMiwweDU4LDB4OTgsMHhjMywweGZhLDB4MTYsMHgxZSwKKyAgMHhjMywweDE1LDB4NjIsMHgzYywweGYxLDB4YWMsMHgwZiwweDhkLDB4NGIsMHgxNSwweDY0LDB4MjEsMHhiZCwweDZmLDB4NTUsMHg2MiwKKyAgMHhmOSwweDUxLDB4ZmUsMHg4YywweDU3LDB4ZGYsMHgzYSwweDU4LDB4NzQsMHg1NiwweGZjLDB4MDQsMHhhZCwweGVmLDB4NzksMHgxMSwKKyAgMHhkYywweGVkLDB4MmIsMHhlMCwweDJmLDB4ZDQsMHg1OCwweDFmLDB4OWUsMHg2OCwweGNmLDB4MjUsMHg1MiwweDIzLDB4NGIsMHhlMCwKKyAgMHg5ZiwweDJkLDB4MzcsMHg4ZCwweGMyLDB4MDIsMHg4NywweGVkLDB4ZTAsMHg1ZCwweGU3LDB4MGEsMHgyZSwweDg1LDB4NTAsMHg3ZiwKKyAgMHg5ZCwweGIwLDB4NjksMHhlMiwweDY2LDB4MzgsMHgyNCwweGExLDB4MjIsMHgzYiwweGQ3LDB4MzQsMHg4YSwweGFhLDB4ZWEsMHgxNSwKKyAgMHhlMSwweDY2LDB4MjYsMHgwZSwweGQ3LDB4MjYsMHhmZCwweDJkLDB4YTMsMHhmMCwweDI3LDB4NjksMHgyZSwweDU4LDB4NDEsMHhkYywKKyAgMHgwOCwweDg3LDB4ZDksMHg1YywweDc1LDB4NWEsMHg0MCwweGFjLDB4OTQsMHgwNiwweDg5LDB4ODEsMHg3ZiwweDJlLDB4YjEsMHgwYiwKKyAgMHg0YSwweGE5LDB4ODYsMHhkMCwweDdhLDB4ZDQsMHhlNCwweGZmLDB4ZjksMHgwMiwweGJmLDB4ODEsMHhjOCwweDFjLDB4OGMsMHhkOCwKKyAgMHgxMSwweDI4LDB4MTYsMHhlNSwweGQzLDB4MDAsMHgzMSwweDIyLDB4NjIsMHgzYywweDExLDB4ZmEsMHg5MiwweDhlLDB4MmYsMHhmZSwKKyAgMHgyZCwweDZiLDB4OTgsMHg0NCwweDRkLDB4ZmUsMHgxZiwweDlkLDB4MzQsMHg4MiwweDg0LDB4NzYsMHg3MCwweDNhLDB4NDMsMHhjMSwKKyAgMHgzYiwweDAzLDB4YmUsMHgwMywweGNiLDB4ZDYsMHg1YSwweDM3LDB4NGEsMHhhYSwweGJlLDB4YzgsMHhlNSwweDE5LDB4NTAsMHhjMywKKyAgMHg2YSwweGUxLDB4YzAsMHgyMiwweDk3LDB4M2QsMHhlOSwweDdmLDB4ZDYsMHhkMywweDUwLDB4NjgsMHgwNywweDEwLDB4NDQsMHgzNSwKKyAgMHg3MiwweDdiLDB4MTYsMHg4YSwweGE4LDB4MjUsMHg0MCwweGI2LDB4NDEsMHhhYiwweGQyLDB4YTEsMHhkZiwweDE4LDB4MjYsMHgyMywKKyAgMHhjYSwweDBlLDB4YTksMHgyMywweDhhLDB4ODgsMHgyOCwweDk5LDB4ZmYsMHhhMywweDA5LDB4OWYsMHhjMiwweGFiLDB4N2EsMHg5OSwKKyAgMHhkZCwweDVhLDB4ZDgsMHhkNCwweDg0LDB4ZGEsMHhhNCwweDhjLDB4NWEsMHhhYywweDA1LDB4ZGIsMHhlMCwweDFkLDB4ZTYsMHhkNiwKKyAgMHg2ZiwweDBlLDB4ZTcsMHg4YywweDQ4LDB4MTcsMHhkZSwweDc2LDB4OGYsMHhlMiwweDQyLDB4MGQsMHg5YSwweGUyLDB4NWYsMHhlYiwKKyAgMHg1YSwweDBkLDB4MjcsMHg2YSwweDU0LDB4MWMsMHg4MywweGNiLDB4YzEsMHhhYSwweGQwLDB4NjMsMHhmYSwweGE0LDB4NGIsMHhlYSwKKyAgMHg5NSwweDQwLDB4M2MsMHhmZSwweDc1LDB4ODksMHg1NSwweGZhLDB4OGIsMHg0NywweGNkLDB4ZjksMHhjZiwweGIwLDB4MGQsMHgwZSwKKyAgMHhkZCwweDEzLDB4OTYsMHhhYywweDIxLDB4MzEsMHg5ZiwweDQ2LDB4OTQsMHg3OSwweDkyLDB4YjUsMHgzOSwweDY3LDB4MDQsMHgwZSwKKyAgMHgyMiwweDEwLDB4MzUsMHgxYywweDk1LDB4MjgsMHhkOCwweDgzLDB4Y2UsMHg1NCwweGZjLDB4ZTMsMHg5NCwweGRhLDB4OTgsMHg3ZCwKKyAgMHg5MywweDIzLDB4MjQsMHgzZSwweGEwLDB4MzcsMHg4MiwweGZhLDB4MGIsMHhmMSwweDMxLDB4YjAsMHhjMSwweDBiLDB4MDEsMHhiZSwKKyAgMHg3ZiwweGUwLDB4MTIsMHg0NSwweGMzLDB4N2MsMHgyMywweDg0LDB4Y2QsMHhmMSwweGFmLDB4MjksMHgxYSwweDJlLDB4OGIsMHgwYSwKKyAgMHhkNCwweGUyLDB4YzEsMHhjMSwweDE2LDB4MDcsMHg2NCwweDU4LDB4YTUsMHgyMywweDVhLDB4MmIsMHhhYiwweDhmLDB4MjUsMHhlZSwKKyAgMHg3NiwweGMzLDB4ODMsMHgwZCwweGUwLDB4NGEsMHhmMSwweGZmLDB4NWMsMHgwNywweGFiLDB4OTgsMHhkYSwweGU5LDB4ZjgsMHg4ZSwKKyAgMHhmZiwweDFlLDB4ZjIsMHg2YiwweDk2LDB4YWYsMHgyZSwweGZhLDB4M2IsMHgzMiwweDBkLDB4OWUsMHg2NSwweDNmLDB4MzAsMHgwMiwKKyAgMHg0MywweGQ2LDB4OTcsMHg0MywweGM1LDB4NjgsMHg5NCwweDEzLDB4NzMsMHhmYywweDhiLDB4NDAsMHg2ZiwweGM4LDB4MDUsMHg1NiwKKyAgMHg4YiwweDU4LDB4OGQsMHhlMCwweGJlLDB4YmMsMHhmNiwweGE2LDB4Y2MsMHhhNiwweDAxLDB4YWQsMHhjZiwweDVmLDB4YWUsMHhkYiwKKyAgMHhjYSwweGM1LDB4ODEsMHhkYywweGNmLDB4NDIsMHgxNSwweDQxLDB4ZWIsMHhmYywweDE0LDB4ZmYsMHhjZiwweDRlLDB4ZWQsMHgzMiwKKyAgMHhlYywweDY1LDB4NjksMHg4MywweDA1LDB4YTMsMHhkYSwweDlmLDB4OTUsMHgyYSwweGNkLDB4YTYsMHgxNSwweDljLDB4NTQsMHgyZSwKKyAgMHhjMCwweGRjLDB4N2UsMHhkYiwweDU5LDB4ZjEsMHgzMiwweGJkLDB4YTgsMHg1NCwweDgxLDB4MmQsMHhjNSwweGZmLDB4ODMsMHhmOCwKKyAgMHg2NywweDljLDB4ZDgsMHgxNywweDVhLDB4NTUsMHhiYiwweGNlLDB4ZmQsMHhmZiwweDVjLDB4MWIsMHg2ZSwweDgzLDB4OGIsMHhjYywKKyAgMHg0OCwweDQ0LDB4ZmYsMHg1NCwweDhmLDB4ZTAsMHg0MSwweDU4LDB4MTIsMHhhZSwweDMxLDB4ZTUsMHhmZiwweDA4LDB4OWIsMHhkNCwKKyAgMHg1NywweDEwLDB4ZGYsMHhkMSwweDA2LDB4YzgsMHgyMywweGFiLDB4MjAsMHgxZiwweGRhLDB4NzgsMHgyMiwweGU1LDB4Y2IsMHhiMSwKKyAgMHhiNCwweDgxLDB4NGIsMHhkMCwweDBjLDB4MzMsMHg0MSwweDZlLDB4ZjAsMHgyNCwweGViLDB4YmYsMHg3NCwweGU1LDB4OWYsMHhiOSwKKyAgMHg5MywweDQ3LDB4YTUsMHgxMSwweGY3LDB4MzEsMHhiNSwweDkzLDB4YTMsMHgzYiwweGRkLDB4ZmYsMHhiNCwweGQ0LDB4Y2QsMHg2NiwKKyAgMHgxYSwweGVmLDB4YmIsMHg2MSwweDgzLDB4ZmYsMHhmZSwweGQwLDB4YTEsMHg5NSwweGY2LDB4NjQsMHhmZCwweDVkLDB4OWQsMHg3MiwKKyAgMHgxOCwweDc2LDB4MDQsMHg3ZCwweDVkLDB4YjQsMHgxYywweDQxLDB4YzUsMHhkNiwweDg1LDB4ODUsMHg4NSwweDMyLDB4MmQsMHg1YSwKKyAgMHg0YiwweGJiLDB4YjUsMHg5OCwweDIzLDB4NWEsMHg3OCwweGIyLDB4ZGQsMHhhMSwweGM4LDB4YTksMHhmOSwweDNmLDB4YmIsMHhiNSwKKyAgMHgyZiwweGQ4LDB4OGYsMHg5OCwweGY1LDB4YTMsMHhlZiwweDhkLDB4ZTEsMHg0NiwweDllLDB4Y2IsMHg5NiwweDBjLDB4OTMsMHgyZSwKKyAgMHhlYiwweDE1LDB4NTcsMHg1MSwweDJjLDB4MTAsMHhmNiwweDJlLDB4MmIsMHhkZCwweDg4LDB4ODMsMHgwYiwweDA5LDB4NzksMHg2ZSwKKyAgMHhlMCwweDFmLDB4YWQsMHg0MiwweDlhLDB4YzUsMHgyNiwweDlmLDB4MDIsMHhhYSwweGVkLDB4YzksMHhiNiwweDM1LDB4NzMsMHg3YiwKKyAgMHgxYywweDUxLDB4YTksMHg4MSwweDdmLDB4ODYsMHg2MywweDFlLDB4YTEsMHhkNCwweGZjLDB4ZTcsMHhmMSwweDkwLDB4OWIsMHhhNywKKyAgMHhiNSwweDBjLDB4YzEsMHg4MSwweDY2LDB4NzcsMHg5ZCwweDc1LDB4OTMsMHhkOCwweGE5LDB4OGQsMHgzNywweGZlLDB4NGMsMHg1YiwKKyAgMHgxZiwweDRiLDB4N2MsMHg3NSwweGZmLDB4ZDAsMHhkNiwweDllLDB4OTIsMHhmZiwweGIzLDB4OWMsMHhlZSwweGE2LDB4ZmYsMHhhNCwKKyAgMHhkMSwweDFiLDB4NDgsMHhiMywweGQ2LDB4YTgsMHhhYiwweDNlLDB4N2EsMHg5ZCwweGI4LDB4MWMsMHg3NiwweGI3LDB4Y2YsMHhkMywKKyAgMHgzMiwweDBjLDB4YzcsMHg4ZSwweDU0LDB4YjQsMHg0YywweDZlLDB4NDcsMHhjNCwweDY1LDB4OGUsMHg3ZiwweGVkLDB4MjYsMHg0NSwKKyAgMHhkZiwweGI4LDB4ZDMsMHg0MCwweDNiLDB4Y2EsMHhlOSwweDE4LDB4ZWMsMHg0OSwweGM0LDB4YmYsMHg3NiwweDczLDB4MGYsMHhjNiwKKyAgMHhjNiwweDk0LDB4ZmMsMHgxZiwweDA5LDB4NzYsMHg2YiwweDJhLDB4ZTIsMHgxZiwweDdiLDB4YjMsMHhkMCwweDA0LDB4YWEsMHg1NiwKKyAgMHhhNCwweDc4LDB4NmEsMHhlOSwweDc2LDB4Y2QsMHhhOSwweDY1LDB4MjgsMHhmNiwweGQ3LDB4ODQsMHhlZCwweDFhLDB4ZjUsMHhjYSwKKyAgMHhiOSwweGM0LDB4OWYsMHhmNCwweGZmLDB4YTQsMHhmOSwweDEwLDB4ZmYsMHgxNywweDA5LDB4OTksMHg4YywweDc0LDB4MjEsMHhkZSwKKyAgMHhlYiwweDY2LDB4NzcsMHgzMywweGMzLDB4ZjEsMHg1NSwweDEyLDB4NzcsMHg3YywweDA5LDB4ZDksMHg3YywweDYwLDB4YWEsMHhmZiwKKyAgMHg5YSwweGYyLDB4YjksMHhmNCwweDUzLDB4ZWQsMHgxNSwweDJmLDB4ODIsMHg5YywweDlkLDB4ZTQsMHg4ZiwweDUwLDB4YTUsMHhhZCwKKyAgMHhmMiwweDhhLDB4OWQsMHgwYSwweDg3LDB4M2QsMHg5MywweDc4LDB4MjAsMHhlYywweGIyLDB4NzYsMHhiMywweDk3LDB4ZDcsMHg3ZiwKKyAgMHg5MSwweDI0LDB4ZmUsMHgxOSwweDBhLDB4ZmQsMHg0OSwweGFiLDB4ZjIsMHg1YSwweDhmLDB4Y2IsMHg5YiwweGUwLDB4MDMsMHg5OCwKKyAgMHhhYiwweDRkLDB4ZjMsMHg4YSwweDczLDB4ZTAsMHhiMiwweDUyLDB4YzIsMHhlNywweGUzLDB4ZmEsMHhmOCwweGU2LDB4ZDcsMHhkOSwKKyAgMHgwNiwweGM1LDB4ZDUsMHg2NiwweGZmLDB4MGYsMHgwNCwweDA4LDB4MWEsMHg0ZCwweDZiLDB4ZWMsMHgyYSwweGM0LDB4MGEsMHhjMSwKKyAgMHhiZSwweGE3LDB4NDIsMHg4ZiwweGY3LDB4NDEsMHgwMywweGZmLDB4ODQsMHg3YSwweGYyLDB4NGIsMHhhOCwweGVjLDB4ZjcsMHg5YiwKKyAgMHhlMiwweDVmLDB4YjcsMHgwZiwweGMxLDB4MDYsMHhhZCwweGNiLDB4NGIsMHhiMywweDRiLDB4ZmEsMHgxMSwweDFmLDB4MmUsMHg0NywKKyAgMHhhMCwweDY4LDB4YTksMHg4NSwweGVkLDB4YWEsMHgzMywweDFlLDB4MDgsMHhmMywweGFkLDB4YjgsMHg2NywweDkxLDB4OTIsMHg5ZCwKKyAgMHgxYSwweGZmLDB4NmEsMHhhOSwweGUxLDB4ZjEsMHhjNywweDJjLDB4MmUsMHg3ZiwweDk2LDB4ZDUsMHhlMCwweGVhLDB4MTUsMHgyNiwKKyAgMHhkNiwweDUzLDB4ZDksMHhhZCwweDNjLDB4ZTgsMHhjNSwweDgxLDB4MjksMHhmZSwweDM1LDB4ZjksMHgwYywweGJjLDB4YTUsMHhjZCwKKyAgMHg3YiwweGQ4LDB4MTksMHgyYywweGU4LDB4NmYsMHhiZSwweDlmLDB4OTUsMHg3OSwweGQzLDB4NmYsMHg5OCwweDhlLDB4ZGYsMHg0YiwKKyAgMHgyZCwweDg5LDB4MjcsMHgzNiwweGQ3LDB4Y2QsMHhmMywweGFkLDB4MGYsMHg0ZSwweGVhLDB4NGEsMHg4ZCwweDdmLDB4NzUsMHhjZCwKKyAgMHg1YiwweDZlLDB4NTMsMHg2YSwweDllLDB4ODUsMHhmMSwweGNkLDB4M2MsMHgwZCwweGZlLDB4NTUsMHg5YywweGE2LDB4ZmUsMHgyYywKKyAgMHgzZSwweDVmLDB4ZmEsMHg1OSwweDFkLDB4MDIsMHhhNywweDhmLDB4NTIsMHhmMywweDdmLDB4NDgsMHgxOSwweDM4LDB4ZDksMHhhYiwKKyAgMHgzZSwweDM4LDB4NTEsMHg1YiwweGE2LDB4NjQsMHgzNSwweDE3LDB4YzQsMHhjMiwweDhlLDB4MzYsMHg1NiwweGMwLDB4YjcsMHg2MiwKKyAgMHg1OSwweDllLDB4YjUsMHg1MSwweDM0LDB4ZTcsMHhmZiwweDUwLDB4NDQsMHg0NiwweDA1LDB4OWIsMHhlOCwweDY5LDB4NzEsMHg2NSwKKyAgMHg2MCwweDVkLDB4NjAsMHgyYiwweDkzLDB4NDcsMHg0OCwweDc5LDB4NjAsMHg5ZCwweGFiLDB4YTQsMHg5MSwweGM3LDB4YmYsMHhlOCwKKyAgMHg5ZSwweGI0LDB4NWIsMHgzYSwweDY4LDB4NTcsMHhiNiwweDM5LDB4ZmYsMHg2NywweDMxLDB4YjQsMHgwOSwweDMzLDB4MzYsMHhkMSwKKyAgMHgwYSwweGNiLDB4NDIsMHhkOCwweGExLDB4YWIsMHhmNSwweGIyLDB4NzQsMHg4NywweGFlLDB4MzYsMHg0OSwweGY1LDB4MTMsMHg4MSwKKyAgMHgxYiwweDU1LDB4NDEsMHg1NSwweDllLDB4OTIsMHhmZiwweDIzLDB4MjAsMHg2YywweDY2LDB4MDEsMHg4ZCwweGRjLDB4MjcsMHgzYywKKyAgMHgwNywweGY5LDB4ZTQsMHg0NiwweDhkLDB4MWQsMHgyMywweDZiLDB4ODQsMHg2MiwweGZkLDB4YzYsMHgwNiwweGNmLDB4YzksMHhjNiwKKyAgMHg1ZCwweDliLDB4NjYsMHhhYSwweGQ0LDB4OWMsMHhmZiwweGIzLDB4OGQsMHg2NiwweGMxLDB4MWIsMHhjMSwweDViLDB4NTUsMHhlYiwKKyAgMHg5OCwweGZjLDB4NWQsMHhlYiwweDk3LDB4NGQsMHhiMywweDQzLDB4NzcsMHhkNywweGUxLDB4ZTksMHg3OCwweDgzLDB4MmQsMHg4OCwKKyAgMHg0ZSwweDVhLDB4MjksMHhiZSwweDA3LDB4OWYsMHg4NSwweDRhLDB4NTUsMHg2NywweDZhLDB4ZmUsMHhjZiwweGI2LDB4ZWMsMHg4YiwKKyAgMHhmOSwweDk1LDB4NjAsMHg0OCwweGQ3LDB4NzcsMHgwYywweGIzLDB4NDIsMHgwNiwweDAzLDB4ZmYsMHgxOCwweGY1LDB4NWYsMHgxNywKKyAgMHhlZiwweGMwLDB4MmIsMHhlMSwweDgyLDB4M2UsMHgzMiwweGIxLDB4M2UsMHg5MCwweDc2LDB4ODUsMHhiYywweGRlLDB4NTgsMHhhYSwKKyAgMHg1YSwweDk3LDB4YzIsMHhhMywweGYwLDB4NjUsMHhiMCwweGI0LDB4ZjAsMHhhNiwweDNhLDB4ZjEsMHgyOSwweGZhLDB4MDYsMHhjMiwKKyAgMHg5ZSwweDI1LDB4NjMsMHhlMiwweDE1LDB4ZTksMHhlOCwweGU4LDB4YWMsMHhjZSwweGY1LDB4NjMsMHg0NCwweDMzLDB4ZjksMHg3ZiwKKyAgMHhkNiwweDZhLDB4N2UsMHg0ZiwweDdlLDB4MDAsMHhlZSwweGU5LDB4ZjgsMHhjZiwweGMxLDB4MzUsMHhhZSwweDViLDB4MjEsMHhlZiwKKyAgMHgwZSwweDRiLDB4MTAsMHhiZSwweDgwLDB4MDUsMHhmYywweDdkLDB4NGYsMHhjMiwweDlhLDB4NDAsMHhmMSwweDUxLDB4ZjksMHgyYywKKyAgMHgyOSwweDMyLDB4YzUsMHhiZiwweGQ2LDB4YzIsMHhiYSwweDNjLDB4OTQsMHhjZiwweDgzLDB4YjQsMHg2MiwweGNlLDB4YmYsMHg2NCwKKyAgMHgxNCwweGUwLDB4OTksMHgzZiwweDE4LDB4ODQsMHhmNSwweDFhLDB4Y2EsMHhhYiwweDg3LDB4NzAsMHg3ZCwweGQ2LDB4YTgsMHgwZiwKKyAgMHhiMCwweDM2LDB4MmYsMHgzMSwweGM3LDB4YmYsMHg4ZSwweGQyLDB4NTYsMHg0ZCwweDlkLDB4NWEsMHg5NywweDk3LDB4YmUsMHg4NCwKKyAgMHhmOSwweGY1LDB4NDIsMHhhMCwweGI5LDB4Y2YsMHhiMiwweDc4LDB4ZmMsMHg5ZCwweDBjLDB4NDgsMHg0ZCwweGNjLDB4ZTksMHhjMSwKKyAgMHg4ZCwweDE3LDB4MzAsMHhjNSwweGJmLDB4NjYsMHhiMSwweDAzLDB4N2QsMHhlZSwweDUxLDB4ZTcsMHg0ZSwweGQ5LDB4MDYsMHhlZiwKKyAgMHgzMywweGQ3LDB4NzAsMHhhNiwweDQ0LDB4OTgsMHhmNCwweGFhLDB4NmUsMHhlOCwweGY3LDB4NGIsMHhjNCwweGQ2LDB4NWIsMHgxOSwKKyAgMHhlNiwweGMwLDB4YzYsMHgxYywweGZmLDB4NTIsMHhjNiwweDdkLDB4MTUsMHg0MSwweGRiLDB4Y2UsMHhhNiwweGRmLDB4NzAsMHg3YywKKyAgMHgwOCwweDU5LDB4OWQsMHhiOCwweDBkLDB4MmUsMHg3YSwweDJiLDB4ZTMsMHg4MSwweDQyLDB4NWEsMHgxOSwweDM0LDB4ODAsMHg0MSwKKyAgMHhkMiwweGZmLDB4NzMsMHgzMiwweDdmLDB4NDAsMHhjZiwweDAxLDB4ZWIsMHg5OCwweGY4LDB4MTMsMHhmOCwweDRiLDB4YTQsMHgzNCwKKyAgMHg2MCwweDNkLDB4MjgsMHgzNiwweDQwLDB4MWMsMHhmZiwweDljLDB4YzQsMHhjMSwweDAyLDB4ZWUsMHg1MSwweGQxLDB4NGQsMHhmOCwKKyAgMHg2NywweDg1LDB4MjUsMHhjMCwweDNhLDB4Y2EsMHhlOSwweDZjLDB4NTQsMHhiYiwweDZkLDB4NjAsMHg1NywweGYxLDB4NzQsMHgyZiwKKyAgMHg2MywweDJmLDB4YjIsMHhhMiwweDU4LDB4M2MsMHgwYiwweGYxLDB4N2YsMHhiZCwweDIzLDB4ZWMsMHg4OSwweGE2LDB4ZTQsMHgzZiwKKyAgMHgwNywweGEwLDB4MjgsMHg1NCwweGI0LDB4MzMsMHg3ZCwweDFiLDB4YzMsMHhmOSwweDUwLDB4YzcsMHgzYywweDY3LDB4YTQsMHgzNiwKKyAgMHhkZCwweGM4LDB4NTcsMHgxOSwweDIxLDB4ODgsMHg4OCwweDQyLDB4NzQsMHgyMywweDMxLDB4ZDcsMHg3ZiwweDU5LDB4ODEsMHgwOSwKKyAgMHgyMSwweDY2LDB4OTksMHg4MywweGY3LDB4NDcsMHhmOSwweDAzLDB4YmYsMHgxMiwweDUwLDB4NzEsMHhiYywweDA4LDB4OWQsMHhmYSwKKyAgMHhhMiwweDM5LDB4MWMsMHgxMSwweGU1LDB4NTksMHg3NSwweDVlLDB4N2YsMHg2YSwweDhhLDB4N2YsMHgzZCwweGEwLDB4YWQsMHhiZCwKKyAgMHhiNywweDA4LDB4MTAsMHgwNiwweDc3LDB4ZjIsMHhiNCwweDEzLDB4ZWUsMHg3NiwweDFlLDB4ODIsMHg0MywweGYxLDB4YzQsMHg3OCwKKyAgMHgwMywweDMxLDB4NWEsMHg3ZiwweDUxLDB4YTAsMHg5YiwweGUyLDB4NWYsMHg5NywweGUwLDB4MTIsMHg5OSwweDBiLDB4OGYsMHg3MSwKKyAgMHhiMywweGZkLDB4MTIsMHhmYywweDBlLDB4ZWUsMHhlZSwweGMzLDB4ZjcsMHhiZCwweGVjLDB4NDAsMHhlMCwweDc3LDB4NGUsMHhiYywKKyAgMHg0NCwweDJmLDB4ZGEsMHg1MSwweGEzLDB4MWQsMHg0YiwweDg5LDB4N2YsMHg3ZCwweDAxLDB4YWYsMHhiMywweGQ5LDB4YmUsMHhjNywKKyAgMHhhMiwweDYyLDB4OGYsMHg3NiwweDk0LDB4NTUsMHg0NSwweDMzLDB4MjMsMHhlMiwweDM5LDB4MWUsMHg5MSwweDhjLDB4YTIsMHhiZSwKKyAgMHg3MywweDg1LDB4MDYsMHhkNCwweDUyLDB4NmEsMHg2YiwweDRhLDB4YzEsMHgzZiwweDY3LDB4YTAsMHg5NSwweGQ5LDB4N2QsMHhiNCwKKyAgMHg4YiwweDM4LDB4NjgsMHgxYiwweDczLDB4MWUsMHhhMCwweDNkLDB4ZWEsMHhhNywweDc0LDB4YWYsMHgwMywweGYxLDB4Y2YsMHgxNywKKyAgMHgyNCwweDlmLDB4YjUsMHhlNCwweGQ5LDB4OTcsMHhjYiwweDZiLDB4NTIsMHhmMCwweDRmLDB4MTQsMHg1YSwweDg5LDB4NDMsMHhjYiwKKyAgMHg1MCwweDg5LDB4OTMsMHgzZCwweDBlLDB4Y2UsMHgzZSwweDZhLDB4ZDQsMHhiZiwweDIzLDB4ZmUsMHg5MSwweGNiLDB4ODgsMHhlZSwKKyAgMHg2MiwweDZhLDB4M2QsMHhjOCwweDhhLDB4MTksMHhmZiwweDRjLDB4NzksMHg5NiwweGI2LDB4NDIsMHg5MSwweDJmLDB4YjAsMHhhNSwKKyAgMHhiNSwweDE4LDB4NjEsMHg3MywweDg5LDB4NWUsMHgxZiwweDQ0LDB4ZDgsMHhiMywweDU3LDB4ZTEsMHg3OCwweDMyLDB4N2QsMHg4NiwKKyAgMHhkYSwweGMyLDB4OTYsMHhkOSwweGU1LDB4ZjYsMHg3NCwweDEzLDB4ZmUsMHg5OSwweDcyLDB4MDYsMHgwZSwweGIxLDB4ZjIsMHhiMSwKKyAgMHhjYywweDJlLDB4YjEsMHg4OCwweGJjLDB4MjMsMHhlMSwweDMxLDB4ZDksMHgyZCwweDhlLDB4ZDQsMHg3ZSwweGM2LDB4ZTYsMHg3MSwKKyAgMHgwZiwweGNmLDB4MTksMHgxYSwweDg5LDB4Y2MsMHg5YiwweGZkLDB4OGQsMHg0MCwweDBhLDB4ZmUsMHhkOSwweDA3LDB4NTcsMHgzNiwKKyAgMHhlZCwweGQyLDB4MjcsMHhmNSwweDg4LDB4MTcsMHg4ZCwweGZhLDB4MzgsMHgwNCwweDQyLDB4YTMsMHg3MCwweDk1LDB4Y2QsMHhlYSwKKyAgMHg1ZCwweDM0LDB4MmEsMHgyZiwweDU3LDB4NDYsMHhjOSwweDdlLDB4MWQsMHgwNSwweDkxLDB4MzksMHhmZSwweGY1LDB4MmMsMHg1YywKKyAgMHg5NCwweGRjLDB4OTEsMHhiNSwweDhkLDB4ZTIsMHg2ZiwweGZjLDB4ZGMsMHhiZiwweDYxLDB4MGQsMHgxNywweGNjLDB4ODIsMHg4YiwKKyAgMHgxOSwweDk1LDB4ZmEsMHg5MiwweGVkLDB4NzIsMHhiZCwweDhhLDB4NWYsMHhjNCwweDZiLDB4ZGQsMHg2MiwweGFhLDB4ZmYsMHg4YSwKKyAgMHhhNCwweGE1LDB4ZDMsMHhlZSwweDQxLDB4N2IsMHgxZiwweGE1LDB4YzQsMHhhNiwweGI2LDB4ZjEsMHgzNCwweGIwLDB4MWQsMHg3NiwKKyAgMHgyNywweGUyLDB4MDksMHhkYywweDBmLDB4OWYsMHg5MywweGU5LDB4YWMsMHhhNSwweGRkLDB4ZWUsMHhhYiwweDBiLDB4MTIsMHhiNywKKyAgMHhjOSwweGZmLDB4NTMsMHgwYiwweDFiLDB4MDUsMHhkNSwweDE1LDB4YTgsMHhkOCwweGQ4LDB4ODIsMHhmYiwweGExLDB4NDQsMHhiNywKKyAgMHg1NCwweDEwLDB4YWIsMHhiNCwweDgzLDB4MzksMHhiOSwweGUzLDB4ZTgsMHg4NywweGQwLDB4MDEsMHg4NSwweDIxLDB4NGIsMHgxMSwKKyAgMHg1OSwweDY5LDB4YWUsMHhmZiwweGYyLDB4YmUsMHhkYywweDUxLDB4MzAsMHg1NCwweGJmLDB4MzIsMHg3YiwweDlhLDB4OTEsMHhmZCwKKyAgMHg2YiwweDU5LDB4NzksMHhjMywweDM0LDB4ZDgsMHhkNSwweDUzLDB4Y2MsMHgyMywweDQ0LDB4ZDcsMHgwMSwweDIyLDB4ODQsMHhmMiwKKyAgMHhlZiwweGZjLDB4NWQsMHhiNiwweGI5LDB4ZmUsMHgwYiwweGUwLDB4MWMsMHg3NSwweGY1LDB4NWIsMHg1ZCwweGUyLDB4MzYsMHhmNiwKKyAgMHgyYSwweDU0LDB4MGMsMHg2NywweDRkLDB4MTcsMHg0MSwweGZhLDB4MmMsMHg3YywweDFmLDB4MmYsMHg3YiwweGQ3LDB4ZTAsMHgxNCwKKyAgMHhlYywweDI0LDB4Y2UsMHgxMiwweGYxLDB4MWUsMHg3MywweGZkLDB4YmIsMHg3NCwweGE5LDB4YjAsMHhhYSwweGRmLDB4YjYsMHgyNSwKKyAgMHhlNiwweDM2LDB4ZWMsMHgyZiwweDZlLDB4YTgsMHhiOSwweDU0LDB4N2IsMHg1NSwweGMxLDB4MmIsMHhkYiwweDFmLDB4ZGYsMHgwOSwKKyAgMHg3ZiwweDlhLDB4M2MsMHg5ZiwweDY2LDB4MDYsMHg1MywweGYyLDB4OWYsMHhmYiwweDcxLDB4ZmQsMHhkZCwweDRjLDB4MmEsMHgyZiwKKyAgMHgyOCwweDA0LDB4ZWUsMHgxZiwweDQzLDB4NDUsMHg3MCwweGM0LDB4ZjAsMHhiZiwweDJkLDB4MDksMHhlNywweDk0LDB4OTMsMHgyMywKKyAgMHg1MCwweDFhLDB4YjUsMHhlYSwweGRmLDB4NGIsMHhhZCwweGZmLDB4NWEsMHgyZCwweDZkLDB4ZDEsMHhlYiwweGJjLDB4ODQsMHhkNywKKyAgMHhjZiwweGNlLDB4ZTIsMHg4OSwweDQwLDB4MjcsMHhhNSwweGY1LDB4ODgsMHg3ZiwweGRhLDB4ZGMsMHhmZSwweDRkLDB4YjAsMHg1NiwKKyAgMHhjOCwweGQ3LDB4ZTksMHhhMCwweGM1LDB4MWMsMHhmZiwweDdhLDB4MDIsMHhmZSwweGQ5LDB4N2YsMHg0YiwweDg4LDB4OWUsMHg1OCwKKyAgMHgzZCwweGNkLDB4NzAsMHhmYiwweDY0LDB4MjAsMHhlYywweGM5LDB4NWQsMHhiMywweDdhLDB4N2EsMHg1NCwweDdlLDB4OTQsMHg1OCwKKyAgMHg4NCwweDI3LDB4OTgsMHhlYSwweGZiLDB4NDEsMHg3ZCwweDRhLDB4ZmQsMHhkNywweDExLDB4ZDgsMHhhOCwweDNiLDB4ZGUsMHhhMiwKKyAgMHg4NCwweDE0LDB4MzMsMHhjMywweDlmLDB4MjYsMHgyYywweGViLDB4YTUsMHhjZiwweDczLDB4ZmIsMHgyYiwweGNjLDB4ODEsMHg0MSwKKyAgMHgzMCwweGU0LDB4NDUsMHgyMCwweDcxLDB4NGQsMHhmZSwweDhmLDB4M2UsMHhiZiwweGRiLDB4MWEsMHhmZCwweGRhLDB4M2MsMHhjMiwKKyAgMHhkZCwweDNlLDB4OTksMHg1ZCwweDA1LDB4YzMsMHg5ZSwweDgzLDB4MjEsMHgxZSwweDExLDB4YjMsMHhjYywweDY3LDB4ZWYsMHgwYSwKKyAgMHhhNSwweDJjLDB4ZjMsMHg4YywweDY4LDB4OGUsMHg3ZiwweDlkLDB4YjIsMHgwZiwweGNmLDB4MmUsMHg4MywweDdmLDB4NjksMHg5NiwKKyAgMHg0ZiwweDY5LDB4M2MsMHhlYywweDk1LDB4MTUsMHhlMCwweDY5LDB4MTgsMHgxZSwweDAzLDB4ZjYsMHg5YywweDkyLDB4MDIsMHhhYywKKyAgMHgzMiwweDNkLDB4YWIsMHhmOSwweGYxLDB4NmIsMHhmMiwweDdmLDB4ODIsMHg5NSwweGRhLDB4ZTIsMHgwZCwweDA1LDB4NjcsMHhkOCwKKyAgMHg4NywweDY4LDB4ZTYsMHg1YiwweDZmLDB4ZTAsMHhmNSwweGVmLDB4ZDUsMHg4ZiwweDZhLDB4NGIsMHgzNiwweDhhLDB4MzMsMHg3YywKKyAgMHgwNywweDFhLDB4ZGQsMHg1ZSwweGRiLDB4NTMsMHg4MiwweDI5LDB4ZmUsMHgwNSwweDc3LDB4YTAsMHhkMSwweGU0LDB4NmMsMHhhMCwKKyAgMHg0ZiwweDdmLDB4ZTMsMHgwYywweGUxLDB4ZmUsMHgwNywweGRhLDB4ZWUsMHg0MSwweGZkLDB4OGIsMHg4OCwweDQ4LDB4ZGUsMHhkYywKKyAgMHg4YSwweGZiLDB4NjcsMHhiMCwweGMzLDB4MmIsMHg2ZiwweDE2LDB4NTMsMHhmMiwweDdmLDB4MTQsMHg5YywweDU2LDB4ZWIsMHgwOCwKKyAgMHhiYSwweDg3LDB4ZjAsMHgzNSwweDlkLDB4NWEsMHhkZSwweDIwLDB4YTksMHg4NCwweGRkLDB4YTIsMHg1MSwweGFmLDB4MzQsMHgyNCwKKyAgMHhiNCwweDUwLDB4M2IsMHhmNywweGZmLDB4YWMsMHgzNiwweGNiLDB4MWYsMHhiNCwweDQ3LDB4NGEsMHhiOCwweDkwLDB4NzksMHhjYywKKyAgMHg3MCwweDA0LDB4ZTUsMHg5ZCwweDIwLDB4YjksMHhiMCwweDlkLDB4ZmIsMHg3ZiwweDcyLDB4YzksMHgyYSwweDg1LDB4M2IsMHg4MiwKKyAgMHg2ZSwweDljLDB4NjMsMHhjNiwweDNmLDB4OTksMHgzZSwweDFhLDB4MTEsMHg3OCwweGI0LDB4MGIsMHg4NSwweGQ4LDB4YjAsMHgxMSwKKyAgMHhmNiwweDkyLDB4NWQsMHgxYywweDExLDB4YzUsMHhmMCwweDVlLDB4YzQsMHg0MCwweGJjLDB4ZjIsMHgzYSwweDUzLDB4ZmMsMHhlYiwKKyAgMHgzYywweGZkLDB4NWMsMHg1OCwweGMwLDB4OWQsMHgzYywweDlmLDB4MWIsMHhmZSwweDlmLDB4NTksMHg1YywweGFkLDB4ZmYsMHg5NCwKKyAgMHg4NywweGU5LDB4MzcsMHg4OSwweGZmLDB4Y2QsMHhhOCwweGZmLDB4YzIsMHg5ZiwweDY2LDB4NWMsMHg5MywweGZmLDB4NTMsMHhhYSwKKyAgMHhkZCwweDc1LDB4YWMsMHhlMCwweDdjLDB4ZDcsMHgwMSwweDdjLDB4MTEsMHgzYSwweDU4LDB4NzMsMHgwOSwweGE3LDB4YjksMHgzNSwKKyAgMHhkYiwweGVmLDB4YzUsMHgzOSwweGRhLDB4NjEsMHhhYiwweGRiLDB4YjMsMHhlMiwweDRkLDB4MzAsMHhlNywweDNmLDB4MGYsMHg0MywKKyAgMHgwZiwweDhhLDB4NTksMHg4YSwweGRhLDB4OWMsMHg3NSwweDIxLDB4MGMsMHhhMywweGNjLDB4MWUsMHg4NSwweDFlLDB4YmIsMHgxZCwKKyAgMHg2YywweGFiLDB4YzksMHgxNiwweDBmLDB4NDcsMHg0NCwweDc0LDB4ZDUsMHgzZCwweDU5LDB4ZTYsMHhmYywweDlmLDB4OGMsMHhkZCwKKyAgMHg5MiwweGVhLDB4OTMsMHgyNywweDkzLDB4ZTYsMHg1MCwweDIzLDB4YWMsMHhhOCwweDJiLDB4Y2YsMHgyMywweGZkLDB4MTIsMHg1ZSwKKyAgMHhjMSwweGY3LDB4YjUsMHg0YiwweDZjLDB4MGIsMHg1NSwweDM1LDB4OWEsMHg2ZCwweDQ5LDB4ODksMHg3ZiwweDI5LDB4YmIsMHgwNSwKKyAgMHg3YiwweDVkLDB4MmIsMHg4YSwweDFkLDB4YzQsMHg0YiwweDNjLDB4MTEsMHhjOCwweGYzLDB4ODEsMHhiNiwweDliLDB4ZDksMHgzNSwKKyAgMHg5NCwweDNmLDB4ZGIsMHhiNCwweGU3LDB4NjEsMHg5OSwweDk3LDB4MDYsMHg2NywweDk4LDB4ZTIsMHg1ZiwweDUzLDB4ZmUsMHhhYywKKyAgMHg5ZCwweDZkLDB4NzQsMHgzNSwweGNjLDB4ZGEsMHgyYywweDNlLDB4YzcsMHhiMywweGQ5LDB4NzksMHhmZSwweGYzLDB4MDcsMHhkMiwKKyAgMHg1OSwweGU4LDB4ZDYsMHg5NiwweDA0LDB4ZTUsMHhlOSwweDhlLDB4MGYsMHhhMywweDZlLDB4NmQsMHhmMSwweDUzLDB4OTMsMHgxYywKKyAgMHg2NiwweGZjLDB4ODMsMHg2OCwweDY3LDB4YmYsMHg3NiwweGQ3LDB4YTYsMHg5YSwweDIxLDB4M2YsMHhjZiwweDVlLDB4NTgsMHg4MiwKKyAgMHg2OCwweGQwLDB4YzgsMHgwNywweGJiLDB4NGUsMHgxMSwweDVmLDB4ODcsMHhiNywweDQyLDB4ZmIsMHg4NiwweDZkLDB4OTMsMHg1MywKKyAgMHhmMiwweDdmLDB4YjYsMHg0OCwweDkxLDB4OGMsMHhjYSwweGZjLDB4YjUsMHhjZCwweDYyLDB4YmUsMHg5MSwweDZkLDB4NmUsMHhlMywKKyAgMHhmYiwweDZkLDB4MmMsMHhjOCwweDk3LDB4ZGQsMHg4OCwweDQ4LDB4NTYsMHhjZSwweDQxLDB4ZjksMHg2YywweDMxLDB4ZmIsMHg3ZiwKKyAgMHg5NCwweDc1LDB4NzQsMHgxNiwweDBiLDB4OWMsMHgyMiwweGU1LDB4ZDAsMHgyYSwweDk0LDB4YjAsMHhlZiwweDllLDB4YjYsMHgwZiwKKyAgMHhhYiwweGZiLDB4NjMsMHhmMSwweGFmLDB4ZGIsMHhiNCwweGJiLDB4YmYsMHg1OSwweGMyLDB4ZTQsMHg2OCwweGJhLDB4ZDksMHhmZiwKKyAgMHg1MywweGFiLDB4NmQsMHgwMCwweDY3LDB4MTQsMHg2NiwweDkzLDB4MTksMHg0YSwweDkzLDB4ODAsMHg2MiwweGNhLDB4ODEsMHg2OCwKKyAgMHhkOSwweDkwLDB4Y2YsMHg1MywweGM5LDB4MzcsMHhkMiwweDllLDB4NmMsMHg3NiwweDQ2LDB4MTcsMHhlNSwweGE2LDB4ZjgsMHg3ZiwKKyAgMHhjYSwweGE0LDB4NGQsMHhjMiwweDJjLDB4YWYsMHhhMywweDNjLDB4NmIsMHgzMiwweDFlLDB4Y2QsMHhlMiwweGRlLDB4ODUsMHhkZSwKKyAgMHhlYywweDkzLDB4YzAsMHhjYiwweGMwLDB4ZTUsMHhlNSwweGU0LDB4M2YsMHhkMywweDU1LDB4NWEsMHg3MSwweGEzLDB4ZWMsMHgyNSwKKyAgMHhmNSwweGE2LDB4ZmMsMHhlNywweGViLDB4ZjAsMHhkOCwweDJlLDB4ODgsMHg1YSwweDk3LDB4OGEsMHg2NSwweDA2LDB4ZWMsMHg5MSwKKyAgMHg1NywweDhhLDB4ZWYsMHg0YSwweDU3LDB4NzksMHhkYSwweGYzLDB4MDksMHhmOSwweDYxLDB4NzIsMHhiYywweDY5LDB4YzEsMHg2OSwKKyAgMHgxYywweDE0LDB4OTksMHhmMSwweDRmLDB4ZmEsMHg0NywweDc4LDB4NmMsMHg1MSwweDA4LDB4MGYsMHg3MywweGZkLDB4ZGUsMHg2NywKKyAgMHhhOCwweGI5LDB4ZGQsMHgzYywweDFmLDB4MjYsMHg1YSwweGQwLDB4YzMsMHg1ZCwweGNkLDB4NzUsMHg0YiwweDA2LDB4NGQsMHhmNSwKKyAgMHg1ZiwweDkwLDB4ZjYsMHgwNywweDM4LDB4ZDEsMHg1YywweDMxLDB4NjQsMHhmZCwweDUwLDB4M2MsMHgwMywweDQ3LDB4ODMsMHg5NSwKKyAgMHhhNywweDlkLDB4NDYsMHhmZCwweDcyLDB4MzMsMHhkYSwweGVmLDB4MjcsMHhjNCwweDMyLDB4NzYsMHg5NSwweDU1LDB4ZjksMHhhYywKKyAgMHgxZiwweDBhLDB4NjYsMHhmYywweGIzLDB4YjksMHhhMywweGY5LDB4NWMsMHhmMSwweDMwLDB4ZmQsMHgwZSwweDM5LDB4MTYsMHhmOSwKKyAgMHgyMywweDM4LDB4ODcsMHgyYywweDVlLDB4NWUsMHhmZiwweDI1LDB4ZTQsMHhmNywweGNiLDB4NzcsMHg5MiwweDVjLDB4ZjUsMHgyNSwKKyAgMHhhMSwweDE4LDB4MzIsMHg3ZiwweDkwLDB4NmQsMHhjNiwweDNmLDB4M2IsMHhhNSwweGQ1LDB4NmUsMHgxNCwweDUzLDB4NWEsMHhmYSwKKyAgMHhmMSwweGM2LDB4MzUsMHhmMCwweGMwLDB4NmIsMHgzNCwweDE2LDB4ZTYsMHg0MywweGZjLDB4NzMsMHgwZiwweDUxLDB4OWUsMHg3YywKKyAgMHg1OSwweDI5LDB4NWUsMHg0ZCwweDNkLDB4NTksMHg2MCwweGMyLDB4M2YsMHhiNSwweGUwLDB4ZjcsMHgzOCwweDc1LDB4OWEsMHg5OSwKKyAgMHgxZSwweDBkLDB4YTIsMHhiZSwweGUzLDB4MzQsMHgwMiwweDg3LDB4ZDUsMHgxZCwweDVjLDB4ZmUsMHhhOCwweGM0LDB4YjIsMHhhMSwKKyAgMHhkYiwweGU1LDB4NzQsMHg2NSwweDM4LDB4MDgsMHg0ZCwweGVjLDB4Y2YsMHg2ZCwweDUzLDB4NTYsMHg0MSwweDlmLDB4YWYsMHhjMiwKKyAgMHg2ZiwweDBkLDB4ZGEsMHgzZiwweDYwLDB4ODcsMHg1MCwweDFlLDB4NWEsMHg3YiwweDBjLDB4N2YsMHgxNywweGRhLDB4OGYsMHhjMSwKKyAgMHg4MiwweGFmLDB4NGIsMHhlMywweGFjLDB4ZjIsMHhiYywweGI1LDB4YmQsMHhhMCwweGM4LDB4ODQsMHg3ZiwweDNlLDB4ODEsMHg2MSwKKyAgMHg1YSwweGQ5LDB4MzcsMHgyYiwweDM4LDB4MjksMHgxYSwweGNiLDB4ZmYsMHgwOSwweDhhLDB4MjMsMHhkYSwweDM4LDB4MzMsMHhlYSwKKyAgMHg5MSwweDNmLDB4YzksMHhkZCwweDVkLDB4OWQsMHhjNSwweDZjLDB4YmYsMHhkOCwweDZhLDB4Y2UsMHhmZiwweDE5LDB4NTUsMHgzZiwKKyAgMHgxNSwweDRhLDB4ZjUsMHg4MCwweDE3LDB4MmYsMHgxYSwweGZhLDB4NmUsMHg3NCwweDJiLDB4OWUsMHgyZiwweGY4LDB4YjksMHg2ZSwKKyAgMHg1MywweDQ0LDB4MTcsMHg5YywweDk3LDB4NGEsMHhmOSwweDdmLDB4YzgsMHg4NCwweDdmLDB4ZTAsMHg3YiwweDUyLDB4YWIsMHhkNywKKyAgMHhhZSwweGQzLDB4Y2QsMHg0ZCwweDQ1LDB4YzAsMHhlMywweDE3LDB4OGIsMHhmNiwweGY5LDB4NzEsMHhmZCwweDFiLDB4MWYsMHhkNCwKKyAgMHhlNSwweGNkLDB4ZDksMHgwNSwweGQwLDB4YjMsMHgwNSwweDBmLDB4YzIsMHhkYSwweDI2LDB4NTMsMHhmYywweDRiLDB4MjgsMHhmNCwKKyAgMHg3NSwweGMxLDB4MzIsMHhlZSwweGZkLDB4NzgsMHg5NiwweGZiLDB4N2YsMHhiOCwweGJmLDB4N2QsMHg0NCwweGRiLDB4ZGIsMHg2OCwKKyAgMHgwYywweGZlLDB4MjEsMHhlMywweDQ1LDB4M2MsMHgzOCwweDM3LDB4NzYsMHhhNSwweDliLDB4ZjEsMHg4ZiwweDEzLDB4OTgsMHhiYSwKKyAgMHg2YywweDc4LDB4YTEsMHhlMiwweGFmLDB4MDMsMHg1YywweDlmLDB4MDgsMHhhMiwweDQxLDB4ODQsMHhkOSwweDVjLDB4ZGYsMHg4MSwKKyAgMHgxZiwweDg0LDB4MzAsMHg4NCwweGUwLDB4NDYsMHg2NSwweGI1LDB4M2YsMHhjMSwweGJmLDB4YzEsMHhmZCwweDNmLDB4MWYsMHgxMSwKKyAgMHhiNywweDllLDB4ZTUsMHg0NywweGIzLDB4ZWIsMHg2MywweDU4LDB4MzAsMHhjMCwweGRmLDB4MTcsMHhjNiwweGVmLDB4MjksMHhkMSwKKyAgMHg5NywweGY4LDB4ZTUsMHg0MiwweGY4LDB4OTAsMHhlNywweDU3LDB4YWMsMHgzMSwweGUzLDB4OWYsMHg5YiwweDQ2LDB4ZTEsMHg0YSwKKyAgMHgzNSwweGFhLDB4MmQsMHgyNiwweGVjLDB4ZTYsMHhmYSwweGViLDB4MDQsMHhlZSwweDk2LDB4NGIsMHhmNCwweGJjLDB4NWEsMHhjNSwKKyAgMHgzMywweGE4LDB4YjksMHhmZiwweDY3LDB4MDEsMHgyYywweGYxLDB4OGIsMHgwZSwweDEzLDB4ZmUsMHhiOSwweDQyLDB4MGUsMHhjMywKKyAgMHhkYywweGE4LDB4NmQsMHgxOCwweDYxLDB4ZDIsMHg1ZiwweGY4LDB4NmUsMHgxOSwweDQ1LDB4ZjksMHhjMywweDgxLDB4OTAsMHg2ZCwKKyAgMHgwYywweDgxLDB4ZDAsMHg0OSwweDRlLDB4MGQsMHg3NCwweDAyLDB4N2YsMHg0YSwweGUyLDB4OWYsMHg5MSwweDUwLDB4MGIsMHg4YSwKKyAgMHgxYywweGI5LDB4MGIsMHg4ZCwweGIwLDB4MzYsMHg1NiwweGUyLDB4MGIsMHhmNCwweDIwLDB4Y2MsMHg0MiwweDQ1LDB4Y2YsMHg1NywKKyAgMHgyMCwweDhhLDB4NTAsMHgxMCwweGExLDB4NzIsMHgzMCwweDI1LDB4ZmYsMHg3OSwweDgwLDB4ZjksMHhmZCwweDJhLDB4OGYsMHgwNiwKKyAgMHhkNiwweGExLDB4ZDksMHhlZiwweGQ0LDB4MWMsMHhkYywweGFjLDB4ZDgsMHg0YSwweDBjLDB4M2MsMHhhYywweDQzLDB4OTAsMHhjZiwKKyAgMHg1NywweDg4LDB4YzcsMHgxNCwweGZmLDB4NDIsMHhkOCwweGM5LDB4NjYsMHhlOCwweDcyLDB4MDcsMHg3MSwweDZhLDB4ZGMsMHhkYiwKKyAgMHgxYywweDA4LDB4YzMsMHgwOCwweDY5LDB4ODMsMHgwNywweDdiLDB4NTEsMHg3ZiwweDQ1LDB4MGQsMHg4YiwweDBmLDB4ZWYsMHg5ZiwKKyAgMHhjYywweGZmLDB4ZDEsMHgyNiwweGM3LDB4YjMsMHg5MSwweDlkLDB4ZTIsMHhmNywweDcwLDB4N2QsMHgyYSwweGZhLDB4NzksMHg3ZSwKKyAgMHg5NCwweGY0LDB4YjEsMHg2MCwweDA0LDB4NDYsMHhkMSwweDM0LDB4NjMsMHhkZCwweGI1LDB4NGUsMHg0MSwweGY0LDB4YTYsMHhlMCwKKyAgMHgxZiwweDFlLDB4ZWQsMHhiMiwweGU5LDB4MWMsMHhmNiwweDAwLDB4YmUsMHgyNiwweGNmLDB4NGYsMHg4ZSwweGU3LDB4NDcsMHg3ZCwKKyAgMHhhMSwweDVkLDB4MGUsMHg1NiwweGY5LDB4NmMsMHg5MSwweGQ0LDB4ZmEsMHg3NywweGUxLDB4OWMsMHg4YSwweGJiLDB4NmIsMHg2YiwKKyAgMHhlYywweDNjLDB4OWUsMHhiNiwweDg1LDB4NzMsMHhhYywweDRhLDB4M2MsMHgxZiwweGVmLDB4OGMsMHg4YSwweDFiLDB4Y2YsMHg2NywKKyAgMHg2ZCwweDZjLDB4NzIsMHhhNSwweGY4LDB4N2YsMHhmNiwweGQ2LDB4NzIsMHhmNCwweDJiLDB4MmUsMHhkMSwweDcwLDB4ZmYsMHgwYywKKyAgMHg2NiwweDhlLDB4YTIsMHhhMiwweDhmLDB4ZTcsMHg2ZiwweDlmLDB4ODEsMHhkZCwweGFjLDB4NjQsMHgzOSwweDBkLDB4YTQsMHhlMCwKKyAgMHg5ZiwweDE1LDB4YjAsMHg0MywweDczLDB4ZjYsMHhjYSwweDRlLDB4ZDIsMHgxNywweDVmLDB4MTYsMHhjYiwweGRhLDB4NzgsMHhlMiwKKyAgMHgwYSwweGY5LDB4MTAsMHg1ZSwweDI4LDB4MmMsMHgwOSwweDNhLDB4NWMsMHg5NiwweGQ0LDB4ZmEsMHhmNywweDVkLDB4NDEsMHg1ZSwKKyAgMHhmZCwweDRkLDB4YmMsMHgxYywweDBmLDB4MGMsMHg1ZCwweGNmLDB4ZjksMHg3MCwweDc2LDB4YzUsMHhlMiwweDQxLDB4NmYsMHgwYiwKKyAgMHgyZiwweDM3LDB4MTcsMHg4NywweGU4LDB4Y2EsMHhmNCwweDNjLDB4OTMsMHhmZiwweDg3LDB4YTcsMHhjMSwweDU0LDB4YmMsMHg2NiwKKyAgMHgyYiwweDE0LDB4N2IsMHg3ZCwweGVmLDB4ZjMsMHhlYSwweDUxLDB4OTcsMHhiOCwweDE2LDB4M2UsMHgwYiwweDk3LDB4MjMsMHhmZSwKKyAgMHgyOSwweDg4LDB4YjAsMHg3MywweGFjLDB4YTIsMHg0NSwweDBhLDB4OGIsMHhkOSwweDY2LDB4ZmMsMHgwMywweDU3LDB4ODUsMHhhYSwKKyAgMHg1ZSwweDliLDB4MmEsMHgwZSwweGUyLDB4YjIsMHgyYywweGE4LDB4YzYsMHhkNywweGZjLDB4MjksMHg1YywweDI0LDB4ODYsMHg3ZiwKKyAgMHg2YywweDBjLDB4MmUsMHhiOCwweGFhLDB4OTgsMHg2ZCwweGY3LDB4MzUsMHhmZSwweDFmLDB4OWUsMHgxNiwweDg1LDB4ZjMsMHg4MywKKyAgMHhmOCwweDIxLDB4MmEsMHhiNCwweDhjLDB4MWUsMHhiOSwweDc4LDB4YzIsMHg1ZiwweDFkLDB4ZmIsMHgzNCwweDBmLDB4NzQsMHg1ZCwKKyAgMHg1MywweGZmLDB4YmUsMHg0YiwweGRhLDB4YzAsMHg5MywweDdjLDB4MTQsMHhmYSwweGI3LDB4NTAsMHhjYywweGYxLDB4Y2YsMHhhZiwKKyAgMHhkOSwweDJlLDB4YjQsMHgxZiwweDMzLDB4NzgsMHgyMSwweGVhLDB4MWEsMHgxZSwweDU4LDB4OGYsMHhhNiwweGU0LDB4M2YsMHg0ZiwKKyAgMHg4MywweDFkLDB4Y2QsMHhmOSwweGQxLDB4NDUsMHhmNSwweGU5LDB4MWIsMHgxMSwweGVmLDB4NGQsMHg1ZiwweDk2LDB4NzEsMHg1YiwKKyAgMHgzNiwweDRmLDB4MDQsMHg5YSwweDdlLDB4YWEsMHg4ZCwweDI3LDB4M2UsMHhhZCwweDYxLDB4MzMsMHhhMywweDE5LDB4YTksMHhmOCwKKyAgMHg4NywweDlmLDB4MjYsMHg5NSwweDhiLDB4NzEsMHg1MCwweGYwLDB4N2MsMHg0NSwweDM5LDB4ZGUsMHgzNiwweGVjLDB4YWYsMHhlYiwKKyAgMHg1ZCwweGU0LDB4OTMsMHhiNSwweDRkLDB4NTAsMHhhZiwweGQzLDB4NDIsMHhiZiwweDE5LDB4ZmYsMHg3NCwweGMxLDB4MTUsMHgyYiwKKyAgMHgxZSwweDIyLDB4OWYsMHhkOCwweDBlLDB4MDcsMHhhMSwweDMyLDB4MTQsMHhjZiwweGZmLDB4YTksMHg2YywweGI0LDB4ODUsMHhjNCwKKyAgMHgwZiwweGM5LDB4NDEsMHg2ZCwweDRmLDB4MTAsMHhhZiwweDk4LDB4ZjEsMHg0ZiwweDE0LDB4NDYsMHgxMSwweDYxLDB4ZDgsMHg5YSwKKyAgMHgwYSwweDBjLDB4ZmUsMHgxZiwweGM1LDB4YzYsMHg2YSwweDI2LDB4ZWEsMHhkZiwweGM1LDB4YTgsMHgzNCwweDQ2LDB4NjcsMHgxMCwKKyAgMHhkYywweDVhLDB4ZDcsMHhmOCwweDdmLDB4NzgsMHhkYSwweDczLDB4N2IsMHhhYywweGRhLDB4Y2IsMHg4YiwweGZhLDB4YjEsMHhkZiwKKyAgMHg1MCwweDk0LDB4ZGMsMHgwZCwweGEyLDB4YjUsMHhiMCwweDc5LDB4ZjcsMHg1ZiwweGMzLDB4ZmYsMHhiMywweDFjLDB4NzYsMHhmYiwKKyAgMHhlYywweGQ1LDB4ZjIsMHg2NiwweDUyLDB4YTgsMHhiZSwweDg1LDB4ZjgsMHhjNCwweGMyLDB4ZGQsMHgwZSwweGNmLDB4YzcsMHhmYywKKyAgMHgwZiwweDFmLDB4NDAsMHg4YiwweGQ3LDB4ZGUsMHg0MCwweDM3LDB4OWIsMHhlYiwweGJmLDB4MDQsMHg1ZSwweDFkLDB4NjYsMHhkNywKKyAgMHgxNiwweDZkLDB4NjgsMHgyZCwweDU0LDB4OWUsMHhjNCwweDY5LDB4MGIsMHg4MywweDllLDB4MjEsMHhkYSwweDAyLDB4NTksMHgzMSwKKyAgMHhmZiwweGNmLDB4MzMsMHgzMCwweGIzLDB4OTYsMHg5ZSwweDRjLDB4ZjEsMHhmZiwweGE0LDB4YzUsMHhiMiwweDdmLDB4NzksMHg3YywKKyAgMHg2NywweDAzLDB4YzcsMHhkYiwweGRjLDB4MGQsMHhiMiwweDQ1LDB4ZTMsMHhmOSwweGNmLDB4ZDksMHg3ZiwweDg0LDB4NjcsMHhmNCwKKyAgMHhmYywweDA2LDB4N2EsMHg2ZiwweDRhLDB4ZmQsMHg5NywweDZmLDB4MjIsMHhkYiwweDk2LDB4ZTcsMHg5ZiwweDRjLDB4OGIsMHg4NSwKKyAgMHhiZCwweDYyLDB4ZmUsMHgwNywweDUxLDB4YzcsMHgwNywweDI5LDB4MDcsMHhhYiwweDZlLDB4ZjYsMHhmZiwweGRjLDB4MzQsMHg4NCwKKyAgMHhlOCwweGM1LDB4YTgsMHg3NiwweGZmLDB4MWMsMHg3ZSwweGNjLDB4ZDMsMHhlYSwweDEyLDB4ODEsMHhiMCwweDg5LDB4YzIsMHhmZiwKKyAgMHg3ZiwweDRjLDB4ZTEsMHhmZiwweDQ5LDB4MWIsMHg4MiwweGMzLDB4ZDQsMHgwOCwweDkzLDB4Y2QsMHg4MSwweDRmLDB4YTQsMHgwNSwKKyAgMHg4OCwweDFmLDB4NWUsMHgxZCwweDkyLDB4YzYsMHg3MywweDhkLDB4ZjksMHhlNywweGI1LDB4MDcsMHhhNCwweDUyLDB4MmQsMHg3MywKKyAgMHgzMCwweDg1LDB4ZmYsMHgyNywweDFhLDB4MzgsMHhhMSwweDk1LDB4ODAsMHgxYywweDEyLDB4N2YsMHgwMCwweDExLDB4NTIsMHgwMiwKKyAgMHg5OSwweGNkLDB4ZDksMHhhNywweGI0LDB4MWUsMHgwNCwweDQyLDB4MzIsMHg0MywweDc5LDB4ZDIsMHhhMywweGRhLDB4MjksMHhmNSwKKyAgMHg1YiwweDUyLDB4ZjAsMHg4ZiwweGRhLDB4MTgsMHhhYiwweDc2LDB4NGYsMHg4MywweDJkLDB4NDYsMHg5YSwweGI3LDB4YTcsMHgzZiwKKyAgMHhiNCwweDVkLDB4NzUsMHhjNiwweGUyLDB4NWYsMHg1YiwweDJjLDB4M2UsMHg0ZiwweDA2LDB4YWYsMHg3ZiwweDRmLDB4ZTIsMHg5ZiwKKyAgMHhlNiwweGRjLDB4NWYsMHhmOSwweDhjLDB4ZDUsMHg1ZSwweGFlLDB4YjUsMHg5MCwweDEyLDB4NmQsMHg1MSwweDEwLDB4OTIsMHhmOSwKKyAgMHhlNCwweDk0LDB4NjcsMHgwNCwweGYxLDB4N2MsMHg3MiwweDczLDB4ZmQsMHgxNywweDFjLDB4OTAsMHg3OCwweDFhLDB4OGYsMHhmOCwKKyAgMHg3NSwweDk0LDB4YzYsMHgyNSwweDNlLDB4NWIsMHhhMiwweGZlLDB4OWQsMHgwZiwweDc4LDB4YzYsMHgzYiwweGRhLDB4MGIsMHhkNywKKyAgMHhlMCwweDFmLDB4Y2UsMHhmZiwweGIzLDB4YTEsMHhlOSwweDc1LDB4MTUsMHhmMSwweGYwLDB4YzMsMHgxOSwweDg5LDB4ZmEsMHhmNywKKyAgMHg5OCwweGZmLDB4ODcsMHgwZiwweDlhLDB4NTIsMHhmZCwweDNmLDB4NjMsMHgzZSwweDIzLDB4YzgsMHg5OCwweDBmLDB4MGUsMHg1YywKKyAgMHhmNiwweDRjLDB4NWMsMHg3ZiwweDI1LDB4MDIsMHhjNiwweDk1LDB4YTgsMHhjZSwweDAzLDB4YWYsMHg2OCwweDExLDB4OWIsMHhmMywKKyAgMHg5ZiwweDFkLDB4YjAsMHg1ZiwweDQyLDB4YjQsMHgzMywweGVjLDB4MmYsMHg4NywweDNkLDB4NTAsMHgxYywweGU2LDB4ZjksMHg2YSwKKyAgMHg4NCwweDA3LDB4YzIsMHgxNiwweDg1LDB4YzgsMHgwNSwweDU4LDB4MTcsMHgyOCwweDY4LDB4NzYsMHgwYywweGE3LDB4YzQsMHhiZiwKKyAgMHgzOCwweGZmLDB4NDYsMHhhMSwweGJlLDB4YTgsMHg3MCwweDYxLDB4MDYsMHg5NywweGNmLDB4YjUsMHg4ZCwweGFlLDB4NzQsMHgxZSwKKyAgMHg5OCwweDMwLDB4ZWEsMHg1MywweDBlLDB4YzMsMHg1NiwweGI1LDB4ZTQsMHgzOCwweGRkLDB4NDYsMHhjYywweGY5LDB4Y2YsMHg1MywKKyAgMHhiNSwweDVkLDB4MmMsMHg5ZiwweDQ3LDB4YWIsMHhiZCwweDNjLDB4MzAsMHgwNCwweDc5LDB4MGQsMHhlNCwweDVkLDB4NmQsMHg4ZCwKKyAgMHhjMiwweDAzLDB4ZDksMHhlNCwweDBmLDB4YjAsMHg0YSwweDlhLDB4YWUsMHgyMSwweDQyLDB4NzAsMHg5OCwweGYwLDB4Y2YsMHhiNCwKKyAgMHhkMCwweDk3LDB4YjEsMHg2YywweGU3LDB4NjksMHhmMCwweDY3LDB4YjYsMHhjMCwweDk3LDB4YjksMHg1MiwweGJjLDB4YTIsMHhiZSwKKyAgMHgxMSwweGJiLDB4ZjIsMHgzNiwweGY5LDB4OTQsMHg1NSwweDg1LDB4NTAsMHhiZiwweGE0LDB4ZTQsMHgzZiwweGIzLDB4Y2YsMHgyNCwKKyAgMHg0MywweDdhLDB4ODQsMHhiOCwweDE4LDB4ZDEsMHgwYywweDMxLDB4NzIsMHg5NSwweGM1LDB4ZTQsMHg0OSwweGVlLDB4MDUsMHg2MSwKKyAgMHgxZSwweDVmLDB4MjgsMHg3MywweGZkLDB4ZDcsMHhhNywweGRhLDB4NTUsMHgzNiwweDk3LDB4YTcsMHgxNSwweGVkLDB4MjEsMHg2ZiwKKyAgMHhhMCwweDIxLDB4NWYsMHgxYywweGNiLDB4N2YsMHhhZSwweDhhLDB4ZTUsMHgzZiwweGJmLDB4ODcsMHg4NiwweGZjLDB4OTIsMHg3MSwKKyAgMHhkMSwweDljLDB4ZmYsMHhmYywweDc0LDB4ZjMsMHhhZSwweGM5LDB4ODgsMHg1ZSwweDdlLDB4ZGEsMHhhZCwweGEwLDB4ZmQsMHg3NSwKKyAgMHhhYiwweDI3LDB4ZTMsMHg3ZiwweDg4LDB4OWIsMHg2MSwweDA3LDB4NjcsMHgwNCwweDdhLDB4OTQsMHg5YywweDAwLDB4N2YsMHhmMCwKKyAgMHhiNiwweDg4LDB4YmMsMHg5NCwweGE0LDB4ZTQsMHgzZiwweDMzLDB4MDMsMHhlZCwweDNjLDB4NGMsMHhkYSwweDc5LDB4MjEsMHhiYywKKyAgMHg0NiwweDYzLDB4ZjksMHg0ZSwweDBmLDB4ZjAsMHgyYiwweDI3LDB4MTAsMHgwMSwweGNlLDB4ZDQsMHg3MCwweDYwLDB4ZjYsMHhmZiwKKyAgMHhmMCwweDZjLDB4MWYsMHhlMCwweGQ1LDB4ZGYsMHg4MCwweGY2LDB4NTcsMHhhMSwweDRmLDB4ZTAsMHhmMiwweDY3LDB4NmYsMHhjYywKKyAgMHhmZiwweDMzLDB4MGMsMHhhZCwweDljLDB4NDgsMHg2MSwweGFhLDB4ZGYsMHg5YywweGZmLDB4YmMsMHgwZiwweGJmLDB4N2UsMHgzNiwKKyAgMHgyZiwweGYyLDB4NjIsMHg5YywweGU2LDB4NDgsMHg0MywweGZkLDB4YzUsMHhmOSwweDU4LDB4ZjgsMHhmYiwweDdlLDB4NmIsMHg0NCwKKyAgMHg3YSwweDg3LDB4MmIsMHg5YSwweGVlLDB4OTQsMHg3YywweGE0LDB4MTEsMHgzYSwweDVlLDB4Y2QsMHgyZiwweDcyLDB4YjcsMHgwZiwKKyAgMHg0ZiwweDFiLDB4NGIsMHgxNiwweGMyLDB4ZTMsMHg0MSwweDFiLDB4ZDMsMHgyYSwweDE5LDB4YWUsMHg4ZiwweGI5LDB4ZmUsMHhlYiwKKyAgMHgxMiwweDdjLDB4NDksMHgxMSwweGU0LDB4OGMsMHhkOSwweDU0LDB4YWUsMHhlNiwweDM0LDB4MmIsMHgyZiwweDAyLDB4ZTcsMHhmZSwKKyAgMHg5ZiwweGFjLDB4NTEsMHgzYywweDVmLDB4ODcsMHg5NSwweDUyLDB4YzUsMHgzYSwweDk2LDB4ZWEsMHhmZiwweDUxLDB4ZjYsMHhmNiwKKyAgMHhkYiwweDc1LDB4NzksMHg4MSwweGM1LDB4Y2UsMHhkZSwweGMxLDB4ZmQsMHhlMCwweDMwLDB4ZjIsMHg5ZiwweDhkLDB4ZmEsMHgxZCwKKyAgMHhmMiwweDgxLDB4MWEsMHhhOCwweGIzLDB4NGYsMHhhNiwweGVkLDB4YzQsMHhlNCwweGZmLDB4MTEsMHg5YywweDg4LDB4OGUsMHhlYywKKyAgMHg1YywweDNiLDB4ZGIsMHhiOSwweDlhLDB4ZjMsMHg1YSwweGMyLDB4ZDksMHgwMywweGI0LDB4MmQsMHg5NiwweDM4LDB4MWQsMHg4NSwKKyAgMHgxNiwweGIwLDB4MDcsMHg2OSwweGI3LDB4M2YsMHhkNSwweGZmLDB4YjMsMHg1ZCwweGYwLDB4ZjUsMHhjYSwweDJlLDB4YmYsMHg0YSwKKyAgMHgxZSwweDQ3LDB4MWQsMHg2ZiwweDcxLDB4ZGIsMHgwNywweDk0LDB4YWQsMHg3OSwweGI4LDB4MDMsMHhkZCwweDQ0LDB4MjcsMHgyYywKKyAgMHgyMywweGM0LDB4YWUsMHhmMSwweGZmLDB4ZmMsMHgyNCwweGM2LDB4MDYsMHhkMCwweDRkLDB4NTQsMHhlMywweDM1LDB4YjMsMHhjMiwKKyAgMHgzYywweDdmLDB4NWIsMHg3NSwweGYzLDB4ODEsMHgwZSwweDA3LDB4MzQsMHgzNywweDU4LDB4YmIsMHg5YiwweGNjLDB4ZjgsMHhlNywKKyAgMHg1MiwweGVkLDB4OTcsMHgxYywweGU2LDB4ODUsMHg2MywweGZhLDB4NWQsMHgyYiwweGRlLDB4YzksMHhmMywweDdiLDB4MzksMHhmZSwKKyAgMHgzOSwweDhmLDB4NTcsMHhjNiwweDFjLDB4NTUsMHg4MCwweGYyLDB4YzcsMHhlNCwweGZmLDB4OTksMHg3MiwweDA1LDB4NjEsMHhmOSwKKyAgMHhkYywweDgzLDB4NTksMHg2NywweGM1LDB4OGEsMHhmMCwweDQ5LDB4YTgsMHgyYSwweGI0LDB4MWUsMHgxMCwweGRkLDB4ZDIsMHg2MSwKKyAgMHg4ZSwweDlmLDB4N2IsMHg2YSwweGNlLDB4YzEsMHg5NywweDZjLDB4YWUsMHg4YSwweDc4LDB4YzAsMHhlYywweGZmLDB4ZjksMHg5NCwKKyAgMHhiNCwweGIxLDB4ODIsMHhiMywweGY0LDB4MmMsMHg1OSwweDIwLDB4MDUsMHgwNiwweDlkLDB4OTQsMHg2ZSwweGM0LDB4MDcsMHg2YiwKKyAgMHgzNCwweGUyLDB4NWYsMHhmNiwweGQzLDB4YmMsMHg1MCwweDRlLDB4NDUsMHhlMCwweDY3LDB4ZjYsMHhmZiwweDhjLDB4ZDAsMHgxNywKKyAgMHg0OSwweDIxLDB4OGYsMHg4NywweGUyLDB4NDEsMHgzMywweGMwLDB4MWYsMHg4MSwweGFlLDB4NDYsMHg4NywweDExLDB4OGYsMHg3OCwKKyAgMHgzZCwweDYzLDB4MmYsMHgxNCwweDgyLDB4MGMsMHhjNCwweDFjLDB4ZmYsMHhmYSwweGFkLDB4ZjQsMHgyMiwweDJjLDB4YzMsMHhmOSwKKyAgMHhjYSwweDBhLDB4NzgsMHg5ZSwweGEyLDB4N2QsMHgxNywweGM2LDB4ZmIsMHhiNywweDE4LDB4ZjEsMHhjNCwweGVjLDB4NjgsMHhmNSwKKyAgMHg1ZSwweGIwLDB4ZTcsMHhhMywweGEwLDB4MzMsMHhmOSwweDdmLDB4ZDIsMHhmZSwweGEyLDB4YmUsMHg4YSwweDVmLDB4NjcsMHg3MSwKKyAgMHg5OCwweGFjLDB4YzgsMHhjNSwweGFmLDB4NWYsMHhlYiwweDY0LDB4OTMsMHg2NiwweDkwLDB4ODgsMHg2MiwweGM0LDB4NWYsMHgzZSwKKyAgMHg4MiwweGYxLDB4ZjQsMHhiMiwweDNhLDB4ZGIsMHhmMywweGQ3LDB4ZjgsMHg3ZiwweGRlLDB4MGQsMHgyZCwweGQwLDB4OGIsMHg0NywKKyAgMHgxNywweGUxLDB4MDAsMHg2NiwweGY5LDB4NmMsMHg4MywweGI3LDB4N2MsMHhhMSwweDVkLDB4NjIsMHgwNiwweDExLDB4ZDAsMHgxOCwKKyAgMHhiYywweDE3LDB4NDIsMHg4OSwweDNkLDB4NjYsMHhhZSwweGZmLDB4ODIsMHg5MCwweGY2LDB4YjEsMHg2NCwweGFjLDB4ZjYsMHgwMCwKKyAgMHg2YSwweDQzLDB4NDQsMHgzYiwweDIxLDB4NzEsMHgwNiwweGQ3LDB4MDgsMHhiMSwweDdjLDB4ZmIsMHgwZiwweGExLDB4OGMsMHg1ZCwKKyAgMHg5MywweGZmLDB4NjMsMHg4NSwweDM2LDB4YmQsMHhlMCwweDA0LDB4OGMsMHhkYSwweDJiLDB4NzgsMHhmYywweGY0LDB4MTEsMHhkYSwKKyAgMHhkMywweGZhLDB4NzUsMHhhZCwweGE3LDB4YzEsMHg4OCwweDg3LDB4N2UsMHgwOCwweDNiLDB4YTYsMHg3NiwweGY4LDB4ZTUsMHhiMCwKKyAgMHhkZiwweDFjLDB4ZmYsMHhiYSwweGRiLDB4NTUsMHhjMCwweGQ0LDB4MTMsMHgxNiwweDBlLDB4N2IsMHhkMCwweDMwLDB4ZTcsMHg4MSwKKyAgMHg0NSwweDA3LDB4MjcsMHg0NiwweDMwLDB4ZjAsMHhhMSwweGJhLDB4MTUsMHgwYSwweDQzLDB4ODcsMHhlOCwweDc1LDB4NjMsMHgyOSwKKyAgMHhmZSwweDlmLDB4ZjUsMHg4MywweGVhLDB4NzAsMHhkZCwweDRhLDB4ZmIsMHgzYSwweGQ2LDB4Y2MsMHgxMCwweGVkLDB4OWMsMHgyMCwKKyAgMHgzNywweDcwLDB4ODksMHhjNCwweGViLDB4YTEsMHhmZSwweGEwLDB4YmQsMHhjYywweGYyLDB4NDMsMHhmMiwweGRmLDB4YTUsMHg5ZiwKKyAgMHgzMCwweGYzLDB4ZmYsMHhjMCwweGZiLDB4ODEsMHhmMCwweDcwLDB4NTYsMHg1OCwweDVlLDB4MDcsMHhhZiwweGFhLDB4MTUsMHg5ZCwKKyAgMHhkNiwweDdjLDB4OTEsMHg2YSwweDlmLDB4ODEsMHg0YiwweGZmLDB4ZmIsMHhmOSwweDM1LDB4MDMsMHhmMCwweDNlLDB4Y2MsMHhkMSwKKyAgMHg2YywweGY5LDB4MjksMHhmMSwweGFmLDB4Y2QsMHg3MCwweDU5LDB4OTksMHhkZiwweDZmLDB4MWIsMHgyZCwweDU4LDB4ODAsMHg2NiwKKyAgMHgwMiwweGMyLDB4ODAsMHg4NywweGM0LDB4MzEsMHg5ZSwweDYxLDB4NjgsMHhjNCwweDA3LDB4ZDUsMHhiZCwweGJjLDB4YjQsMHhlNywKKyAgMHg1NCwweDRlLDB4MmEsMHhmZSwweGY5LDB4YmQsMHhkZiwweDc1LDB4NmMsMHg2ZCwweDU4LDB4N2MsMHg0MCwweDdmLDB4MTIsMHhmNywKKyAgMHhlNywweGNkLDB4OGMsMHgxMywweDMxLDB4MTksMHhlNywweDMxLDB4ZTcsMHhmZCwweDE5LDB4ODcsMHhhMCwweDJjLDB4NzIsMHhmMywKKyAgMHhkYSwweGE2LDB4NmIsMHhmYywweDNmLDB4OTAsMHg3ZiwweGMyLDB4MzEsMHhjNywweDNmLDB4MTUsMHg5ZSwweDQ1LDB4ZmMsMHg5MywKKyAgMHg4NSwweGY2LDB4MTcsMHg1ZSwweDMxLDB4ZTQsMHhlNywweDcxLDB4NTgsMHgyMywweGJkLDB4YTQsMHhhMywweGZkLDB4NjgsMHhjNiwKKyAgMHgzZiwweGZiLDB4ZTEsMHg5ZiwweGQ5LDB4OTYsMHg2MSwweGNiLDB4NGEsMHg3MiwweDc3LDB4MjMsMHg4NywweDc5LDB4ODcsMHhlYSwKKyAgMHgxMSwweGY2LDB4YWMsMHg2NiwweDQ2LDB4ZGEsMHhjZiwweDE1LDB4OGUsMHg4OCwweDQ2LDB4ZTQsMHg4YiwweGQ5LDB4MjksMHhmOCwKKyAgMHg0NywweDZhLDB4ZDIsMHg1NCwweDdkLDB4MjEsMHhkZiwweDZmLDB4M2MsMHhmZSwweDZlLDB4ODQsMHgxMSwweGZkLDB4NzEsMHhmZiwKKyAgMHhiMywweGQ2LDB4YTQsMHgxNywweDllLDB4OTAsMHhjYiwweGFmLDB4MzMsMHhlMywweDlmLDB4MWUsMHg3OCwweDU3LDB4NzMsMHgzMSwKKyAgMHg2YiwweGE4LDB4YTYsMHgxZSwweGRlLDB4NTUsMHgyYiwweDgzLDB4NzEsMHhkOCwweDYzLDB4ZTQsMHhmZiwweDdjLDB4MDQsMHhhZiwKKyAgMHg5ZiwweDc4LDB4YjksMHhjYiwweGY2LDB4ODIsMHg5YywweGUyLDB4ZmYsMHg2MSwweDYzLDB4YWUsMHg0YSwweDI1LDB4MmQsMHg1NiwKKyAgMHgwZiwweDVlLDB4NDksMHhmMCwweDdkLDB4YTMsMHhlYSwweDI1LDB4MWEsMHhmMywweGZmLDB4YzAsMHg1OCwweGFkLDB4NjEsMHhhMSwKKyAgMHhhNywweGUwLDB4MWYsMHg3MiwweDgwLDB4NTUsMHgzNiwweDU4LDB4MTUsMHhiOSwweGQ5LDB4NzIsMHgwMCwweGE2LDB4NjksMHg4YiwKKyAgMHg4MywweGMyLDB4MTksMHg3NiwweDQwLDB4OTksMHgyMCwweGJhLDB4ZDEsMHg2MywweGYyLDB4ZGMsMHg4NCwweDdmLDB4NmUsMHg1NywKKyAgMHg1YSwweDU4LDB4NDksMHhmZCwweDQ0LDB4ZmUsMHg0OSwweDQzLDB4NzEsMHhiYiwweGZkLDB4Y2YsMHhhNCwweDQ1LDB4N2YsMHgxOSwKKyAgMHgxNSwweDMxLDB4ZjksMHgyNCwweGYwLDB4YTEsMHg2ZSwweGQ3LDB4ZGIsMHg3YSwweDRjLDB4ZmMsMHg2MywweDc5LDB4NjksMHg4NSwKKyAgMHhhNCwweDY1LDB4ZjIsMHgwYywweGNkLDB4YzEsMHg2OSwweDdmLDB4NWEsMHgyNCwweDY3LDB4MWQsMHhlZSwweDg3LDB4ZTMsMHhiMCwKKyAgMHgwYSwweDk2LDB4ZjEsMHgwYywweGRlLDB4MzMsMHg5YywweGI4LDB4YTYsMHhmYSwweGQwLDB4NDYsMHg0ZiwweDZhLDB4ZmMsMHg4YiwKKyAgMHhlMywweDgxLDB4NTgsMHhmZSwweDBmLDB4MTQsMHgzNywweDVjLDB4N2YsMHgyZiwweGY5LDB4MjMsMHhhYywweGQyLDB4MGIsMHgwZCwKKyAgMHg2MCwweGMwLDB4MTMsMHhjZiwweDdjLDB4NmQsMHhhZSwweDE0LDB4ZmMsMHg1MywweDBmLDB4YmMsMHhjYywweGNhLDB4Y2EsMHgwOCwKKyAgMHgwZiwweGM0LDB4NTQsMHgwMiwweDQ1LDB4ZDgsMHgwMywweDAzLDB4ODgsMHg4OCwweDI2LDB4YjEsMHgxYywweDllLDB4ODgsMHhiYiwKKyAgMHhlNywweDlhLDB4ZjgsMHhkNywweDRkLDB4YzcsMHhjOSwweDY1LDB4MTQsMHg4MywweGI2LDB4NGQsMHgwNSwweDFmLDB4NTAsMHgwZSwKKyAgMHg4NCwweGUyLDB4N2MsMHgzOCwweGM2LDB4NmIsMHhmNiwweDUzLDB4Y2UsMHgwOCwweGI0LDB4NWUsMHgyOSwweDMwLDB4ZTMsMHg5ZiwKKyAgMHg5MywweGYwLDB4MjcsMHg2MSwweGVlLDB4OWQsMHhjZSwweGM3LDB4YzUsMHhlNSwweDA4LDB4MGIsMHg2NywweDc5LDB4YWQsMHg2ZiwKKyAgMHgyMiwweDcwLDB4M2EsMHhhYywweDk1LDB4NmEsMHgwMywweGZjLDB4MWYsMHg1ZSwweDM2LDB4MWMsMHgyOSwweDYyLDB4NmEsMHhmZCwKKyAgMHg1NywweDgwLDB4MjcsMHgwZCwweGFlLDB4MTEsMHhmMywweDIzLDB4NWQsMHg1MCwweDgyLDB4NjgsMHgwNywweGM1LDB4MmMsMHhlMywKKyAgMHg2NiwweDExLDB4NWIsMHgxNiwweGNkLDB4ZWIsMHgyMSwweDNjLDB4MjIsMHg0NiwweDhlLDB4OTgsMHhmOCwweGM3LDB4MDYsMHg2MCwKKyAgMHhiYiwweGE0LDB4N2UsMHgxMywweDg1LDB4NmEsMHg2ZCwweDdlLDB4MjMsMHhjMiwweDNjLDB4MDcsMHhjMiwweDFlLDB4N2YsMHg5MywKKyAgMHg2YSwweGE0LDB4M2QsMHgwZiwweGEwLDB4OGQsMHhjOCwweDEzLDB4ODEsMHgzYywweGE2LDB4ZjgsMHhkNywweGU0LDB4NjcsMHhjOCwKKyAgMHhmMywweGJlLDB4OGUsMHg1OCwweGY2LDB4ZjgsMHhmMywweDNjLDB4OTEsMHgyMywweDQ4LDB4ZmEsMHhiOSwweGZjLDB4ZTEsMHgxOSwKKyAgMHg0MSwweDFmLDB4YzAsMHg2ZSwweGNkLDB4YWUsMHgxZiwweDRhLDB4ODksMHg3ZiwweDRkLDB4NzksMHg0MywweDFiLDB4ZDcsMHhkZCwKKyAgMHhkYSwweGRhLDB4YTAsMHhiOCwweDNjLDB4ZWYsMHg0MCwweDYxLDB4YTUsMHg2NiwweDZkLDB4ZTcsMHg4MSwweDRlLDB4N2MsMHg2YywKKyAgMHg2NywweDUwLDB4ZmMsMHhhMCwweGY2LDB4YWMsMHhkNiwweDVkLDB4NjcsMHg2YiwweDZmLDB4NGEsMHhhOSwweGZmLDB4MjIsMHg2ZiwKKyAgMHgxOSwweGZjLDB4ODcsMHhmMiwweDEwLDB4ZmMsMHg1OCwweGU3LDB4ZjksMHgzZiwweGE5LDB4ZjgsMHg2NywweGZmLDB4NDIsMHhiYywKKyAgMHg3MiwweDRkLDB4ZmUsMHhiMywweDU0LDB4NGUsMHhiMiwweDQwLDB4ZDQsMHgyOSwweGUyLDB4NmQsMHg2MiwweDM1LDB4ZjIsMHg3ZiwKKyAgMHg1NCwweDc3LDB4N2MsMHhiZiwweDc5LDB4OGQsMHg4MSwweDM5LDB4ZmUsMHg3NSwweDFiLDB4YTQsMHg2YiwweDA1LDB4NDEsMHgxYSwKKyAgMHhjYSwweGU2LDB4MzQsMHg1NiwweDM2LDB4MWMsMHg5MCwweGRiLDB4NjAsMHg5ZCwweGI2LDB4ODUsMHhjOSwweGQxLDB4ZWMsMHg2MSwKKyAgMHhiYSwweGJmLDB4YjksMHgyMywweDJjLDB4ODcsMHgzYywweDI5LDB4ZjEsMHgyZiwweGQyLDB4NzQsMHg1MCwweDBkLDB4YzcsMHg2OCwKKyAgMHhiMiwweDI0LDB4MmIsMHgyZiwweDdiLDB4YjcsMHhiMSwweDE2LDB4NTAsMHg5OSwweGFjLDB4MWEsMHhmMSwweGFmLDB4ZDAsMHhhOCwKKyAgMHhlYywweDRlLDB4YTksMHg3ZiwweGFmLDB4ZTAsMHhkMSwweDFmLDB4M2YsMHg4NywweDAxLDB4MDgsMHgwYywweDhhLDB4YmQsMHhmNCwKKyAgMHgyNywweGY2LDB4MjksMHhiMCwweDg2LDB4ZTQsMHgzNywweGEyLDB4NDUsMHg3MywweDAyLDB4NWUsMHg4MSwweGZjLDB4M2UsMHg1ZSwKKyAgMHhmZiwweDllLDB4Y2MsMHhmZiwweGExLDB4ZDMsMHhkMiwweGRmLDB4NjAsMHhhZSwweDUwLDB4ZDYsMHhjYSwweGE2LDB4NzcsMHgwMywKKyAgMHg1ZiwweDIyLDB4ZGEsMHg3MSwweDllLDB4OTAsMHhlNywweDkxLDB4ZDcsMHhkOSwweGY2LDB4OTAsMHhhZCwweDVlLDB4ZmMsMHg4MywKKyAgMHhmYSwweGE1LDB4N2YsMHg3NiwweGE3LDB4ZWQsMHgwNywweGY4LDB4YmUsMHgxMywweDdmLDB4YmMsMHhmZSwweGViLDB4MmMsMHhlYywKKyAgMHg2NywweGViLDB4NWYsMHgxNiwweDQ3LDB4MzQsMHhiNCwweDM3LDB4ZDksMHgyYywweDllLDB4NDYsMHgzOCwweDA2LDB4M2YsMHhjMywKKyAgMHhmMywweDU4LDB4ZjAsMHgwMSwweGZiLDB4MGMsMHg3ZiwweGMyLDB4ZjcsMHgzNSwweGU1LDB4ZmYsMHhhNCwweGJkLDB4NmQsMHhhNCwKKyAgMHg2ZCwweDNjLDB4MzYsMHhkZSwweDU0LDB4YzksMHhkMSwweGNlLDB4OTAsMHg5NSwweGZiLDB4N2YsMHgwZSwweGFjLDB4NzIsMHg3NywKKyAgMHg1YSwweDg3LDB4NzMsMHhhZSwweGQ0LDB4N2UsMHhjZSwweDc2LDB4OWMsMHhiMiwweGY2LDB4YTQsMHhlMCwweDlmLDB4Y2QsMHhiNSwKKyAgMHg4ZCwweDRhLDB4ODgsMHgzOSwweGNlLDB4NWEsMHhhYywweGQ5LDB4NmIsMHhjMCwweGVlLDB4YTAsMHg1ZSwweDMyLDB4MDgsMHhlYiwKKyAgMHhiYSwweGYyLDB4M2IsMHhhOSwweDRmLDB4M2MsMHg4MSwweDg4LDB4NmUsMHg0YiwweDJkLDB4ZmQsMHgxZiwweGE5LDB4ZjgsMHg4NywKKyAgMHg4NywweGU5LDB4NTksMHhjNiwweDQzLDB4ZTksMHg5YiwweGI1LDB4MjYsMHg0ZSwweDgzLDB4ZTAsMHhjNSwweGYzLDB4ZjUsMHg4NCwKKyAgMHgzYSwweDNkLDB4OTAsMHhlMSwweDIzLDB4ZjcsMHgwYSwweGJiLDB4OTQsMHgwMiwweDlkLDB4YTYsMHhlMiwweDlmLDB4YzMsMHg3YSwKKyAgMHhhMywweDU2LDB4YzgsMHhhOCwweDJiLDB4N2QsMHgxYiwweDNjLDB4YWUsMHhhOSwweGUwLDB4MDgsMHhmYSwweGEzLDB4YjQsMHgxZCwKKyAgMHgwYSwweDU5LDB4ODYsMHg0YSwweGZhLDB4ZDMsMHg3NiwweDY4LDB4MjEsMHg4ZCwweDY2LDB4YTcsMHhkNCwweDdmLDB4M2QsMHgwNiwKKyAgMHgwNywweDZhLDB4ZTcsMHgzMCwweDM0LDB4OTMsMHhmNywweGQxLDB4NzcsMHhkNCwweDc5LDB4YmEsMHg3NSwweGU3LDB4MzcsMHg0NiwKKyAgMHhlMCwweDJkLDB4MTQsMHhlNCwweGM1LDB4MjEsMHhmMSwweDEzLDB4YjgsMHgxOCwweGM1LDB4YWQsMHhiNSwweDI5LDB4MjUsMHhmZSwKKyAgMHhmNSwweDA5LDB4OGMsMHgxZiwweGU0LDB4YjQsMHgwMCwweDg0LDB4ZDMsMHg0MiwweGEyLDB4N2MsMHgwZSwweDhiLDB4MWYsMHhkMiwKKyAgMHg4ZiwweGI0LDB4NzksMHgyYywweDJiLDB4MjQsMHg3NiwweGE5LDB4MTcsMHgzOSwweGJmLDB4NDQsMHhmOCwweDFhLDB4ZmMsMHg3MywKKyAgMHgxOCwweGJhLDB4MTksMHg0ZiwweDFiLDB4Y2UsMHg3ZCwweGMzLDB4Y2EsMHhlYiwweGRmLDB4MGIsMHgyYSwweGUwLDB4MjgsMHgyZCwKKyAgMHhlNSwweDE5LDB4MjAsMHg3YiwweGQ4LDB4MTUsMHhjYiwweDVjLDB4OTAsMHhmNSwweDE0LDB4ZmMsMHhmMywweDhmLDB4YjAsMHg4NSwKKyAgMHhkOSwweDQzLDB4MzQsMHg2YywweDc3LDB4YzIsMHgzYiwweGM0LDB4MWUsMHg3NiwweGY0LDB4OTAsMHg1YiwweDY4LDB4NjAsMHhkMCwKKyAgMHhjZSwweGY3LDB4ODMsMHg4MywweGVlLDB4YTgsMHg3NiwweGNmLDB4ZTEsMHg4YywweDViLDB4MjYsMHhmYywweDUzLDB4NjIsMHg2ZiwKKyAgMHhkMSwweGZmLDB4NjEsMHgyYiwweDc1LDB4NzksMHg3OCwweGJjLDB4YWMsMHhiMCwweDJlLDB4NjMsMHgwMywweDk5LDB4Y2UsMHg1ZSwKKyAgMHhhNCwweDQ2LDB4YmUsMHg1OSwweDI3LDB4M2MsMHhhZiwweGUxLDB4YzAsMHg5ZiwweGUyLDB4ZmYsMHgyOSwweDg0LDB4MTAsMHhmOCwKKyAgMHg4MiwweDA2LDB4ZmIsMHhjZCwweGUzLDB4YTAsMHgwYSwweDc4LDB4MGMsMHg3MSwweDU3LDB4NDEsMHhjOCwweGJmLDB4YTgsMHhkMCwKKyAgMHg0MywweGE0LDB4YmQsMHhiOCwweDkwLDB4NjgsMHhiYSwweDlhLDB4ZjEsMHhjZiwweDBhLDB4MzgsMHhlMCwweDc1LDB4MGYsMHg1YSwKKyAgMHg0NywweDczLDB4N2UsMHhjMywweDY5LDB4NjcsMHgxNiwweDViLDB4ODMsMHg0NCwweGUyLDB4NDAsMHg5MSwweDE5LDB4MzQsMHg4ZiwKKyAgMHgxNywweGYwLDB4ZDUsMHhiOCwweDIxLDB4OTYsMHg5MCwweDNmLDB4OWQsMHgzNywweDlkLDB4ODcsMHhmMywweDUwLDB4MTUsMHg5OCwKKyAgMHg4NSwweGRhLDB4MmEsMHg4NCwweDMwLDB4MzIsMHgxMywweDBkLDB4YjEsMHg1MSwweDdhLDB4NTIsMHg1OSwweGMwLDB4NmMsMHhhNywKKyAgMHg1MSwweDRkLDB4NWYsMHgxNSwweDZlLDB4MDMsMHg1YiwweDdmLDB4MGEsMHhmZSwweGY5LDB4MTQsMHhkMSwweGYyLDB4ZGMsMHg1MCwKKyAgMHhkNiwweDU4LDB4Y2QsMHhkYiwweDMwLDB4ODAsMHg2YSwweDBlLDB4MTcsMHg2YSwweDRjLDB4YzUsMHg4ZCwweGRmLDB4OWYsMHhkNSwKKyAgMHgyMywweDVlLDB4NjIsMHg5NywweGRkLDB4NTUsMHgwYiwweGFkLDB4NjMsMHhiMiwweDJiLDB4MjEsMHgxZiwweDE4LDB4N2MsMHgwYSwKKyAgMHg3YiwweDc5LDB4MTIsMHg3MiwweDM3LDB4ZjksMHgxNCwweGRlLDB4ZjYsMHhjZiwweDNhLDB4NDEsMHhiZiwweGY0LDB4OWYsMHgyMiwKKyAgMHg4MSwweGZhLDB4ODIsMHgxMywweGI4LDB4NTAsMHg1NywweGI0LDB4YmQsMHhjYSwweDgzLDB4NzUsMHhiOCwweGRmLDB4NWMsMHg4OSwKKyAgMHhmNSwweDc3LDB4YTQsMHg3MSwweGY0LDB4MWIsMHg2MiwweDE2LDB4NTcsMHhjNywweDQxLDB4ZDgsMHgyMCwweDM4LDB4OGYsMHgxOSwKKyAgMHhmNSwweDRkLDB4YWQsMHg0YSwweGFjLDB4ZjAsMHgwZCwweDc2LDB4ZDgsMHgxZCwweDA3LDB4NzEsMHgyOSwweGRjLDB4ODksMHhmOSwKKyAgMHgzYSwweGVhLDB4NTMsMHhiYywweDdmLDB4M2IsMHgwZCwweDY3LDB4N2YsMHgwNCwweDRmLDB4YTIsMHhmYywweDA5LDB4ODQsMHhjOSwKKyAgMHg5MCwweGRhLDB4NGEsMHg3OSwweGM1LDB4M2QsMHgyZiwweDg0LDB4NjcsMHgyNSwweGUxLDB4OGMsMHhiMCwweGM5LDB4ZmYsMHgwMywKKyAgMHhkMiwweDM2LDB4ZWIsMHhmNiwweGJhLDB4YjIsMHhkMSwweDJjLDB4OGUsMHg3NiwweDIyLDB4ODEsMHg0YSwweGRkLDB4YzksMHhiZiwKKyAgMHhmZSwweDQxLDB4Y2QsMHhkZCwweDZiLDB4MjQsMHhjZSwweGVkLDB4MGUsMHg0ZCwweDhiLDB4M2EsMHhjMiwweGEyLDB4OTIsMHhkOCwKKyAgMHhmZiwweDViLDB4YzAsMHg0OCwweGViLDB4MGQsMHg3MSwweGI0LDB4MjMsMHg1ZCwweGQxLDB4YjgsMHg1YSwweDQ3LDB4YjAsMHg3MiwKKyAgMHg4NSwweGViLDB4ZWIsMHhkMSwweDgyLDB4MTEsMHhiOCwweDQyLDB4MmIsMHgzOSwweDMwLDB4MWUsMHgzNiwweGU5LDB4ZGYsMHg2ZCwKKyAgMHhjYSwweDc4LDB4MzQsMHg5NiwweGNkLDB4YWIsMHhkZCwweGE5LDB4ZjIsMHhmOCwweDU3LDB4NGQsMHgzZSwweDFjLDB4MjQsMHgyZSwKKyAgMHhkZCwweDI4LDB4YzQsMHgzYiwweGU4LDB4OWQsMHhkNywweDhlLDB4ODMsMHhiMywweDQ5LDB4ZmMsMHg3MywweGJiLDB4MTMsMHhmNiwKKyAgMHg2YSwweDI1LDB4NTEsMHg0NCwweDNiLDB4MDcsMHhlMSwweGY5LDB4YzAsMHgyYywweGZkLDB4YWUsMHg1MSwweGQyLDB4ODUsMHhmYSwKKyAgMHhmNywweGJmLDB4ZjYsMHgxYSwweDhlLDB4YTYsMHg1NiwweDM2LDB4MjMsMHg0MCwweDVkLDB4ZTIsMHhjYiwweDQ5LDB4ZmUsMHhlNywKKyAgMHg1YywweGVlLDB4OWYsMHgyOSwweGU5LDB4OTYsMHg1ZCwweGU5LDB4MTEsMHg5NSwweGU5LDB4NGUsMHg1ZSwweDdmLDB4OWEsMHhjMSwKKyAgMHgxOCwweDE0LDB4ZjYsMHg1MiwweGJlLDB4M2UsMHg4ZCwweDhkLDB4MjUsMHgwZCwweDM4LDB4MTgsMHg0ZCwweGQ4LDB4ZmIsMHgzZSwKKyAgMHg5OCwweGM2LDB4MTAsMHgwNiwweDg0LDB4ZDAsMHg1YSwweGI5LDB4MDAsMHhjZiwweGIyLDB4ZTIsMHhhMSwweDhjLDB4NDcsMHhkMywKKyAgMHgzNywweDZhLDB4Y2QsMHhjMSwweGUyLDB4YTgsMHhlNSwweDUxLDB4ZjIsMHgyZSwweDU5LDB4MWQsMHg5ZSwweGFlLDB4ZDIsMHg0NywKKyAgMHhmMSwweDNmLDB4MzQsMHhmMSwweDU3LDB4OTcsMHg5NywweDI1LDB4ZWQsMHgxMCwweDJhLDB4ZmMsMHhlYiwweDZmLDB4MTMsMHgyMywKKyAgMHhiNSwweDdlLDB4NTIsMHhmOSwweDVhLDB4ZTYsMHg5ZSwweDFhLDB4MDcsMHg1OSwweDE4LDB4NDQsMHg0NCwweDNhLDB4NGYsMHgxYywKKyAgMHg5MCwweGZhLDB4ZmMsMHgzZiwweDg5LDB4MzgsMHhlNywweDg5LDB4YzcsMHhkMiwweDI3LDB4ZTYsMHg2YiwweDhiLDB4MGQsMHhmZiwKKyAgMHgwZiwweDRmLDB4ZjIsMHgxOSwweGM1LDB4ZDUsMHhhOCwweDdhLDB4Y2QsMHgzNiwweGRhLDB4ODQsMHgwMywweDMyLDB4N2YsMHg3MCwKKyAgMHhmZCwweDU5LDB4MDQsMHhkMiwweDU3LDB4YTQsMHg5ZiwweGYzLDB4OWYsMHg4MiwweDY0LDB4ZTIsMHg3ZCwweDExLDB4ZGYsMHhjMiwKKyAgMHg2NywweGNjLDB4MjgsMHhmMiwweGFhLDB4ODcsMHg3MSwweGI1LDB4ZWMsMHhiMiwweGY1LDB4NjUsMHgzMSwweDRhLDB4MGYsMHhjMSwKKyAgMHg5ZSwweGYzLDB4ZDYsMHgzMCwweGY5LDB4MGIsMHgzYiwweDEwLDB4ZmIsMHhhOSwweDJmLDB4YjEsMHhmZSwweGMzLDB4YzIsMHg2NiwKKyAgMHhlZSwweDNkLDB4NjYsMHgzMiwweGNmLDB4NzYsMHhkZSwweDY1LDB4MjksMHhlZSwweDQzLDB4NmIsMHg3MSwweDhjLDB4M2UsMHgwNywKKyAgMHg2YSwweDI0LDB4YjMsMHg4MSwweDFjLDB4ZWUsMHhlOCwweDg3LDB4N2MsMHg5MCwweGNkLDB4ZmMsMHhjZiwweDAwLDB4OWMsMHhlZCwKKyAgMHg3OSwweDdhLDB4NDgsMHg1ZSwweDc5LDB4YzcsMHhkYiwweGYwLDB4MDQsMHg3MywweDBlLDB4NjcsMHgzYywweDRhLDB4ZmUsMHg0MCwKKyAgMHhmYywweGFjLDB4NzgsMHg5OCwweGFlLDB4NGMsMHg3ZiwweDk3LDB4MDYsMHhmNSwweGZjLDB4ZDAsMHg4ZCwweDJiLDB4ZDEsMHgzNCwKKyAgMHg5YiwweDc4LDB4MWUsMHhlZSwweGZmLDB4ZTksMHg2NiwweDg1LDB4NWQsMHg3MiwweGY4LDB4YmEsMHg4MywweGVhLDB4OGUsMHgzYSwKKyAgMHhhNywweGRlLDB4ZTIsMHgyMiwweDQ3LDB4N2MsMHgxZCwweDExLDB4NWUsMHhkOCwweDZiLDB4MWYsMHg0MCwweGY0LDB4MWQsMHhlMiwKKyAgMHhmOSwweDNmLDB4NmYsMHg5YiwweGVhLDB4YmYsMHhiYSwweGYwLDB4MzUsMHhlNywweDc2LDB4YTEsMHg3NCwweGZkLDB4NGYsMHg4ZCwKKyAgMHgxNywweDg0LDB4MzIsMHgzNiwweDMzLDB4ODQsMHgzMCwweGY4LDB4NDgsMHhmZiwweGNmLDB4MTAsMHgxMSwweGExLDB4YmQsMHhmNiwKKyAgMHhiNCwweDU2LDB4ZWEsMHg5NywweDQzLDB4ZTIsMHgxZSwweDYxLDB4ZTIsMHg3OSwweGVhLDB4MTQsMHgxNSwweGM2LDB4N2EsMHhiOSwKKyAgMHhkMiwweGNmLDB4ODksMHg5NSwweDdkLDB4MTksMHhmZSwweDkwLDB4YjEsMHhjOSwweGZiLDB4ZTMsMHhmZSwweDFmLDB4YWQsMHg5MiwKKyAgMHg0YywweDYyLDB4ZTIsMHhiMSwweDY0LDB4ZmUsMHhhZCwweGQyLDB4YTksMHhhMCwweGJkLDB4ZGYsMHgzMCwweDI5LDB4MjgsMHg0ZSwKKyAgMHgwNywweGNlLDB4MDYsMHg2YywweDUzLDB4MjAsMHgxZCwweGVlLDB4ZTQsMHhmNSwweDg5LDB4ODYsMHhiZSwweGQzLDB4MmEsMHhlYiwKKyAgMHg5NiwweDA0LDB4NzMsMHg0YywweGY4LDB4YTcsMHhiNiwweDEzLDB4NzYsMHhhZiwweDJkLDB4ZTEsMHg0MSwweGFiLDB4NDIsMHg2OSwKKyAgMHgyYiwweDIzLDB4NWEsMHg1YiwweGQwLDB4MzMsMHgwMywweDE1LDB4MzEsMHhjZiwweDdmLDB4Y2UsMHgxZSwweDgyLDB4MjcsMHhmYiwKKyAgMHgxZSwweGY0LDB4YjYsMHg3MSwweGZlLDB4ZTcsMHg4OSwweDNmLDB4MjMsMHhmZiwweDI3LDB4YmYsMHg0NCwweGFiLDB4MDksMHhjMiwKKyAgMHhmMiwweGMyLDB4MTYsMHg2YSwweGQ0LDB4MmIsMHg3NSwweGQ2LDB4NmQsMHhjNywweGY5LDB4NmQsMHgzOCwweDlmLDB4ZWUsMHgxNiwKKyAgMHg0YSwweDhjLDB4N2MsMHg5NSwweGQ0LDB4ZmMsMHg0MywweGM5LDB4ZTksMHg5NSwweDczLDB4OGIsMHgyNCwweDNhLDB4MTMsMHg0MiwKKyAgMHgzYywweGRiLDB4NjcsMHgxNSwweDZjLDB4ZDcsMHhjMCwweDJiLDB4MmIsMHg0YSwweDNmLDB4NmMsMHhkMCwweGYwLDB4MjcsMHhiMywKKyAgMHhmZCwweDU1LDB4M2UsMHhkNSwweDM3LDB4NTEsMHhlNiwweGE2LDB4MmEsMHgxMSwweDkyLDB4MWQsMHgyMywweDAyLDB4ZTIsMHgxZSwKKyAgMHhhMSwweDM1LDB4YWMsMHgzNCwweDBhLDB4MTcsMHg4NCwweDEyLDB4NTgsMHhjMiwweDI2LDB4N2QsMHg5YSwweDkwLDB4M2YsMHgzZCwKKyAgMHg5OSwweDlkLDB4MDgsMHg1YSwweGFhLDB4MGMsMHhlZiwweDBkLDB4ZGEsMHg2YiwweDFjLDB4MDgsMHgyZCwweGZhLDB4NmYsMHhkMiwKKyAgMHgyNywweGRhLDB4N2UsMHhhZiwweDUxLDB4MDgsMHg3ZiwweGQ5LDB4MzMsMHgxNywweDA3LDB4OTMsMHgzZSwweDRkLDB4YzgsMHg5ZiwKKyAgMHhmMiwweGJmLDB4ZTksMHhhNCwweDlmLDB4YzMsMHhmYywweDVhLDB4YmEsMHhhOSwweGU2LDB4M2MsMHg4NywweDAxLDB4MGIsMHg3OSwKKyAgMHhkYSwweDMzLDB4YzcsMHg4NywweDhiLDB4YWMsMHhkYywweDdmLDB4NzUsMHgxOSwweDRhLDB4YmYsMHg2MywweDFkLDB4MTQsMHgzZiwKKyAgMHg0ZCwweGVjLDB4OWYsMHgzYywweDllLDB4ZmYsMHgwYywweDc2LDB4ZWEsMHg2MCwweGQ5LDB4NTEsMHhkYSwweDIzLDB4Y2QsMHhjYiwKKyAgMHg5MywweGZkLDB4MWIsMHgwMSwweDAyLDB4ZGUsMHg4ZSwweGJjLDB4NGMsMHg0NiwweDRlLDB4NzksMHg3YiwweGQ0LDB4MGUsMHgwNSwKKyAgMHgyZCwweDg4LDB4ZDcsMHgxMywweGYyLDB4NDQsMHhlMywweGY5LDB4NGUsMHhlMCwweGUwLDB4NGEsMHhhNywweDlmLDB4YmIsMHgwMSwKKyAgMHgzZCwweDcyLDB4YWUsMHhlNSwweDE5LDB4NGUsMHgwNCwweGU0LDB4YzksMHgzMywweDg4LDB4MTAsMHgyMywweGFhLDB4NzYsMHg4MywKKyAgMHg0MiwweDhlLDB4MjUsMHhmNiwweDRmLDB4OWUsMHhjNCwweGIzLDB4YTcsMHg3OCwweDkxLDB4YmIsMHg3ZCwweGM4LDB4MTcsMHhhNywKKyAgMHgzZCwweDJjLDB4YTQsMHg4ZCwweDNlLDB4N2IsMHgzYywweGZmLDB4MGEsMHhlYywweGQ1LDB4MTYsMHg1ZSwweGZmLDB4M2UsMHgzMSwKKyAgMHgzZiwweGM0LDB4ZTcsMHhkMywweDcyLDB4MGQsMHg5ZiwweGY2LDB4OGMsMHgzMiwweDNlLDB4NTgsMHhjOSwweGQxLDB4NWEsMHhhNywKKyAgMHg3YSwweDAwLDB4M2EsMHgzNCwweDg5LDB4Y2YsMHgxZiwweDk3LDB4ZWMsMHhmNSwweDE2LDB4MWUsMHhjYSwweDk5LDB4OTgsMHhmZiwKKyAgMHgxMSwweGFmLDB4ZmYsMHg4MiwweGZkLDB4NzUsMHhlYiwweDExLDB4MDYsMHg3MywweDdlLDB4MWIsMHg0NCwweDgzLDB4MzksMHg0MywKKyAgMHg2NCwweDljLDB4NTUsMHhjNCwweGYyLDB4YzEsMHhjZSwweDdhLDB4MmEsMHg5NywweDY3LDB4MDYsMHhjNSwweDBiLDB4NDksMHgzYywKKyAgMHhjMywweGY5LDB4MzYsMHg5NSwweDc5LDB4MGEsMHhhNywweGZkLDB4NTEsMHhlMiwweDZlLDB4YjcsMHg3YywweDNkLDB4NTIsMHhlZCwKKyAgMHgxNiwweDE2LDB4MWIsMHhmOSwweDNmLDB4ZTAsMHg1NiwweGFkLDB4NjYsMHhmYywweDQzLDB4MjUsMHgwNywweDljLDB4MDEsMHg4MywKKyAgMHhmNiwweGU3LDB4YTIsMHg5MSwweGZmLDB4OGMsMHg2YSwweGU4LDB4NTcsMHhmMCwweGI2LDB4NjAsMHg2NywweDE2LDB4YmUsMHg5ZiwKKyAgMHhmNywweGViLDB4NWIsMHg5OSwweDM1LDB4NGEsMHhmYSwweDEyLDB4ZmIsMHg4NywweGZlLDB4ODIsMHg5NywweDlkLDB4M2EsMHg3NCwKKyAgMHg4NywweDhiLDB4MWMsMHg2MiwweDViLDB4NjMsMHg2NiwweDgyLDB4OGQsMHgyNiwweDBhLDB4YjcsMHhjMywweGQxLDB4MTksMHhhYSwKKyAgMHhhMCwweGUyLDB4ZmMsMHg4OSwweGVmLDB4OWIsMHgzZiwweDc5LDB4MmEsMHg1YSwweDI0LDB4MDUsMHhjYywweGQyLDB4NjAsMHhiZiwKKyAgMHgxMCwweGFiLDB4NWYsMHg3MCwweDViLDB4MzYsMHgyYiwweDRmLDB4MjgsMHgzMSwweDIyLDB4MGIsMHhkOCwweGE5LDB4YTksMHgwYSwKKyAgMHhlNSwweDhjLDB4MDksMHgxMywweGZiLDB4Y2QsMHg1MSwweDM3LDB4NGQsMHhmOSwweDljLDB4ZGQsMHgxNiwweGI1LDB4ZmMsMHg0NCwKKyAgMHg3YywweDE3LDB4ZmUsMHgxYywweGI4LDB4NjksMHg3NCwweGM5LDB4NGYsMHhkYSwweGE2LDB4YzEsMHg3YSwweGI2LDB4YzMsMHhhOCwKKyAgMHg3ZiwweDg3LDB4MmIsMHhlYywweGQ2LDB4MTAsMHhlNywweDNmLDB4NGMsMHhjOCwweDFmLDB4M2EsMHg3OSwweDFiLDB4N2MsMHgwOCwKKyAgMHgxNSwweDJjLDB4YjMsMHg0NywweDhjLDB4YTAsMHg4NCwweGFiLDB4M2MsMHhjMSwweGNkLDB4NGMsMHhlOSwweDYyLDB4NWQsMHg2NSwKKyAgMHhkZiwweDQ0LDB4MjIsMHgzNCwweDJhLDB4N2EsMHg1MywweGZlLDB4OGYsMHg0ZiwweGRhLDB4OGYsMHhmYSwweGFiLDB4MzQsMHg2MiwKKyAgMHgxZCwweGZmLDB4ZGUsMHhkYiwweGNhLDB4ZDEsMHhlNiwweGFhLDB4NTEsMHhlYiwweDk4LDB4ZTgsMHhlNiwweDU3LDB4NGUsMHg1YiwKKyAgMHhiOSwweDIzLDB4NjgsMHgyYywweDU4LDB4YTUsMHhhZSwweDFmLDB4MzYsMHhkNSwweDQ3LDB4MDQsMHg2MCwweGFhLDB4ZjYsMHg3MiwKKyAgMHhkZSwweGFkLDB4N2UsMHgzYSwweGRiLDB4M2QsMHgyOCwweGFkLDB4YzksMHgyYiwweGQ2LDB4ZWIsMHg2NiwweDY3LDB4MmIsMHhmMCwKKyAgMHhiMSwweDVhLDB4MTAsMHhjZCwweGU0LDB4ZmUsMHhlNywweDcwLDB4ZTgsMHgwMSwweDJhLDB4ZTcsMHg5MywweGEyLDB4YzQsMHg3YSwKKyAgMHgzMiwweGQ4LDB4MGMsMHgyZiwweDAxLDB4ODIsMHg5YywweDg3LDB4ZDIsMHhjNywweGQ0LDB4NTUsMHgxYywweDBmLDB4MzcsMHg5MCwKKyAgMHgzYywweDZkLDB4OTcsMHg1MCwweDYwLDB4MDQsMHhlZSwweGUxLDB4NjUsMHhiNSwweGY4LDB4ZDgsMHg4ZCwweDNlLDB4OGIsMHg5NCwKKyAgMHhlMCwweDNmLDB4ZDQsMHg3MiwweGQ3LDB4ZTIsMHg2OSwweDJhLDB4ZWMsMHhhMiwweDJlLDB4ZmIsMHg0MSwweGMyLDB4OGMsMHg0NCwKKyAgMHg2OCwweDBiLDB4ZTUsMHg2OSwweDU0LDB4MzEsMHg2MiwweDgxLDB4ZGQsMHhlZCwweDRlLDB4ZGYsMHg4ZCwweDJhLDB4YzksMHgzNiwKKyAgMHhlMSwweGQ1LDB4NmQsMHg1YywweDdlLDB4OGUsMHg1YSwweDQ3LDB4ODUsMHgwMywweDcwLDB4MjAsMHhhNiwweDdmLDB4NGIsMHg1MCwKKyAgMHg0MywweDE1LDB4YTAsMHg3ZSwweDQxLDB4N2QsMHhiNywweDQ3LDB4MmIsMHgwOSwweGUxLDB4MTcsMHhhNCwweDA5LDB4M2MsMHgxYywKKyAgMHg1MiwweDQ2LDB4NjAsMHhkYywweDZlLDB4ZDQsMHg3ZiwweDBkLDB4YWIsMHhkYywweDFmLDB4YjIsMHhkZSwweDI1LDB4N2UsMHhhOCwKKyAgMHg3ZCwweDNjLDB4ZTEsMHg2ZiwweGJmLDB4NDAsMHgyYSwweDc5LDB4NjEsMHhkNCwweGIwLDB4NjQsMHhjNiwweDNmLDB4NTcsMHg1OSwKKyAgMHg0MSwweGFkLDB4NTEsMHhmNiwweDdlLDB4NTQsMHgzNywweGNjLDB4ZDgsMHgzOSwweGVjLDB4ZTgsMHg0NCwweDIxLDB4ZmMsMHgxNSwKKyAgMHgyOCwweDY1LDB4NTksMHg1MSwweDMxLDB4OWEsMHhjMCwweDNmLDB4YmQsMHhkMiwweDBhLDB4NjksMHhmNywweGRiLDB4OGUsMHg0MSwKKyAgMHhkNCwweGI2LDB4MWYsMHg3MSwweGI3LDB4NjEsMHg2ZiwweDViLDB4OTgsMHgxNCwweGYwLDB4YzQsMHgxZSwweGNlLDB4ODgsMHgzOCwKKyAgMHg0MiwweGY3LDB4ZjIsMHhkMCwweDRmLDB4YzgsMHg2ZSwweGMyLDB4M2YsMHg5MiwweDUxLDB4YTYsMHhkZCwweDg3LDB4NGEsMHhmOSwKKyAgMHgyMywweDZlLDB4YWYsMHg3MSwweDM3LDB4ODUsMHg2NCwweDE0LDB4ZmUsMHhjNywweGY0LDB4YjUsMHg2ZSwweGVmLDB4YzAsMHg4ZCwKKyAgMHg2NywweGUyLDB4M2YsMHg4NCwweDRjLDB4NGUsMHhiMywweDA5LDB4MTksMHg3MywweDcwLDB4OTMsMHgzNCwweDA5LDB4YjgsMHhkZiwKKyAgMHhlNiwweDEwLDB4NDgsMHhjNywweGY5LDB4MTEsMHgzYSwweDFiLDB4ZDcsMHg2NywweGJiLDB4MWEsMHhkMiwweDEwLDB4NjgsMHhmNSwKKyAgMHgyNSwweGZhLDB4NTksMHg0MCwweGRlLDB4MDMsMHhiYywweGFjLDB4NWIsMHgyYiwweGRlLDB4NTksMHgzMCwweDBjLDB4MDcsMHg3OCwKKyAgMHgxOCwweGUyLDB4MTEsMHhiOSwweDEwLDB4OGUsMHg0ZSwweGZlLDB4OTEsMHhiZSwweDM4LDB4NWMsMHg4MywweGZiLDB4MjEsMHhkNywKKyAgMHhhZCwweDY3LDB4NmQsMHgxMSwweGEzLDB4ODksMHhmYSwweDlkLDB4NTAsMHhlNiwweDI1LDB4ZjYsMHgyNSwweDJjLDB4ZDAsMHhiMywKKyAgMHhjZSwweDE1LDB4OGMsMHg3MSwweGZlLDB4MWYsMHg3ZCwweGZkLDB4YjksMHg5YSwweDUxLDB4OGEsMHg0MCwweGE4LDB4OWYsMHhlNywKKyAgMHhmZiwweGMwLDB4NjUsMHgxNywweDhhLDB4YTYsMHg2NSwweGUyLDB4NzAsMHg3MywweDAyLDB4ZmYsMHgwOCwweGM3LDB4YTAsMHg5ZiwKKyAgMHhjZCwweDhlLDB4MmUsMHgxZSwweGNkLDB4ZjksMHgyOSwweDljLDB4NjQsMHgwNiwweGZmLDB4MGYsMHhlNywweDhmLDB4MmEsMHgxZCwKKyAgMHgyOCwweDc5LDB4NWQsMHg3NCwweGIxLDB4ZjcsMHg1OCwweGE5LDB4NjgsMHhlZCwweDM3LDB4ZjMsMHhmZiwweGMwLDB4MTksMHgyNSwKKyAgMHgwMywweGYxLDB4NjEsMHhkZCwweGNiLDB4ZDksMHhjNSwweDdkLDB4MDEsMHhkNSwweDFlLDB4Y2QsMHhlMCwweGZjLDB4Y2YsMHg3YiwKKyAgMHgwYiwweGRkLDB4NGEsMHg3MSwweDMwLDB4NWIsMHgwZCwweGI1LDB4NTEsMHgzNywweGU3LDB4OWYsMHg0ZiwweGQ2LDB4N2YsMHhkMSwKKyAgMHhiNCwweDIxLDB4MzQsMHgzMywweDFkLDB4M2EsMHg5ZCwweGYzLDB4ZWMsMHgwMCwweDA0LDB4NjgsMHhmYywweDU4LDB4ZWQsMHhhNSwKKyAgMHhlYSwweGEwLDB4OWMsMHg0ZSwweDQwLDB4N2YsMHgxMSwweGJhLDB4MDgsMHg5NSwweGNjLDB4ZjUsMHg1ZiwweDUzLDB4OWUsMHg4MSwKKyAgMHgxNiwweDU2LDB4ODQsMHhmOCwweDEzLDB4ZjEsMHgyNCwweDc3LDB4ZmIsMHg2NCwweGM0LDB4NjAsMHhjZiwweDBjLDB4MmQsMHhhMywKKyAgMHhkZCwweDZmLDB4ODcsMHgzNiwweGM1LDB4YTIsMHhkMiwweGNkLDB4NWEsMHhiMiwweGZlLDB4MGIsMHhkMiwweGNlLDB4YzAsMHg4MSwKKyAgMHhkMCwweDllLDB4OTAsMHgzNSwweDhjLDB4ZTgsMHg2NSwweDEwLDB4YmEsMHg3YiwweGUzLDB4ZmMsMHhjYywweDZlLDB4MzIsMHg4YiwKKyAgMHhjYSwweDVmLDB4MjcsMHgxZiwweGVhLDB4MzcsMHgzNCwweDM4LDB4MzcsMHg5YiwweGVhLDB4ZGYsMHg0MywweDkzLDB4NzcsMHg5MSwKKyAgMHhjYiwweDY0LDB4MmUsMHhjMywweDZkLDB4NzAsMHg5ZiwweGMxLDB4ZmYsMHhjYywweGY5LDB4YzAsMHhlMSwweGFhLDB4MzQsMHhlZiwKKyAgMHgwMywweGRjLDB4MzYsMHhiYSwweGYyLDB4MjcsMHhkYywweDM4LDB4MzYsMHg5ZiwweDM4LDB4NmMsMHg4YSwweDdmLDB4M2QsMHhjMywKKyAgMHhkMywweDdhLDB4ZDcsMHgzZSwweGM2LDB4NmYsMHgzYiwweGE2LDB4NGQsMHhhNCwweDk5LDB4YjEsMHgwYSwweDRlLDB4ZTMsMHgzNiwKKyAgMHg5MywweDFjLDB4YTIsMHhkZCwweDliLDB4OWMsMHhiZiwweDE0LDB4MWIsMHg0YywweGZlLDB4MWYsMHg4OSwweDRiLDB4NTcsMHg0NiwKKyAgMHg0NywweDU1LDB4MWUsMHhmNiwweDlhLDB4MzcsMHhjMSwweDg3LDB4NjksMHg4ZiwweGEwLDB4ZmQsMHg1OCwweGEwLDB4ODksMHg1YSwKKyAgMHgxMSwweGQwLDB4YTcsMHg5NywweDk5LDB4ZmIsMHg1ZiwweDQ4LDB4ZDIsMHhlMywweDhjLDB4OGQsMHhjZSwweDBjLDB4NWIsMHhhYywKKyAgMHgxMCwweGM0LDB4ZjMsMHgyMiwweGM2LDB4ZjksMHg2YSwweGQ4LDB4N2YsMHg1NSwweDA5LDB4NjIsMHhlMywweDYwLDB4YjQsMHg4NSwKKyAgMHhhYSwweGU0LDB4OWMsMHgwOSwweGZmLDB4OTQsMHg0OSwweDRmLDB4YTAsMHhkMiwweGE3LDB4M2YsMHhiZSwweDZlLDB4OWEsMHhiNCwKKyAgMHgzMywweDllLDB4ZjYsMHgwYywweGJiLDB4NDIsMHg1YiwweDQyLDB4YjQsMHg5ZSwweDVjLDB4ODcsMHg4MiwweGU1LDB4MDcsMHgzZSwKKyAgMHg3YSwweDI3LDB4YjksMHg5NCwweGU0LDB4N2YsMHgwMywweDA5LDB4N2UsMHgwZiwweDJlLDB4M2QsMHg3MywweGJiLDB4NjgsMHgxNSwKKyAgMHgwNiwweGQ1LDB4OGEsMHgxMSwweDliLDB4YWIsMHg2MCwweDAwLDB4NGYsMHg1YywweDQ1LDB4ZDQsMHhhNiwweDg4LDB4NjksMHg2YSwKKyAgMHg5ZiwweGU2LDB4ZjIsMHg1YSwweDZmLDB4MTAsMHhlZiwweDQ5LDB4ZDYsMHg3ZiwweDRkLDB4ZGQsMHg0OSwweDNlLDB4ZTQsMHhkNSwKKyAgMHg0ZiwweDY3LDB4YzUsMHg2ZCwweGMyLDB4NjUsMHg4OCwweGYxLDB4ZmYsMHgxOCwweGY1LDB4ZWYsMHhiMywweDA2LDB4ZTUsMHhmMywKKyAgMHhmMCwweDI1LDB4NTcsMHg2ZCwweDgzLDB4YTYsMHhmYSwweDJmLDB4M2EsMHg2NSwweDA4LDB4ZGUsMHg0OSwweGFiLDB4NjAsMHg4OCwKKyAgMHg5NiwweDRiLDB4YjQsMHgxMywweDZjLDB4ODIsMHhmZiwweDE5LDB4NWYsMHhiYywweDU4LDB4MmYsMHhhOCwweGEwLDB4OWYsMHhjMSwKKyAgMHhkYywweGE4LDB4MzUsMHgyYSwweDkzLDB4YTQsMHhmZiwweDI3LDB4ODMsMHhmMywweDFmLDB4MTYsMHhiMywweDAwLDB4MmYsMHhiYiwKKyAgMHg1YiwweDIzLDB4YzUsMHhjNSwweDI2LDB4MmYsMHg3YiwweDQ3LDB4MDQsMHg5NywweDBiLDB4YmIsMHg0OCwweGE5LDB4NDYsMHhhMywKKyAgMHhhNCwweDM0LDB4ZTEsMHg1ZiwweDUyLDB4ZTEsMHg5NywweDNjLDB4Y2QsMHhjOSwweGVlLDB4NzgsMHgzNCwweGViLDB4NjcsMHhiMCwKKyAgMHgyZiwweDllLDB4ZjYsMHgwYywweGJiLDB4OTgsMHgyMywweDlhLDB4YjEsMHg5NCwweDRjLDB4ZTMsMHhkMCwweDI4LDB4NGEsMHg5NywKKyAgMHg5MiwweDNjLDB4NjUsMHg2MiwweGZkLDB4ZWIsMHhhNSwweGMzLDB4ZDAsMHg3NCwweGM4LDB4MTksMHg0MiwweGY5LDB4YjMsMHgxOCwKKyAgMHg3OCwweDYxLDB4YWYsMHhiMSwweGRmLDB4NTAsMHg2ZCwweDBkLDB4ZTEsMHhmZSwweDk5LDB4ZWUsMHhkYiwweGExLDB4YWIsMHhiNSwKKyAgMHg4ZSwweDVjLDB4NzIsMHg2MywweDQyLDB4M2YsMHgwZSwweGU3LDB4ZWUsMHg1MSwweDhmLDB4ODQsMHg4YSwweDQzLDB4YmMsMHg1ZSwKKyAgMHg4NiwweDVlLDB4MDksMHg3NywweGM3LDB4ZjksMHg5ZiwweGQ5LDB4ZmMsMHg3MCwweGU2LDB4OTAsMHgzOCwweDBmLDB4YWUsMHhlNCwKKyAgMHhjZCwweDBkLDB4NTksMHgzZiwweDE2LDB4ZTcsMHgyNSwweGY2LDB4NGYsMHgxZCwweDZjLDB4ZjEsMHgwZiwweDhiLDB4OTUsMHg1NCwKKyAgMHhlMCwweDMwLDB4NjAsMHhkOCwweDA4LDB4N2IsMHg0ZCwweDQyLDB4MzUsMHhlNCwweGFkLDB4MjQsMHhiMywweDM4LDB4MjMsMHhkMCwKKyAgMHg5OCwweGI2LDB4N2YsMHhiMiwweGFkLDB4ZjksMHg1YiwweGM3LDB4NGMsMHhmNiwweDdiLDB4YTcsMHgxMSwweGY0LDB4MjksMHgzNiwKKyAgMHg4NywweDM5LDB4YTQsMHhiNywweDA0LDB4YjcsMHg5NiwweGI5LDB4NTksMHgyZSwweDY0LDB4NzcsMHg0MiwweGY3LDB4MWQsMHhiNiwKKyAgMHgxYiwweDRjLDB4ZjUsMHgzYiwweDIxLDB4NDgsMHgxZiwweDZjLDB4ZDEsMHg0YiwweGJjLDB4MTQsMHhkNSwweDI4LDB4NGQsMHhhNiwKKyAgMHgzMSwweDZiLDB4YmMsMHgxMSwweDgzLDB4ZTcsMHgzOSwweGQyLDB4MzgsMHg1OCwweGQ0LDB4MjAsMHhhNywweGQ0LDB4YmYsMHhhNywKKyAgMHgxNSwweDBhLDB4NGYsMHhhYSwweDQ1LDB4ZGYsMHhhMCwweDQxLDB4NjksMHg4OCwweGU3LDB4Y2IsMHhjNSwweGU2LDB4M2YsMHg4OSwKKyAgMHg2YSwweDNhLDB4MjMsMHg5OCwweDVkLDB4ZTgsMHg2OCwweGUxLDB4OGUsMHhhMCwweDRkLDB4MzcsMHg2NCwweDk5LDB4ZWQsMHgyZiwKKyAgMHhhMSwweDcxLDB4YjUsMHhlMSwweGZmLDB4ZTEsMHhiMCwweDI3LDB4MTYsMHgwNiwweGMyLDB4NDEsMHhjOCwweDRiLDB4ZTcsMHgxMCwKKyAgMHg0ZSwweDBkLDB4NWQsMHhjZiwweDExLDB4OTEsMHgyNSwweDUxLDB4ZmYsMHg5NSwweDc3LDB4OTMsMHgwZiwweDRlLDB4YzAsMHgzYywKKyAgMHg2MSwweGFhLDB4OTksMHhmNiwweDI3LDB4ZjcsMHg2ZCwweGM0LDB4M2YsMHg5OSwweDJjLDB4NDcsMHhhNSwweDA3LDB4ZDEsMHgxMCwKKyAgMHg1YiwweDgyLDB4MzYsMHhhMCwweGQ5LDB4ZmYsMHg4MywweGEwLDB4ZTUsMHgxZiwweGI1LDB4YmIsMHgzNywweGQ1LDB4M2MsMHgyMywKKyAgMHg3ZCwweDNlLDB4ZTEsMHhkNiwweGY4LDB4MWMsMHhhYSwweGJjLDB4YjMsMHhjZSwweDhiLDB4OWYsMHhlMywweDRmLDB4YWYsMHg3MCwKKyAgMHg2YSwweGEwLDB4MzMsMHg4OSwweGY1LDB4MmMsMHg5ZiwweDcyLDB4MWUsMHgzZSwweDkxLDB4NmUsMHhkNSwweGFjLDB4YmYsMHgxNCwKKyAgMHg2ZiwweDVkLDB4ZmIsMHg1NiwweDljLDB4MWYsMHgwOSwweDJlLDB4NmIsMHgzYiwweGJjLDB4ZmYsMHg3OCwweDhmLDB4NzgsMHg2YiwKKyAgMHgxMCwweGYxLDB4NTIsMHhiNSwweGY1LDB4NTgsMHg0ZCwweGIyLDB4ZmUsMHgzZCwweDBmLDB4NDIsMHhkNiwweDAwLDB4OTQsMHg4MCwKKyAgMHg3NSwweDc1LDB4NGUsMHgzZSwweGViLDB4MzIsMHhmMiwweDlmLDB4ODksMHg4MSwweDg4LDB4YTYsMHgxNiwweDM3LDB4OTMsMHg3YywKKyAgMHhkNiwweGEzLDB4MTYsMHhkZCwweDU0LDB4YjcsMHhiYSwweDM1LDB4YzksMHhmZiwweDVjLDB4MjcsMHgzZCwweDBiLDB4NWIsMHg2MSwKKyAgMHg4NiwweDc2LDB4NGIsMHgyZSwweGI5LDB4MWQsMHg5ZSwweGE3LDB4ZGMsMHhkYiwweDkzLDB4Y2UsMHgwYiwweGUxLDB4ZWIsMHhmOSwKKyAgMHgxNSwweDRlLDB4MDUsMHhkMCwweGU5LDB4YTEsMHg5MywweGQ1LDB4ZWMsMHgyNCwweGZlLDB4YzksMHhlNSwweDY5LDB4ZTQsMHgyNSwKKyAgMHhiNywweGM3LDB4NjgsMHgyNywweDM1LDB4N2IsMHg4YywweGY2LDB4NzksMHhiNywweGRkLDB4YzEsMHhmMSwweDRmLDB4MjEsMHhlYywKKyAgMHhjZCwweDJkLDB4OGEsMHhkMCwweDhkLDB4MjQsMHgzZCwweDMxLDB4M2YsMHg5NCwweGJiLDB4MWEsMHgzZSwweGI0LDB4Y2UsMHhmMSwKKyAgMHhkZCwweDFkLDB4Y2MsMHg1OCwweDBlLDB4MGYsMHg2OSwweDQ2LDB4NTksMHg5ZiwweGUxLDB4ZWYsMHhhYSwweDliLDB4NzUsMHg1YywKKyAgMHg5YywweGVlLDB4M2IsMHgwYiwweGQ3LDB4ZDUsMHgzOSwweDgyLDB4ZTYsMHhmZSwweDE3LDB4ZDAsMHhkOSwweGNjLDB4ODMsMHg1YywKKyAgMHhjNSwweDhhLDB4MTEsMHgxZCwweDRiLDB4YjgsMHg3ZCwweGNhLDB4YjQsMHg1OSwweGQ5LDB4NmQsMHg2NywweDYwLDB4NWMsMHgyYywKKyAgMHhlMywweDE1LDB4NjQsMHhlNiwweGZhLDB4YWYsMHgwZSwweDg4LDB4ZTgsMHgzMSwweGI2LDB4ODEsMHg0NCwweDk5LDB4MjEsMHg3ZSwKKyAgMHg4OCwweDc5LDB4OWMsMHhmZiwweDM5LDB4MWYsMHgyMiwweGFiLDB4ZGQsMHgyNCwweGE1LDB4ZmUsMHg4YiwweDRhLDB4ZTUsMHhiMCwKKyAgMHg4ZSwweGNjLDB4ZTIsMHhmOCwweDY3LDB4M2UsMHhlMywweDY1LDB4NWYsMHg4YiwweDQyLDB4NjIsMHgxNywweGYwLDB4ZmMsMHgxZiwKKyAgMHgzYSwweDQ0LDB4Y2EsMHhiNSwweDc1LDB4YjAsMHhiNSwweDQzLDB4OGUsMHg3YSwweDkyLDB4ZmMsMHgzZiwweDM0LDB4NmQsMHhiMSwKKyAgMHg1MSwweDc2LDB4YWEsMHhiYSwweDZlLDB4ZjgsMHgxNywweGJmLDB4ODgsMHg4MiwweGJhLDB4OGQsMHg5ZiwweDk3LDB4M2QsMHhkYywKKyAgMHg3MSwweDBhLDB4NjQsMHgxMiwweDZjLDB4OTgsMHg4YywweDA4LDB4ZjAsMHgwNiwweDUzLDB4ZmUsMHg4ZiwweDJhLDB4NTQsMHhhOCwKKyAgMHhjZCwweGU5LDB4YzUsMHgwYywweGI1LDB4ZDUsMHhkYSwweDhjLDB4ZTcsMHg1YywweDQ2LDB4MjAsMHg4YywweGQ3LDB4MmYsMHg0YywKKyAgMHhkNywweGE5LDB4ODcsMHg3YywweDBiLDB4OWUsMHg5MCwweDY2LDB4ODIsMHhmYywweDA4LDB4MDksMHgyNSwweGZjLDB4M2YsMHg4ZSwKKyAgMHhiYywweGViLDB4NTAsMHhiZiwweDE0LDB4NmYsMHhiMSwweDNlLDB4OWEsMHhmMywweGI0LDB4NzAsMHgxNCwweDgxLDB4ZDAsMHhhNCwKKyAgMHgxOCwweGVjLDB4YTksMHg4YSwweGFlLDB4ZmIsMHg4OSwweDVjLDB4NDksMHg0ZSwweGIyLDB4ZGIsMHg3YywweGI2LDB4MTMsMHgyOSwKKyAgMHhmNSwweDVmLDB4Y2QsMHg2NCwweDBjLDB4YTYsMHhmMSwweGEyLDB4ZGEsMHgxNSwweGMyLDB4M2IsMHg2YywweDQyLDB4YWQsMHhjMywKKyAgMHg5ZSwweGI3LDB4NjcsMHhmNSwweDg4LDB4M2QsMHhhOCwweGZjLDB4ZTcsMHg3MiwweGZiLDB4Y2IsMHg5MywweDkwLDB4M2YsMHgzZSwKKyAgMHhlOSwweDY1LDB4YjgsMHgxYywweDVjLDB4MzAsMHg2NCwweGE4LDB4YWQsMHgyNSwweGYxLDB4YjQsMHg2NywweGJjLDB4ZmYsMHhmYywKKyAgMHg1MywweDU5LDB4MmQsMHgwNSwweDY1LDB4YzIsMHhlMSwweGUwLDB4ZGMsMHhhMSwweGI1LDB4MjcsMHhjNCwweDQxLDB4MTMsMHhmZSwKKyAgMHhkOSwweDU0LDB4YjcsMHhmMywweDc3LDB4YzUsMHg1ZCwweDc1LDB4MGQsMHhkOSwweGRmLDB4OTUsMHhmZSwweDE4LDB4ZTcsMHhmZiwKKyAgMHg4MSwweDZlLDB4YTksMHg0MywweGE3LDB4NzUsMHhmZSwweGM5LDB4ZTEsMHgzZiwweGNlLDB4Y2UsMHg2ZiwweGE2LDB4ZDksMHhmMCwKKyAgMHg5MSwweGE5LDB4ZmUsMHg2YiwweDEzLDB4ZWMsMHg1NCwweDY3LDB4YWUsMHhiZSwweGU1LDB4MjEsMHg0NCwweDQ3LDB4YWYsMHg0YywKKyAgMHhmMCwweGZmLDB4YmMsMHg0YywweDY3LDB4ZjYsMHg1YiwweDdlLDB4NDQsMHgzNiwweDI5LDB4ZmIsMHg2MCwweGZhLDB4MWQsMHg3NSwKKyAgMHg1ZSwweDRmLDB4NzMsMHhlMiwweGZlLDB4NWEsMHhlZSwweDJhLDB4MjUsMHhhYywweDNiLDB4NTUsMHgzNCwweGRiLDB4MzksMHhjZCwKKyAgMHg0YiwweDljLDB4Y2YsMHhiZiwweDliLDB4MjEsMHgxZSwweDcwLDB4NWIsMHg3ZSwweGNiLDB4NWUsMHgwNCwweDdiLDB4MzcsMHhkZCwKKyAgMHhlNiwweDNmLDB4NjEsMHhmNiwweDBmLDB4NjgsMHhiOCwweDViLDB4M2EsMHg2ZCwweGEzLDB4NjgsMHg0ZiwweDdkLDB4YTksMHg3MSwKKyAgMHhmOSwweDM5LDB4ODksMHhlYiwweDk3LDB4ZjIsMHhmYSwweGJiLDB4MDMsMHhlMiwweGIzLDB4YjAsMHhkYiwweDViLDB4ZTYsMHhiNSwKKyAgMHhhZSwweGRkLDB4MTUsMHgzMSwweGYxLDB4MmQsMHg4YywweDY4LDB4NjMsMHhjMiwweDM0LDB4YzQsMHgzZiwweDM1LDB4NTEsMHhmOCwKKyAgMHg0ZiwweDM0LDB4YmUsMHgzZSwweDg4LDB4YTgsMHhmYiwweDZjLDB4Y2QsMHhjMiwweGZkLDB4Y2EsMHgzYiwweDUwLDB4MjksMHhhMCwKKyAgMHgwNCwweDNiLDB4NjUsMHhmMiwweGZmLDB4OWMsMHg4NywweDgxLDB4YzAsMHg3YywweGU2LDB4MWMsMHhjZCwweGU5LDB4NDYsMHgxOCwKKyAgMHg5MCwweDEzLDB4ZTMsMHg3ZiwweGJlLDB4YTIsMHhjZCwweGQ1LDB4YWMsMHg0ZiwweGU2LDB4OGMsMHgyOCwweDU2LDB4MzQsMHg5NCwKKyAgMHhhYywweDNhLDB4ZWUsMHhjZiwweGE0LDB4ZmYsMHg2NywweDM5LDB4MGIsMHg0NCwweDlkLDB4YWUsMHgzYSwweDg0LDB4M2QsMHhlYSwKKyAgMHg1ZSwweGU4LDB4MzAsMHhmNCwweDk3LDB4MTQsMHhjZSwweDc4LDB4NDEsMHg3NywweDZjLDB4MjYsMHhhNywweGExLDB4NGIsMHhlZiwKKyAgMHg2OCwweGE4LDB4NWIsMHg4YiwweGE3LDB4MjEsMHg5OSwweGZmLDB4YmMsMHgxYywweDAyLDB4NmEsMHg1NiwweDA3LDB4YTIsMHg5ZCwKKyAgMHg2ZCwweGNkLDB4N2IsMHhhMSwweDY4LDB4NDIsMHhkZiwweGNkLDB4YjgsMHgzMywweGMwLDB4MzYsMHg5ZSwweDQ5LDB4N2IsMHhiZSwKKyAgMHhmMSwweDg1LDB4MjgsMHg1ZCwweDdiLDB4OGYsMHg4OSwweGZmLDB4MDcsMHhmNSwweDExLDB4YTMsMHg0ZSwweDEyLDB4NzAsMHgxMSwKKyAgMHgyYiwweGRlLDB4M2YsMHhjNiwweDA3LDB4NjgsMHgxMCwweGY1LDB4NTMsMHg0MiwweDc0LDB4ODEsMHgyMSwweDM0LDB4YTIsMHhlMCwKKyAgMHgyMSwweDA5LDB4ZjksMHgwMywweDc5LDB4OWMsMHhmNiwweGFhLDB4MzIsMHg2MCwweDBkLDB4ZTcsMHhhYywweGU1LDB4NmEsMHhlNSwKKyAgMHhmNSwweGQ4LDB4N2UsMHg1MCwweDc2LDB4NzksMHhhZCwweDdlLDB4MzEsMHg5YSwweDYxLDB4YzQsMHg3ZiwweDM3LDB4MDgsMHg2YSwKKyAgMHg0YSwweGZlLDB4Y2YsMHg0YSwweGJlLDB4MDgsMHg5YywweDQ2LDB4ZTAsMHg0YiwweDI4LDB4OGIsMHhmMSwweDNmLDB4OWYsMHg1NywKKyAgMHg1ZiwweDM5LDB4NjgsMHhlYiwweDQ1LDB4OGIsMHhmZSwweDNjLDB4ZGYsMHgzZiwweGZhLDB4YTQsMHgyNCwweGZlLDB4MDEsMHgyMCwKKyAgMHhjZCwweGIwLDB4ODUsMHhkMywweGNkLDB4MjgsMHhmZiwweGNlLDB4MDAsMHhjYywweDdmLDB4MTIsMHhhMCwweDc1LDB4YTgsMHhhMSwKKyAgMHgwNCwweGZlLDB4NzcsMHgwNiwweGU2LDB4YmYsMHg2NiwweGI0LDB4ZTksMHgzOSwweGI5LDB4ZTYsMHhiZiwweDM3LDB4ZjgsMHgzZiwKKyAgMHhiOSwweDNmLDB4ZTMsMHgzOSwweDQ0LDB4NDAsMHhmZSwweGRkLDB4ODEsMHhlOSwweGVmLDB4ZGYsMHg5ZiwweDE4LDB4MWIsMHhmYywKKyAgMHg5ZiwweGRjLDB4ZmYsMHg3ZiwweGY3LDB4ZWYsMHgzZiwweGQ4LDB4ZmEsMHgyYiwweGJjLDB4OTcsMHhkZiwweDAwLDB4ZmMsMHgwOCwKKyAgMHhhNiwweGVhLDB4ZmYsMHhjZSwweDQwLDB4ZmEsMHg3ZiwweDdjLDB4ZmYsMHhmZiwweDNmLDB4YWYsMHhiZiwweGE0LDB4YjAsMHhiZiwKKyAgMHg2MiwweGNkLDB4MDUsMHg1MywweDdmLDB4OWYsMHhmZiwweGJkLDB4YmYsMHg4YSwweDhhLDB4YmYsMHg2NiwweDk2LDB4Y2QsMHhmNiwKKyAgMHhmZiwweGYwLDB4ZjYsMHhmZiwweDJmLDB4ZmMsMHg1NSwweDVkLDB4YmQsMHg3YSwweDU1LDB4ZmYsMHg1ZiwweDBjLDB4ZmUsMHhiZiwKKyAgMHgzYywweGZmLDB4M2YsMHhkOCwweDc5LDB4ZmMsMHhiZiwweGYyLDB4ZjAsMHhmZiwweGNhLDB4YzMsMHhmZiwweDgzLDB4ZjUsMHhmZiwKKyAgMHhiZiwweGYyLDB4ZjAsMHg3ZiwweGY1LDB4ZjcsMHgxZiwweDRkLDB4ZmUsMHhmYywweGM3LDB4OWEsMHhjZiwweGY5LDB4MjEsMHg4ZiwKKyAgMHgyYSwweGIzLDB4ZjUsMHhhYywweDUxLDB4YjksMHgwYywweGZlLDB4MDIsMHhhNSwweGFhLDB4NGQsMHgxNywweGNiLDB4YzksMHg3YSwKKyAgMHhiNSwweGNhLDB4NjcsMHg1YiwweDI5LDB4NTYsMHhjMCwweDgxLDB4ZmUsMHhkOSwweDQzLDB4ZDYsMHhiMSwweDQ5LDB4ZTYsMHhmYywKKyAgMHhhOCwweGE4LDB4ZGEsMHhhMiwweGQ5LDB4Y2YsMHhkMywweGNkLDB4ZDksMHg4NSwweDZjLDB4N2QsMHg2ZiwweDkxLDB4MmEsMHg4YiwKKyAgMHg3ZCwweGJmLDB4OTEsMHhkNiwweDA3LDB4NGIsMHg3YywweDhiLDB4N2EsMHhiMiwweDdmLDB4YTcsMHhiNiwweGE5LDB4NjUsMHgxMSwKKyAgMHhjYSwweGY5LDB4MDQsMHg5MiwweGZlLDB4YjEsMHg2ZCwweDVhLDB4ZTMsMHhlNCwweDkwLDB4NmUsMHg5OSwweDRkLDB4OWUsMHg1NSwKKyAgMHhiNywweDU2LDB4YWIsMHhlYSwweDBkLDB4MWIsMHhkMywweDFkLDB4NWEsMHg1MywweDdhLDB4MjEsMHgyNywweDFlLDB4YzksMHg2NCwKKyAgMHg0ZCwweDg1LDB4ZjYsMHg2YiwweGZhLDB4YzMsMHg0ZSwweDE5LDB4MjIsMHg5YywweDU2LDB4OGIsMHhmMywweDAzLDB4YjMsMHgzNiwKKyAgMHgyMCwweDVhLDB4NGUsMHhjMCwweGNlLDB4MDMsMHhhZiwweDI1LDB4MjAsMHhmNywweDkwLDB4NmQsMHhhNCwweDg5LDB4ZjEsMHg0MCwKKyAgMHg2MSwweDc2LDB4MzIsMHgzZiwweDRhLDB4YzgsMHg3ZCwweDk2LDB4MWQsMHhkNCwweGVkLDB4N2EsMHg5NiwweGQxLDB4ODYsMHgwMywKKyAgMHgxZSwweDY2LDB4YjYsMHhiNSwweDRkLDB4ZjksMHg4MSwweDQzLDB4ZTQsMHg5ZiwweDM0LDB4YjksMHg0NywweDc0LDB4YzIsMHg5ZCwKKyAgMHgyMSwweDM1LDB4NmEsMHgwZCwweDkzLDB4NDEsMHg1MywweDdjLDB4ZjAsMHg1OSwweGVkLDB4NzIsMHhmMCwweDc3LDB4YmEsMHhlZCwKKyAgMHg4NCwweGYwLDB4MDUsMHhhNywweGM1LDB4NGUsMHhiNywweGU5LDB4MzUsMHg5NywweDk0LDB4OGIsMHhmMCwweDczLDB4MmYsMHgwNywKKyAgMHhkMiwweGY0LDB4MTUsMHhhMSwweDZhLDB4ZDQsMHgzNiwweDVhLDB4ZDAsMHg2NSwweGFhLDB4NGYsMHhlZiwweDE0LDB4MGUsMHg2OCwKKyAgMHhlZSwweDg4LDB4NzUsMHhiYiwweGQ4LDB4MDksMHhlZiwweGQxLDB4Y2EsMHhlNiwweGNjLDB4YTAsMHhhOCwweGE2LDB4MWQsMHg2MiwKKyAgMHgyZiwweDZiLDB4MDYsMHg0MywweGM1LDB4MjEsMHhjZCwweDQ4LDB4OWQsMHgzMiwweGU1LDB4NDcsMHg0MSwweGJhLDB4ZGEsMHg0MiwKKyAgMHg2ZiwweDM5LDB4OTYsMHhjOSwweDY5LDB4ZjcsMHhkNiwweGY0LDB4OTYsMHgzNCwweGE0LDB4MDMsMHhjOSwweGRhLDB4YjAsMHg5ZSwKKyAgMHhhNywweDZkLDB4NGMsMHgyMywweDE1LDB4ZjgsMHgyMiwweDJmLDB4OWMsMHhiNCwweDg2LDB4NTMsMHhmOCwweDkxLDB4NmEsMHhhMSwKKyAgMHgzMSwweGEyLDB4MGUsMHhkMiwweDZjLDB4MTQsMHg3ZSwweDhmLDB4NmIsMHg0ZSwweDZmLDB4MGUsMHg5MCwweDAzLDB4ODEsMHgyNiwKKyAgMHg1ZSwweGJmLDB4NTMsMHg2ZSwweDE5LDB4MTAsMHhiNiwweGYyLDB4ZmMsMHgwZCwweDFlLDB4MWYsMHg5YywweGY4LDB4ZTMsMHhmOSwKKyAgMHhlMSwweGViLDB4NzksMHg1MiwweGY0LDB4Y2EsMHhlYiwweGNlLDB4MTksMHhmNSwweDcxLDB4MzcsMHhmYywweGMwLDB4ZjMsMHhiNiwKKyAgMHhiNCwweDI2LDB4MjgsMHgwYywweDhiLDB4M2YsMHhiMSwweDRjLDB4MmIsMHhmYywweDk3LDB4YzYsMHg1YiwweDdjLDB4OTQsMHgyNywKKyAgMHgwZSwweDRkLDB4ZmMsMHhkNSwweGYxLDB4MzYsMHgxYywweGUwLDB4ZWEsMHhiNSwweDJhLDB4ZTIsMHg1YSwweGY4LDB4M2QsMHhhZCwKKyAgMHhhMCwweDM3LDB4MDksMHg3MiwweGJkLDB4ZDQsMHgyNCwweGU0LDB4ZDYsMHhhZiwweDlmLDB4MjMsMHg4ZSwweDkwLDB4ZjcsMHg4MywKKyAgMHhhZSwweDA4LDB4ZWYsMHgwZiwweDliLDB4OGMsMHgwZiwweGRlLDB4YjQsMHhjZCwweGYzLDB4OTksMHhjMiwweGRkLDB4ODYsMHg5MywKKyAgMHg4ZSwweDZiLDB4N2YsMHhhZiwweDU1LDB4ZTksMHgzNywweGY3LDB4ZTIsMHg3ZSwweGY4LDB4NzksMHg2ZCwweDE1LDB4ZTMsMHgxZCwKKyAgMHhmNCwweGUwLDB4OGYsMHgwMiwweDI3LDB4NTYsMHgxNSwweDA3LDB4MTMsMHhmMSwweDQxLDB4ODcsMHhiNCwweDBkLDB4MGUsMHgwOCwKKyAgMHhiYywweGM4LDB4YTIsMHhhNiwweDEzLDB4ZGUsMHg3MSwweDU1LDB4OWUsMHhjMCwweGZkLDB4MTMsMHg1MiwweDdlLDB4Y2YsMHhkYywKKyAgMHg1YSwweDViLDB4NTgsMHg3NCwweDdhLDB4MGUsMHg5MSwweDY5LDB4M2MsMHg5MCwweDlhLDB4OGMsMHgwZiwweDQ2LDB4OTQsMHhjZCwKKyAgMHhiMCwweDA2LDB4ZjIsMHhhMywweDRkLDB4MGQsMHhmNiwweDVjLDB4ZmEsMHg0NywweGExLDB4ZjgsMHhkOCwweDIyLDB4ZGQsMHgzMywKKyAgMHg5NSwweDNlLDB4YTcsMHgxOSwweGZjLDB4YmEsMHg1MywweGI1LDB4MzUsMHhiMSwweDhjLDB4NzEsMHg3MywweDdjLDB4MzAsMHgwYiwKKyAgMHhiNiwweGIyLDB4ZTcsMHhhMywweDhiLDB4ZjIsMHhiYywweGJmLDB4NzQsMHhhZCwweDA5LDB4MTUsMHg3NywweGM4LDB4NzUsMHg2NCwKKyAgMHgyMywweGFjLDB4MDksMHhlNSwweGZiLDB4ZTQsMHhmYSwweGVjLDB4NjksMHhiMCwweDlhLDB4Y2QsMHhmMiwweDA1LDB4NTYsMHg5MiwKKyAgMHgxMywweGE2LDB4ZjgsMHhlMCwweDZmLDB4YTAsMHgyOSwweGMzLDB4MzAsMHg0YiwweDU3LDB4YjEsMHhjNywweDg5LDB4MzMsMHgyYSwKKyAgMHgwYiwweDY0LDB4MTYsMHg2YywweDg1LDB4MmUsMHgyNiwweDNiLDB4OGEsMHg5YywweGIwLDB4MTEsMHg0YSwweDc4LDB4N2YsMHg1OCwKKyAgMHg1MywweDdjLDB4NzAsMHhjYSwweGRlLDB4YmUsMHgyMywweDQyLDB4MDcsMHg5MywweDQzLDB4MzksMHg3YiwweGU5LDB4NDEsMHhhOCwKKyAgMHg2NCwweDQ3LDB4ODcsMHg2ZiwweGQ5LDB4Y2IsMHgwZSwweGMyLDB4NDMsMHhjYywweDc2LDB4ZTYsMHgxYiwweDBlLDB4ZmEsMHgzYSwKKyAgMHg5NCwweDc0LDB4MzksMHg0MywweGUyLDB4ODUsMHhlNCwweGZkLDB4NjEsMHhjMiwweDRkLDB4MDQsMHgzZSwweDgzLDB4MWYsMHg3YiwKKyAgMHgxMiwweGE3LDB4YTksMHgxOSwweDhlLDB4ZTcsMHhlYiwweGMyLDB4YjAsMHgxYSwweGUzLDB4MDcsMHgzMCwweGM1LDB4MDcsMHg4NywKKyAgMHgwYywweDM2LDB4YTQsMHg5YiwweDgzLDB4ZTIsMHg3MiwweDdhLDB4MDAsMHhjYSwweDdjLDB4NGIsMHg5NCwweDU4LDB4YTIsMHhiOCwKKyAgMHg2NiwweDZkLDB4NmYsMHg4YSwweDExLDB4MjUsMHgxOSwweGY5LDB4ZTEsMHgxMywweGYzLDB4OTksMHhiNCwweDljLDB4MzQsMHg1NiwKKyAgMHg5MywweDZhLDB4ZjksMHgzYSwweGJiLDB4ZDEsMHgxZiwweDRkLDB4NmYsMHhlMSwweDgxLDB4YzUsMHhiNywweGE0LDB4MmMsMHhjZCwKKyAgMHg5MiwweDZiLDB4OWYsMHg0ZSwweDViLDB4ODgsMHhiZCwweGMxLDB4YzEsMHhmMywweDNmLDB4MjcsMHhmZSwweGYyLDB4YTQsMHg0MiwKKyAgMHhkMiwweDk2LDB4NjEsMHhhZiwweDk1LDB4ODMsMHhhNCwweDVmLDB4NjgsMHgwMSwweDdiLDB4OWQsMHgxMSwweGNmLDB4NmEsMHg2MSwKKyAgMHgzMywweDM0LDB4Y2IsMHgwNiwweGNiLDB4ZjQsMHgzNCwweDdlLDB4ODUsMHg5YSwweGUzLDB4ODMsMHgyMCwweGE1LDB4OTEsMHgzOCwKKyAgMHgxYiwweDUyLDB4OWEsMHg3NSwweDBiLDB4N2UsMHhlZiwweDBjLDB4ZWUsMHgyNiwweGRhLDB4MjAsMHg2NSwweDU1LDB4MmYsMHg3NCwKKyAgMHg5MSwweDM0LDB4YTEsMHg0NSwweDYzLDB4MGQsMHgyOSwweGY5LDB4OTksMHgyYiwweDMzLDB4YjgsMHg3ZCwweGRhLDB4ZDEsMHg3OCwKKyAgMHgyMywweDRmLDB4OGIsMHg4YSwweGE3LDB4MjUsMHg1MywweDEyLDB4YzEsMHhmMywweDk4LDB4MTUsMHgyMywweDRhLDB4MzIsMHgyYSwKKyAgMHg3NiwweDNmLDB4MzUsMHhmOSwweGM3LDB4M2UsMHgyNywweDU3LDB4YjUsMHgxMiwweDVlLDB4MDQsMHhmNywweDA4LDB4NzksMHhhYiwKKyAgMHhmYSwweDY5LDB4NGQsMHgzOCwweDJlLDB4YmYsMHgwNCwweGUzLDB4NWEsMHg5NSwweDc2LDB4YjQsMHg0MSwweDdjLDB4MmQsMHhlZCwKKyAgMHgzMiwweDJmLDB4OWQsMHgwYiwweDhhLDB4YmYsMHgzNSwweGU1LDB4NDcsMHg3ZCwweDExLDB4M2EsMHhkYywweDNmLDB4NzcsMHg5OSwKKyAgMHhlZCwweDk4LDB4MzgsMHgyNCwweDFkLDB4ZTYsMHhmNSwweDBiLDB4OWIsMHgyNiwweGVkLDB4ODQsMHhjMywweDI0LDB4ZDYsMHg0ZiwKKyAgMHg0ZCwweDFiLDB4ZjcsMHgxNCwweDcwLDB4NjIsMHhhNSwweDRmLDB4NGQsMHhmOSwweDUxLDB4YTcsMHhmZCwweDAxLDB4NTYsMHhhNiwKKyAgMHg4OCwweDhjLDB4MGMsMHgzMywweDdjLDB4MWUsMHgyNiwweDgzLDB4NzgsMHhiZiwweGI3LDB4ZWIsMHhkZSwweDEyLDB4NjYsMHhmMCwKKyAgMHgyMywweGY1LDB4NDgsMHg2NSwweDU0LDB4NGUsMHg4OSwweDBmLDB4YTYsMHhmNSwweDc3LDB4MzQsMHhjNiwweGFhLDB4ZmYsMHgzYSwKKyAgMHhkNSwweDBkLDB4MzgsMHhmOCwweGQ1LDB4MjYsMHhkZSwweDFmLDB4MzYsMHhjNiwweDA3LDB4ZGUsMHhkZiwweGI4LDB4MWIsMHg1NCwKKyAgMHhjZiwweDIyLDB4NzMsMHg3YywweGIwLDB4N2QsMHhjYSwweDJhLDB4ODMsMHgxNiwweDdiLDB4NTEsMHhhYywweDJkLDB4YzgsMHg4YywKKyAgMHg1ZSwweDVjLDB4Y2YsMHg1YSwweDJiLDB4Y2YsMHhjZiwweDE3LDB4NjMsMHg4ZSwweGNhLDB4MTksMHhiNywweDFiLDB4ZmMsMHgwMCwKKyAgMHgxMywweGYzLDB4M2IsMHg1MCwweDVlLDB4ZjUsMHhlYSwweDQ2LDB4YjYsMHhkYiwweGViLDB4OWUsMHhiNywweDc4LDB4MWEsMHhkOCwKKyAgMHg2NiwweDdmLDB4MjcsMHg5ZSwweDg4LDB4OWYsMHhmMSwweDdhLDB4NDAsMHgxZSwweGZmLDB4ZWQsMHhkMCwweDZjLDB4ZTYsMHhmOCwKKyAgMHhlMCwweGIwLDB4NTAsMHg5OCwweDY4LDB4OGIsMHhhNiwweDhjLDB4ZDMsMHg1OCwweDdlLDB4NTQsMHgyZSwweDc3LDB4OWMsMHhhZSwKKyAgMHgzNywweDEyLDB4YTUsMHg3MiwweDhjLDB4NDQsMHgzMiwweDUzLDB4N2MsMHg1MCwweDUxLDB4OGQsMHgyNiwweDIwLDB4OTUsMHhhYywKKyAgMHhjOSwweDA3LDB4ODMsMHhiOCwweGRhLDB4NTksMHhjZCwweGEyLDB4OGYsMHg4ZSwweDE1LDB4OTYsMHgyOSwweGFiLDB4OWIsMHg0NSwKKyAgMHhhMywweDNlLDB4OGUsMHhhNiwweGU2LDB4NDcsMHgwOSwweDBlLDB4NTgsMHhhNywweDE0LDB4YjAsMHhjYywweDExLDB4ODIsMHgwMywKKyAgMHg1NiwweGM0LDB4YTgsMHg5YSwweDUzLDB4YWUsMHhlZSwweDY3LDB4Y2IsMHg1OCwweGM2LDB4YjAsMHhmOCwweDYzLDB4ZjAsMHg5MywKKyAgMHg1OSwweDQxLDB4MzksMHg2NCwweDhhLDB4MGYsMHgzYSwweDI0LDB4MmIsMHg2OSwweGQyLDB4YmEsMHg0ZSwweDY1LDB4Y2MsMHgyMSwKKyAgMHg4YiwweDMzLDB4MWUsMHhkNywweGQ1LDB4YTgsMHhlYywweDRhLDB4NWYsMHgyYywweGVjLDB4MTgsMHgyYywweGQ0LDB4MmQsMHhmMywKKyAgMHg4OCwweGNjLDB4MWUsMHg4NywweDE1LDB4ODUsMHgzYywweDVmLDB4MmUsMHgxOSwweDFmLDB4ODQsMHg1YywweDU4LDB4MDUsMHhjZiwKKyAgMHg5ZiwweGNlLDB4YzgsMHhmMywweDU3LDB4ODAsMHg0OCwweGZmLDB4ZWIsMHhiMiwweDhjLDB4ODcsMHhjOCwweDU0LDB4ZDgsMHhkNSwKKyAgMHg5YywweGFmLDB4NjcsMHhhYywweGY0LDB4ZmYsMHgyNywweDc4LDB4YzIsMHhmNSwweDAwLDB4OGYsMHhlZiwweGQ3LDB4MjUsMHhlMywKKyAgMHg4MywweDAxLDB4Y2UsMHg1NiwweDM0LDB4ZjMsMHg5NCwweDc1LDB4ZTUsMHhkYywweGVmLDB4Y2UsMHhmOSwweDYzLDB4YTMsMHhjMCwKKyAgMHhjMywweDgyLDB4ZGYsMHg4MSwweGNmLDB4ZDgsMHg0YiwweGQxLDB4NzUsMHgyYiwweDg1LDB4NGEsMHhmMiwweDQ3LDB4ZmYsMHg0ZiwKKyAgMHg0MywweGI2LDB4OTUsMHg1ZiwweDM3LDB4YzUsMHgwNywweGFkLDB4Y2YsMHhjMCwweDk4LDB4MzYsMHg0NywweGNmLDB4MGMsMHg3ZSwKKyAgMHhlMywweDMwLDB4YmIsMHgwOCwweDk1LDB4NmYsMHg2NywweGJkLDB4Y2MsMHhkYiwweDllLDB4NzIsMHg0NywweGJkLDB4Y2EsMHgxOSwKKyAgMHg5MywweDI4LDB4MjcsMHgwYSwweGY4LDB4ODYsMHg4OSwweDFmLDB4NzIsMHhkNSwweGQ1LDB4YzAsMHg1MSwweGJkLDB4MzQsMHg2YSwKKyAgMHg3YiwweGQyLDB4NTYsMHgxOSwweGJhLDB4Y2MsMHg0YSwweDRmLDB4MmQsMHhkZSwweDU3LDB4YjMsMHgxZiwweDNlLDB4ZjYsMHg3ZiwKKyAgMHgyZCwweDdhLDB4ZjcsMHg3OCwweDQxLDB4OTksMHg3MiwweGM4LDB4M2YsMHg1NywweGI1LDB4ZWUsMHgxNiwweDkzLDB4ZjIsMHhhMSwKKyAgMHg2YiwweGYyLDB4MmYsMHhhMywweGFiLDB4ZTgsMHg5NiwweDdlLDB4ZjksMHhkMSwweGQ1LDB4NTMsMHhkNSwweDMzLDB4NzAsMHg0YiwKKyAgMHg1ZCwweGU2LDB4ZmYsMHgyMCwweGI5LDB4Y2EsMHg5YSwweDkwLDB4YTMsMHg4ZiwweDhlLDB4OTEsMHg0ZCwweDY0LDB4NGQsMHgzMCwKKyAgMHg1ZiwweDcyLDB4YWMsMHgxNCwweDNmLDB4MzIsMHhjNSwweDA3LDB4OWYsMHhhZSwweDViLDB4YzMsMHhmMiwweDM1LDB4YjksMHg5YSwKKyAgMHg0YywweDZkLDB4N2YsMHgwOSwweDBhLDB4N2EsMHhhZiwweDZmLDB4ZjAsMHhiNywweGUzLDB4NmIsMHhkZSwweGEyLDB4NWIsMHhjZSwKKyAgMHg5MSwweDVjLDB4ZjgsMHg2NywweGYyLDB4NzUsMHg5NiwweGYxLDB4MzAsMHg3OSwweDVkLDB4OWIsMHg5OCwweGVmLDB4Y2IsMHg3ZCwKKyAgMHgwMywweDAyLDB4M2EsMHg3MCwweGExLDB4M2QsMHgwYiwweDNhLDB4NDAsMHgzZCwweDk2LDB4MzEsMHhjNywweDRlLDB4YzgsMHhlMywKKyAgMHg1MCwweDNmLDB4NGEsMHgxNSwweDRmLDB4MzMsMHhmYywweDhhLDB4ZDksMHhiNSwweDBjLDB4MTcsMHgwOSwweDI2LDB4YmYsMHg1NywKKyAgMHhlZSwweGIzLDB4ZTQsMHg4MCwweGJmLDB4OWIsMHhkOSwweGRhLDB4NDksMHgyNSwweGNmLDB4ZjYsMHgzOSwweDk3LDB4NzksMHg5ZSwKKyAgMHgzYywweGM3LDB4NGUsMHg4MCwweDdiLDB4MjgsMHhlYiwweDI5LDB4ZDEsMHg4MSwweDFhLDB4YTcsMHg4YywweDY1LDB4ODYsMHhjOSwKKyAgMHgxMSwweGU2LDB4NGIsMHgzYywweGNmLDB4MzYsMHhmNSwweGUyLDB4MjIsMHgyMywweDA5LDB4N2MsMHg0NSwweGYzLDB4MjksMHhhOCwKKyAgMHgwYywweGRhLDB4YmEsMHhjNSwweDBmLDB4ZTEsMHgyMywweGNmLDB4MzEsMHg3ZCwweDA5LDB4OGEsMHgwNSwweDgxLDB4NjcsMHg5NCwKKyAgMHg2NSwweDg1LDB4MjcsMHg5OSwweGUzLDB4ODMsMHhiZiwweGQ0LDB4MGUsMHg0MywweDY5LDB4MDgsMHg0ZiwweGQzLDB4NGYsMHhlMCwKKyAgMHhhMCwweDMyLDB4OTcsMHg5NywweDQ1LDB4YTcsMHg4NywweDBlLDB4MGEsMHg1NSwweDNhLDB4NWUsMHg1OSwweGMxLDB4YWUsMHg0MiwKKyAgMHgwMSwweDRmLDB4OWQsMHg1MiwweDRkLDB4ZjEsMHhjMSwweDEyLDB4NjgsMHg2ZCwweGVmLDB4ZTgsMHg0NywweDZkLDB4ZTUsMHg1NCwKKyAgMHg5ZSwweGFmLDB4YjMsMHg4NywweGU0LDB4YjAsMHhhNSwweDA4LDB4NWUsMHg2MCwweDBmLDB4ZWEsMHg4NywweGE2LDB4YTYsMHgzZiwKKyAgMHhjYiwweDAzLDB4M2QsMHg1MSwweGQ0LDB4YmYsMHg2NiwweDdlLDB4MDAsMHg5ZSwweGM2LDB4NjksMHg2ZiwweDVhLDB4ZDQsMHhlZSwKKyAgMHg1OSwweGMxLDB4YWIsMHhiNywweDZhLDB4MmQsMHg2MSwweDMyLDB4MWQsMHhkYSwweGZhLDB4N2UsMHgxOCwweDZiLDB4MTQsMHhiYiwKKyAgMHgxNywweDhhLDB4NGUsMHhkMywweGIwLDB4MzksMHgzZSwweDI4LDB4NTksMHhlZCwweDIyLDB4ODQsMHg5OCwweDljLDB4ZWQsMHhiMSwKKyAgMHg0MiwweDA4LDB4NTQsMHg0MSwweDc2LDB4M2QsMHgwNSwweDc0LDB4YWIsMHhlYSwweGVjLDB4YzcsMHg2MywweGQ1LDB4MGMsMHgzYiwKKyAgMHg3YywweDU0LDB4YTMsMHg2ZSwweGQyLDB4ZDcsMHg5YywweGQ4LDB4YTAsMHg5OSwweGY3LDB4YzIsMHg2YiwweGJjLDB4MmQsMHhlMywKKyAgMHhjNiwweGE2LDB4OWYsMHgyOCwweDExLDB4ZTgsMHhkNiwweGIyLDB4Y2UsMHg3ZCwweGEzLDB4MTAsMHgwZSwweDM5LDB4ZTYsMHgwZCwKKyAgMHgxYSwweDg1LDB4NzIsMHg1NywweDc5LDB4NDYsMHg1OSwweDU4LDB4ZjQsMHgyNSwweGUzLDB4ODMsMHgzNywweDhkLDB4YzQsMHhkOCwKKyAgMHgyZiwweGJkLDB4MzksMHg5NywweDg4LDB4YzEsMHg4NiwweDNkLDB4NmEsMHgyNCwweDhhLDB4MmYsMHg4OCwweGFjLDB4ZGYsMHgyMCwKKyAgMHg5ZSwweGE3LDB4NWYsMHhmYSwweDVlLDB4ZDIsMHg2YywweGU3LDB4NzMsMHg0YywweGZjLDB4NDgsMHg2OSwweDVmLDB4YzAsMHgzOCwKKyAgMHg3MywweDgzLDB4NmQsMHg0YywweDVjLDB4YTYsMHgxZCwweGU1LDB4Y2IsMHgzZSwweDI2LDB4OGUsMHg4NiwweDJlLDB4M2IsMHhlNiwKKyAgMHg0NiwweDMzLDB4MDcsMHhjNSwweDJiLDB4NzAsMHhkMiwweDM1LDB4MzcsMHhjZiwweGFhLDB4ZGYsMHhlOCwweDRhLDB4ZjAsMHg5OSwKKyAgMHhlOCwweDAxLDB4NWUsMHhlNCwweDY1LDB4NzcsMHhmMSwweDZhLDB4YjgsMHg2MCwweDliLDB4NmUsMHg0NywweGI0LDB4NDMsMHhkZSwKKyAgMHg4NywweGRkLDB4N2MsMHhiMCwweDhmLDB4OGMsMHhiMCwweDQwLDB4ODMsMHg1ZCwweGExLDB4YWIsMHhkMywweDkzLDB4ZjksMHg1MSwKKyAgMHgxMSwweGI0LDB4MDksMHhiNiwweDBiLDB4MGUsMHgwOSwweDZmLDB4YTEsMHg0MSwweDUzLDB4YjUsMHgxYSwweDY5LDB4ZTUsMHg2ZCwKKyAgMHgyZiwweDc2LDB4NDAsMHg2MSwweDFmLDB4MGEsMHhkZSwweDExLDB4MTUsMHgzNywweDgyLDB4ZDUsMHgyMiwweGY5LDB4OTMsMHhmMSwKKyAgMHhjMSwweGE4LDB4ZDQsMHhhOSwweGUwLDB4ZmQsMHgxOSwweGEyLDB4YTMsMHg1NywweDJkLDB4MzIsMHhkOCwweDdiLDB4NzEsMHhmNSwKKyAgMHgzZSwweDgxLDB4YmQsMHgwYywweDcwLDB4OTAsMHgzZSwweDYyLDB4NjksMHhkMSwweDc5LDB4ZWIsMHgxMCwweDUzLDB4N2UsMHg5NCwKKyAgMHg5MCwweDc2LDB4NDYsMHgzOSwweDFiLDB4ZWEsMHhjZSwweDQ2LDB4MzQsMHhmMiwweDNkLDB4YTMsMHgxYSwweDJiLDB4Y2IsMHhjOCwKKyAgMHgyNywweGVjLDB4MmQsMHhkMywweGVmLDB4MGEsMHg4YiwweDA3LDB4ZjIsMHhkZSwweGQyLDB4NWYsMHg2ZSwweGM4LDB4NmEsMHg2ZiwKKyAgMHg0YSwweGU2LDB4NDcsMHg4NSwweDI2LDB4ZWYsMHhkNCwweDJlLDB4OTMsMHhjYSwweGU1LDB4NGIsMHgyZSwweGU1LDB4OGMsMHgyNSwKKyAgMHhjYiwweGJlLDB4MmUsMHg3MywweGZlLDB4YTgsMHgyOCwweDE5LDB4ZWIsMHhmOCwweDVjLDB4NTgsMHhjMCwweDMyLDB4ZjUsMHg5YSwKKyAgMHgyNCwweGZlLDB4MzksMHhhZSwweDc0LDB4NmEsMHhlMywweDNlLDB4YjcsMHg2MiwweGU1LDB4NjksMHg1NywweDNjLDB4NTEsMHgxYywKKyAgMHgwNywweDFmLDB4YzIsMHgyMSwweDU2LDB4ZDksMHg4NywweDgzLDB4NGYsMHhlMCwweGVkLDB4M2IsMHgyYiwweDk3LDB4ZGEsMHg3NiwKKyAgMHg5YSwweGYzLDB4YTMsMHhkMiwweDY2LDB4ZjAsMHg2OCwweDU0LDB4MDcsMHgwZCwweDdiLDB4YTIsMHhhOCwweGU4LDB4NjMsMHg2OSwKKyAgMHg1ZCwweGFjLDB4MDksMHgxZSwweDNjLDB4NDEsMHg0MywweDY0LDB4YzQsMHhkZSwweGIyLDB4YjgsMHhjNCwweDI3LDB4NmUsMHgxMCwKKyAgMHhjZCwweGYxLDB4YzEsMHg3NCwweDM2LDB4NWIsMHg1NywweDU5LDB4YzYsMHgxYywweGJmLDB4MGUsMHg1YiwweDI1LDB4YmIsMHg5ZSwKKyAgMHhlMSwweGNhLDB4N2UsMHg5ZCwweDY3LDB4ZjAsMHgwZSwweGQ2LDB4MjksMHhlNCwweDQ4LDB4Y2UsMHg0NiwweGU2LDB4MGMsMHhiNiwKKyAgMHgzZCwweDZmLDB4NGYsMHhlMiwweDlmLDB4NTEsMHhlNSwweDNhLDB4ZmEsMHhiYiwweDcwLDB4N2UsMHhlOCwweGNlLDB4OTUsMHhlNCwKKyAgMHg2MSwweGVkLDB4MzksMHg5NiwweDNmLDB4NzQsMHhjYiwweDRhLDB4OTQsMHhmNiwweGFiLDB4OWEsMHg4YiwweGEzLDB4ZjQsMHhkMSwKKyAgMHhlYywweDJiLDB4OTEsMHhiNCwweDhlLDB4ZTIsMHg5MCwweDdjLDB4NjcsMHg3YSwweDMyLDB4M2YsMHhhYSwweDNlLDB4Y2YsMHgwYSwKKyAgMHhhMywweDNkLDB4MmUsMHg1ZiwweGE2LDB4MGIsMHg0MSwweGM4LDB4ZmIsMHg5MiwweDdiLDB4MzgsMHhkMywweGU4LDB4MGYsMHgyMiwKKyAgMHg5NCwweGU4LDB4Y2UsMHgxYiwweDI2LDB4MGQsMHhiMCwweGMxLDB4YzksMHgxNSwweGY3LDB4YTAsMHg0NiwweDM2LDB4ZjUsMHg0NywKKyAgMHg5YiwweGIyLDB4MGYsMHgzZSwweGM3LDB4ZDUsMHgyOCwweDQxLDB4OTAsMHhhMywweGJkLDB4ODcsMHg0MCwweGM4LDB4YzksMHg2OSwKKyAgMHgyMSwweDBkLDB4ZjksMHg3MywweGI2LDB4ZTAsMHg2NCwweGUwLDB4ZjIsMHhhZCwweDNmLDB4NDcsMHhmOSwweGZjLDB4OGQsMHg2MCwKKyAgMHg2MiwweDdkLDB4MWMsMHg1MiwweDI3LDB4OWMsMHg2NSwweGYzLDB4OTgsMHhiNSwweDNjLDB4MjcsMHgwYiwweGRlLDB4MzEsMHhmYSwKKyAgMHhhMywweGU1LDB4OGMsMHgyOCwweDQ3LDB4MjUsMHhhMywweDNmLDB4YzgsMHg5MCwweDc0LDB4MDQsMHg0YSwweGMxLDB4MTksMHgxNSwKKyAgMHgzZCwweDg5LDB4ZjUsMHgxZiwweGExLDB4OWIsMHhlMCwweDczLDB4MWUsMHgzZCwweDZmLDB4MTAsMHhlZiwweDgzLDB4MzUsMHg3YSwKKyAgMHgyYywweGNkLDB4ODAsMHhhZSwweGYxLDB4MTcsMHhlYiwweGIyLDB4MmYsMHg5YiwweDI3LDB4MzYsMHg2ZiwweDYxLDB4NTQsMHgxMywKKyAgMHg5MywweGZjLDB4OTAsMHgzYywweDNmLDB4NmEsMHgxNywweDliLDB4ZTksMHhjYiwweDU4LDB4NjksMHg5ZiwweDBiLDB4M2IsMHg0MiwKKyAgMHgwNiwweDFmLDB4ZjgsMHgxMSwweDU4LDB4YzMsMHgyYiwweDA0LDB4NTcsMHhjZSwweGI4LDB4MDIsMHhkZCwweDdlLDB4ZDUsMHg3NywKKyAgMHg2NywweGI5LDB4MjksMHhmZiwweDYxLDB4YjEsMHhiNCwweDE2LDB4NzYsMHg0NCwweGQ0LDB4MzcsMHgzMywweDE0LDB4Y2YsMHgxZCwKKyAgMHg4OCwweDFlLDB4M2IsMHgzOCwweGJhLDB4M2UsMHg4MiwweDEyLDB4ZGUsMHhhOSwweGNiLDB4ZDMsMHhjOSwweGUxLDB4YzUsMHgxOSwKKyAgMHg1ZSwweDdiLDB4NDMsMHhjNiwweDU0LDB4OGIsMHg4OSwweDFmLDB4NTIsMHhlYSwweDgyLDB4MmIsMHhkYSwweDZkLDB4Y2QsMHg5OSwKKyAgMHg1ZCwweDhmLDB4OTcsMHg3MywweDVhLDB4NmMsMHg2NiwweDQ1LDB4YjQsMHhjMywweDhlLDB4ZjAsMHgwOCwweDY5LDB4NTQsMHhiYywKKyAgMHg0OCwweGVlLDB4NjYsMHhhNSwweGExLDB4Y2MsMHg4ZiwweGM0LDB4NzksMHgyNiwweGZlLDB4YTUsMHg5MCwweDMwLDB4YWMsMHg1NCwKKyAgMHg0MiwweDA5LDB4Y2IsMHgzOSwweDA1LDB4NGIsMHg4ZCwweDQ2LDB4YjEsMHgwOCwweDBjLDB4MGMsMHg3ZSwweDZjLDB4ZDYsMHgxNCwKKyAgMHgyZCwweDFjLDB4OTMsMHgyYiwweGQzLDB4YjMsMHg1OCwweGQzLDB4NDYsMHg3MywweDdlLDB4MTQsMHg4YywweDRmLDB4YWUsMHhmNCwKKyAgMHhmMSwweGI2LDB4NTksMHhlYSwweDQzLDB4YzQsMHhjZCwweGFiLDB4YTUsMHg4NiwweGI0LDB4MDMsMHgwMSwweGEzLDB4OTAsMHhmYywKKyAgMHg4YywweDcyLDB4YTAsMHhjMywweDVkLDB4NmYsMHg5ZCwweDRhLDB4ODgsMHgwOSwweGZmLDB4ZmMsMHgxNywweDNjLDB4NGQsMHgyNSwKKyAgMHgxZSwweGNiLDB4NjYsMHhmMiwweDAxLDB4ZGIsMHgwZCwweDY1LDB4OWMsMHhlZiwweGU4LDB4MGMsMHgzYywweGU2LDB4NzcsMHg2YSwKKyAgMHg4ZSwweDIwLDB4NzksMHhjMywweGQ3LDB4YzIsMHhlYywweGY1LDB4NDYsMHg0NSwweGM2LDB4YzQsMHg3OSwweDJmLDB4NGYsMHhmYiwKKyAgMHgzYSwweDJhLDB4ZTUsMHhhYywweGRhLDB4YmMsMHhjZCwweDY0LDB4NDgsMHhlMywweGZkLDB4NGMsMHg4ZCwweDM0LDB4OWUsMHhiNiwKKyAgMHhmYywweDA3LDB4ZWYsMHg0NywweGQ4LDB4YjMsMHgwZCwweDc4LDB4YzYsMHgxNCwweDM1LDB4ZjMsMHgwMywweGE4LDB4YjksMHgxMiwKKyAgMHg2YywweDI3LDB4Y2UsMHg2YSwweDhiLDB4NzIsMHgwZiwweDZmLDB4OTMsMHg1MSwweGU4LDB4MzUsMHhlMiwweDgzLDB4OGQsMHhmMCwKKyAgMHgyMCwweDg3LDB4M2QsMHgxZiwweDE4LDB4MWQsMHg0MywweGYyLDB4Y2MsMHhmYywweDQ4LDB4MmIsMHg2ZiwweDhhLDB4ZTUsMHg0NywKKyAgMHg1OSwweDYzLDB4ZjksMHg2MCwweDQ2LDB4NTgsMHhkMCwweGE4LDB4OGYsMHgxMywweGFjLDB4M2MsMHg0MiwweGNhLDB4ODksMHgyMiwKKyAgMHg5ZCwweDRjLDB4ZmUsMHhlZCwweGE0LDB4NDQsMHg3ZSwweGQ0LDB4ZTQsMHhmMywweDNjLDB4M2YsMHhlYSwweDliLDB4MWMsMHhiZCwKKyAgMHg0OCwweGUzLDB4YjEsMHhmYywweGYwLDB4Y2YsMHhjOSwweDY1LDB4YzQsMHgzZiwweGI2LDB4ZTMsMHgzOSwweGM3LDB4NDksMHg4YywKKyAgMHgxZiwweGUwLDB4NmIsMHgwZiwweDI2LDB4ZjMsMHhhMywweGE2LDB4ZjAsMHhmOSwweGYzLDB4ZWIsMHhhYywweDgzLDB4OTMsMHg3MCwKKyAgMHhhMCwweDFhLDB4NDAsMHhlMiwweGJjLDB4N2EsMHg5NCwweDE3LDB4ZjIsMHgwNCwweGM1LDB4NWIsMHgzOSwweDNmLDB4YjYsMHhjNywKKyAgMHg3YSwweGVjLDB4ZjUsMHg0ZiwweDkzLDB4ZjksMHhkYiwweDg4LDB4M2YsMHg3YiwweDI0LDB4YmIsMHg1NCwweGM3LDB4NDgsMHg1NCwKKyAgMHgxZCwweDUzLDB4Y2EsMHgyYywweDk0LDB4YzcsMHgwNywweDAzLDB4ZDIsMHgzYywweDUyLDB4ZDcsMHgyOCwweGQ2LDB4YjMsMHg4OCwKKyAgMHhkYSwweDAxLDB4OGUsMHg2NiwweDEzLDB4ZmUsMHhhOSwweDQzLDB4ZjksMHhiMywweDFiLDB4MWMsMHgzZSwweGFhLDB4NjQsMHhmNywKKyAgMHgyYiwweGRiLDB4NDEsMHhhZCwweGIzLDB4ZjAsMHgzNCwweGY4LDB4NDYsMHhlNiwweGFjLDB4YzYsMHhmNywweDJkLDB4NjQsMHhkYiwKKyAgMHg3ZiwweGEwLDB4MmUsMHg4YywweDY0LDB4ZmIsMHg4ZiwweDI1LDB4ZjIsMHhkZiwweGRhLDB4NzMsMHg4ZCwweGZjLDB4MjgsMHg0ZSwKKyAgMHhlMiwweDMxLDB4NDIsMHgzOSwweGRmLDB4MjYsMHgyZSwweGZiLDB4MTAsMHg2OSwweDkxLDB4NjgsMHgzNSwweDBlLDB4NTYsMHg2OCwKKyAgMHg2ZCwweGQ1LDB4ZjYsMHg4NSwweGY0LDB4MTcsMHg4YSwweDI5LDB4M2YsMHg0YSwweDc5LDB4OTYsMHg5ZSwweGY1LDB4OTUsMHg2YiwKKyAgMHhjZSwweDYwLDB4ZjYsMHgxOSwweGVmLDB4NmQsMHg4OCwweDY2LDB4NzksMHgzZSwweGJjLDB4N2UsMHgwMCwweGYxLDB4MTIsMHgzZSwKKyAgMHhmZiwweDhjLDB4YzksMHhlMywweDljLDB4M2YsMHhhNCwweDVkLDB4NGQsMHhlMiwweDlmLDB4MDgsMHg3NCwweDA2LDB4MzgsMHhmZSwKKyAgMHg1OSwweGIyLDB4YzEsMHg3ZSwweDQ2LDB4ZTIsMHg2ZCwweDQxLDB4NjIsMHhmOSwweGYzLDB4ZmEsMHhhMywweDFlLDB4OWIsMHgyMiwKKyAgMHgwZSwweGM5LDB4YmIsMHg5NSwweDRhLDB4NWYsMHgwYSwweGZlLDB4YTEsMHhiYywweDNlLDB4NGUsMHg0MywweDUwLDB4ZWQsMHhjNywKKyAgMHg2NSwweDFmLDB4MjYsMHg3YywweGZkLDB4MGIsMHg0ZSwweDQxLDB4MjQsMHhlMywweDY3LDB4YjgsMHhlYywweDQ2LDB4YzUsMHhhMiwKKyAgMHg5YiwweDJlLDB4NWUsMHg5NSwweGQzLDB4NmEsMHg4YSwweDBmLDB4Y2UsMHhhZiwweGRlLDB4YWYsMHhjZiwweDBhLDB4YjYsMHg0NSwKKyAgMHgyNywweGY1LDB4YjAsMHg1NiwweDdmLDB4NTEsMHg2MywweDE2LDB4ZWYsMHg4NiwweGI2LDB4MmUsMHhmYSwweDczLDB4OTYsMHgxOSwKKyAgMHgyMiwweDc5LDB4NjQsMHg5ZCwweGFmLDB4MjAsMHg0NCwweDg3LDB4MjYsMHg3OSwweDEyLDB4YTcsMHg4YiwweDRhLDB4NzcsMHhlMSwKKyAgMHhiMSwweDcyLDB4NmUsMHg5MywweDU1LDB4ZjcsMHg4MCwweGIyLDB4MDUsMHhhZCwweGNiLDB4ZWIsMHg1ZCwweDMzLDB4ZmEsMHgwMSwKKyAgMHhjZiwweDBiLDB4ZWYsMHg1ZiwweDk5LDB4ZDYsMHhmYiwweGJjLDB4YWYsMHhhMywweDgxLDB4NGUsMHg0YiwweDRmLDB4ZTIsMHgxZiwKKyAgMHg1MCwweGJlLDB4MDksMHhiYiwweDY4LDB4MzEsMHgzYiwweGQ0LDB4NDAsMHhmNiwweGMzLDB4MTYsMHgzYSwweDkzLDB4YzcsMHhjYiwKKyAgMHgwZSwweGUzLDB4YjEsMHg5ZCwweGE5LDB4ZDMsMHg1MSwweDU0LDB4NDIsMHhhYiwweDIwLDB4ZGYsMHg1MywweGU3LDB4NGQsMHg0ZiwKKyAgMHhlMiwweDFmLDB4ZGEsMHhmZSwweDZkLDB4NzgsMHg5OSwweDJkLDB4NDAsMHhkOCwweDgzLDB4MjAsMHhmMywweDE5LDB4NTYsMHg3YSwKKyAgMHhmYSwweGE2LDB4OTUsMHhlMiwweGJiLDB4ZTQsMHhiNSwweGU2LDB4NTksMHhkMSwweGJhLDB4OTUsMHg3MiwweDI1LDB4ZmMsMHg4OSwKKyAgMHhmZCwweGM4LDB4ZTcsMHg1YywweDJhLDB4YjYsMHgyNiwweGYxLDB4Y2YsMHg5NCwweDkwLDB4NzAsMHgyMSwweDk2LDB4ZWQsMHhjMywKKyAgMHhmOSwweGQ2LDB4MmEsMHgyMywweDNjLDB4MGQsMHg5NSwweDE4LDB4NDQsMHhkMCwweDJlLDB4NzEsMHg5NCwweDVjLDB4ODYsMHg5ZiwKKyAgMHg2YiwweGViLDB4Y2QsMHhmYywweDAwLDB4YmUsMHhkYywweDk3LDB4ZTEsMHg4ZiwweDQ2LDB4MzcsMHhkOCwweDlhLDB4ZmQsMHhmNCwKKyAgMHgyOCwweDczLDB4OWYsMHgzNiwweGZhLDB4YTMsMHgwZCwweDE4LDB4OGQsMHg2MiwweDQ5LDB4OTksMHg3ZSwweDk0LDB4NTUsMHg4NSwKKyAgMHhlOCwweDk4LDB4YjgsMHgzNCwweGIxLDB4ZmUsMHhjZiwweGQzLDB4MGQsMHhiMCwweDJiLDB4M2IsMHhiZiwweDVmLDB4NmUsMHgxMCwKKyAgMHgzNywweGMzLDB4MWYsMHhkNSwweDViLDB4ODcsMHhiYiwweDc4LDB4YmMsMHhhZiwweDc5LDB4NzIsMHg3ZSwweDMzLDB4NzUsMHg4OSwKKyAgMHgwZCwweDFlLDB4YjQsMHhjOCwweDAyLDB4ZjQsMHgzYiwweGE0LDB4MjgsMHgzMSwweDlmLDB4NzcsMHg2NCwweGRkLDB4MTcsMHhjYiwKKyAgMHhlNywweDFjLDB4ZDUsMHg5ZSwweDgzLDB4ZmIsMHg3OSwweDYzLDB4ZGMsMHgwMSwweGRjLDB4NTMsMHhkMywweGI5LDB4ZTAsMHg5YSwKKyAgMHhjYSwweDU2LDB4NDEsMHhiMSwweGQwLDB4ZjUsMHhmMCwweDMxLDB4MjksMHgxOSwweDFmLDB4OTQsMHgxOCwweDc0LDB4YWIsMHg2YSwKKyAgMHg1MCwweDJlLDB4MjcsMHgxZCwweGIwLDB4NDMsMHg5OCwweGMxLDB4ZTUsMHhjZiwweDYxLDB4M2YsMHhkMywweDUwLDB4MTEsMHg1NCwKKyAgMHg5MCwweGM1LDB4NzQsMHhhMywweDhlLDB4MGIsMHhiYiwweGNkLDB4NjMsMHhjYSwweDhmLDB4OWEsMHhhMiwweDRiLDB4OWYsMHg2OSwKKyAgMHhlZSwweGU3LDB4MTEsMHhjNiwweDhjLDB4YjAsMHg4ZiwweDg1LDB4MDIsMHhhZSwweGJmLDB4M2UsMHg4MSwweDQ4LDB4NzUsMHg5OSwKKyAgMHg2ZSwweGRkLDB4ZDcsMHgyNCwweDA5LDB4OTEsMHg4NywweDJhLDB4ZWIsMHgwNywweDAyLDB4NDUsMHhiNiwweDY0LDB4N2UsMHg5NCwKKyAgMHhiMCwweDA1LDB4ZTYsMHg3YiwweDJhLDB4NzksMHg3ZSwweGY4LDB4MjcsMHg3MCwweGUzLDB4NDQsMHg3ZiwweDkwLDB4YjEsMHhlYSwKKyAgMHg3OSwweDdhLDB4NDksMHg1OCwweDNjLDB4OTUsMHgzMSwweDBjLDB4OTUsMHg3NSwweDM2LDB4YmYsMHhkOCwweDk1LDB4OTAsMHg2ZiwKKyAgMHhmOSwweDRhLDB4MTgsMHhkZSwweDg1LDB4ZDIsMHhkNywweGYxLDB4M2MsMHg1ZSwweGE1LDB4YWYsMHgyYSwweGJjLDB4MTEsMHhhZCwKKyAgMHg3OCwweDE1LDB4MjIsMHhiNCwweDZhLDB4ZDgsMHgxYSwweDZlLDB4YmEsMHg0NCwweDhlLDB4NGYsMHg3MiwweGYzLDB4N2UsMHgyMiwKKyAgMHhmOSwweGNiLDB4MjcsMHhlNiwweDZmLDB4OTEsMHg5NiwweDQxLDB4NmIsMHhjOCwweGRlLDB4MmIsMHg2ZiwweGY2LDB4ZmMsMHgwNSwKKyAgMHg1ZSwweDk0LDB4NjIsMHhmYSwweDRiLDB4MDksMHhmNCwweDk3LDB4ZjAsMHg4ZSwweDgxLDB4YTcsMHgxNSwweDM0LDB4M2QsMHhjYSwKKyAgMHhlNSwweGNkLDB4N2YsMHgzNiwweGYzLDB4NjMsMHgyZiwweDUzLDB4OWUsMHg1MiwweDNhLDB4NzQsMHhiOSwweGM3LDB4M2YsMHhjNCwKKyAgMHhmOSwweDk0LDB4OGMsMHg3YywweDFlLDB4MTIsMHhkMCwweDRiLDB4ZjQsMHhmNiwweDMwLDB4MzksMHgyMywweGVjLDB4NjksMHgyNiwKKyAgMHgyMSwweGI5LDB4ZWIsMHgzYSwweDM1LDB4ODksMHg3ZiwweGYwLDB4MWYsMHhmZSwweGNhLDB4MzAsMHhlYSwweDNkLDB4ZmQsMHg4YiwKKyAgMHhiNywweDQyLDB4MjgsMHgwMiwweDNjLDB4M2UsMHhjOCwweDYwLDB4MDUsMHhjYiwweGUzLDB4N2MsMHhjOCwweDFiLDB4NzgsMHhiZCwKKyAgMHgxOCwweDMxLDB4ZTEsMHg3MywweDFlLDB4MWYsMHgzYywweGExLDB4YjgsMHg5YiwweDhkLDB4MzAsMHhmYSwweDIxLDB4OTgsMHgzZCwKKyAgMHg5OCwweGM5LDB4ZTMsMHg4ZiwweDExLDB4YjIsMHg0MiwweDc3LDB4NmUsMHgzNywweDNhLDB4MzQsMHg3MSwweDdlLDB4ZWMsMHgzNiwKKyAgMHgzNSwweDNkLDB4ODEsMHg3ZiwweDdlLDB4MzEsMHgwYSwweDIzLDB4ODUsMHg1NSwweDhkLDB4ZjgsMHhiZSwweGM3LDB4MTEsMHhkZCwKKyAgMHg1NSwweGJkLDB4NmQsMHhjNCwweDA3LDB4MmYsMHhmMSwweGI0LDB4MTYsMHgwZSwweDg0LDB4NDYsMHgzOCwweGJmLDB4MzEsMHhjYiwKKyAgMHhlOSwweDVhLDB4OWQsMHhjNCwweDNmLDB4ZjEsMHg2YSwweGNhLDB4ODAsMHhmOCwweDg1LDB4NzIsMHg4NCwweDU1LDB4NDUsMHhkNiwKKyAgMHg3NiwweDE3LDB4YjgsMHgzOSwweDNmLDB4OTIsMHg3YSwweDc3LDB4NDQsMHgxYywweDI3LDB4MDcsMHg1OCwweDI5LDB4MzUsMHhmMiwKKyAgMHhiZCwweDEzLDB4ZjMsMHhkYiwweDc5LDB4N2UsMHg3OCwweDhjLDB4MGQsMHg4MCwweGI1LDB4YjEsMHg1OSwweDQzLDB4ZjQsMHgxMiwKKyAgMHhiMSwweDJiLDB4NzgsMHg0NSwweGE1LDB4ZWQsMHhlNCwweGMzLDB4NDYsMHg5NCwweGNmLDB4ODUsMHhiNCwweDg3LDB4MDMsMHhiYiwKKyAgMHg4OSwweGYzLDB4OWUsMHhiNiwweDM2LDB4ZGUsMHhlZCwweDlkLDB4MGMsMHhhMSwweDZjLDB4NzIsMHhlYSwweDk2LDB4ZDksMHgzNywKKyAgMHgzMCwweDY5LDB4MDcsMHg5NCwweDM0LDB4MmUsMHg4NCwweGVjLDB4NjgsMHg2ZCwweDhiLDB4YTQsMHg2ZSwweGMxLDB4MWQsMHg0MiwKKyAgMHg4NCwweDg5LDB4ZjksMHhiYSwweGI0LDB4MmQsMHg1ZSwweDRkLDB4ZWYsMHgxZiwweDUxLDB4ZGIsMHg3YywweDI1LDB4N2EsMHg3ZCwKKyAgMHg5OCwweDg0LDB4ZjgsMHg3ZiwweGYxLDB4MGUsMHg1ZSwweDk2LDB4YzgsMHg1YiwweDY3LDB4YWEsMHhmOCwweDIxLDB4YzIsMHg4OSwKKyAgMHg3YywweDgzLDB4ZWEsMHgyOSwweDcxLDB4NzYsMHhmNCwweGI1LDB4NjQsMHg4MCwweGYzLDB4MWIsMHhmNywweDJlLDB4MGUsMHgxNywKKyAgMHhiYywweGEwLDB4NWUsMHhkNCwweGYzLDB4ZDQsMHhhYywweDllLDB4ZmYsMHgzMiwweGNjLDB4NWEsMHhiMiwweGRkLDB4M2UsMHg2NywKKyAgMHg1OCwweDU0LDB4MTIsMHg3OCwweDJmLDB4MjQsMHhjNCwweDY5LDB4OWYsMHg0ZiwweDg5LDB4OTcsMHgyNCwweDVlLDB4ZjYsMHhkNSwKKyAgMHgzNiwweDJhLDB4ZmUsMHg0NCwweGJiLDB4NGEsMHg3ZSwweDBlLDB4YjgsMHgzMSwweDNlLDB4NjIsMHg1NywweGZkLDB4MTUsMHg3YywKKyAgMHhhMSwweDUyLDB4ZjgsMHhiMSwweDYzLDB4ZjcsMHg1ZiwweDI1LDB4M2UsMHgwMywweDE3LDB4YjQsMHgwYSwweGRkLDB4ZWEsMHhjYSwKKyAgMHg5OSwweGE5LDB4NWQsMHhlNCwweDhkLDB4MGIsMHgxMSwweDZmLDB4NmIsMHgxMSwweGRlLDB4NWEsMHhiZCwweDdiLDB4NTIsMHgwYSwKKyAgMHgzZiwweDY0LDB4ZWMsMHhmOSwweGJiLDB4NzgsMHg5OCwweDM4LDB4MzAsMHgyYiwweDkyLDB4MzksMHg4YSwweDg2LDB4YzAsMHg2ZSwKKyAgMHg2ZiwweDQ5LDB4MzUsMHhiZSwweGQxLDB4MjEsMHhlZCwweDRkLDB4ODYsMHhmYSwweGE4LDB4Y2MsMHhjNCwweDBmLDB4YTksMHg0YiwKKyAgMHg4YiwweDYzLDB4ZWIsMHg0MywweGQzLDB4ZmIsMHhhNSwweGIwLDB4ZTQsMHhlMCwweGY1LDB4ZWMsMHhjZCwweGVhLDB4OGUsMHg2YSwKKyAgMHhhNywweDI2LDB4M2EsMHgxMCwweDI4LDB4MzYsMHhlYSwweDBlLDB4OGQsMHhiYSwweGVjLDB4YzksMHhmZSwweDY4LDB4NjMsMHhjYSwKKyAgMHg3NywweDk5LDB4YzEsMHgwNiwweGIwLDB4OTQsMHhmYywweDAxLDB4NzYsMHgzMiwweDY3LDB4YjQsMHg3ZSwweGZlLDB4MGQsMHg0ZiwKKyAgMHg0ZCwweDM2LDB4MzIsMHhjNiwweGZmLDB4ODcsMHhlNywweDVkLDB4ZTksMHgxNywweGUxLDB4OTksMHgzZSwweGNhLDB4MGIsMHg1ZCwKKyAgMHgyNywweGVlLDB4NWYsMHg0NywweGVmLDB4ZTYsMHhmYywweDAwLDB4ZmQsMHgzNiwweDU5LDB4ZWMsMHg4NywweDczLDB4NTAsMHgxMSwKKyAgMHhhMSwweGYzLDB4ZTUsMHg2NiwweGY4LDB4NGMsMHhhZiwweGU4LDB4OWYsMHg1NCwweDI0LDB4ZWEsMHhlNCwweGQ1LDB4NTAsMHgzOSwKKyAgMHg3MywweGNlLDB4MzcsMHhmYiwweDdmLDB4YTYsMHhjNCwweGQ3LDB4ZTcsMHgxOCwweDBmLDB4YTMsMHhkMywweGFhLDB4NDEsMHhkYiwKKyAgMHhmNiwweDlhLDB4N2EsMHhiOCwweGM4LDB4ZjksMHg5MSwweGNlLDB4OGEsMHhlNywweDYxLDB4YmIsMHgzNCwweDk3LDB4NzcsMHgwYywKKyAgMHg0OSwweGQ2LDB4YzcsMHg1MSwweGZjLDB4NWUsMHhjNiwweGZhLDB4ZWMsMHg3OSwweDZlLDB4MzEsMHhlZiwweGY2LDB4MzUsMHg2MCwKKyAgMHhkYiwweDI1LDB4NzYsMHgwNiwweDFlLDB4NjYsMHhlZSwweDdiLDB4NmMsMHhlNSwweDM5LDB4ZTUsMHg3MCwweDk2LDB4MjcsMHg0MiwKKyAgMHg4NywweGM1LDB4ODMsMHhjOSwweGZkLDB4OTAsMHhjNywweGYzLDB4YzMsMHgxMSwweGVkLDB4ZmMsMHg5MywweDdiLDB4YWEsMHhiNCwKKyAgMHgyYSwweGFiLDB4NTgsMHhjZiwweDk4LDB4MmQsMHg0ZSwweDBkLDB4YmQsMHgwYywweGI3LDB4YjYsMHgyZiwweGUyLDB4ODgsMHhlOCwKKyAgMHgyNSwweGM4LDB4YWYsMHgzNiwweGYyLDB4YzMsMHgyNywweGU2LDB4YWIsMHhmMCwweDM0LDB4OWQsMHhjYiwweDFlLDB4ODgsMHhjYSwKKyAgMHg1NywweGM4LDB4M2YsMHg0OSwweDRmLDB4NmMsMHgyOSwweDllLDB4MjgsMHgwMywweDljLDB4MzksMHgyYywweGZmLDB4ODQsMHhkYywKKyAgMHgwMCwweGZiLDB4NzQsMHg5ZSwweDNhLDB4NmUsMHhhYSwweDRmLDB4YTksMHg5NywweDhjLDB4ZmQsMHhkNiwweDJiLDB4Y2YsMHhmMSwKKyAgMHg5NywweGIwLDB4YzcsMHgxMSwweGY2LDB4ZGMsMHhlOSwweDIyLDB4NmIsMHhiNSwweGVlLDB4NjYsMHg1YywweGUxLDB4MGEsMHhmZiwKKyAgMHhkZCwweGRhLDB4NzYsMHg5ZSwweDk4LDB4YzcsMHhmOSwweDIxLDB4MjcsMHhlNiwweDBmLDB4NGYsMHhlMSwweDY1LDB4NDQsMHgyOCwKKyAgMHg0ZiwweGI2LDB4ODksMHg4ZiwweGIyLDB4YjcsMHg4ZCwweGIyLDB4MzgsMHg3OSwweDE4LDB4YWUsMHhlOCwweGYzLDB4NTgsMHhkYiwKKyAgMHg3MCwweDQxLDB4YjksMHhmNCwweDQ1LDB4ZWQsMHg3ZiwweDY3LDB4MDYsMHgzZiwweGU0LDB4YzQsMHhmYiwweGQ2LDB4MDksMHhjOSwKKyAgMHhiNiwweDIwLDB4NjQsMHg5OCwweDU2LDB4MmEsMHg5OSwweGNkLDB4YTgsMHgzYiwweGM3LDB4ZjIsMHg2NiwweDIwLDB4ZmUsMHg4OSwKKyAgMHg2NSwweDEwLDB4MTEsMHg1YiwweDczLDB4NGEsMHg3ZCwweDVjLDB4NjcsMHgyYywweDJkLDB4ZWEsMHgyOSwweDVlLDB4MWQsMHg4ZiwKKyAgMHhmYSwweDdkLDB4ZjEsMHgwZCwweGUyLDB4NzIsMHg3NSwweDVjLDB4YTgsMHhmNCwweGE2LDB4M2QsMHhjOSwweDE1LDB4MWYsMHhkYiwKKyAgMHhjMywweDJiLDB4ZTgsMHhhZiwweGUxLDB4MDcsMHgwMCwweGRjLDB4MmQsMHgzZCwweDA4LDB4NjMsMHg5YSwweDU0LDB4ZDUsMHgxYiwKKyAgMHhkOCwweDJjLDB4YWUsMHg4MCwweGRkLDB4ZDUsMHgyNSwweGZhLDB4OWQsMHg4NiwweGZmLDB4MjEsMHhkYiwweGU4LDB4ZjcsMHgxMSwKKyAgMHgzNSwweGUxLDB4OWYsMHg0MiwweGQ4LDB4MmQsMHhmMCwweDMyLDB4ZjYsMHhlYywweDIxLDB4NGUsMHhhMywweGVkLDB4YTEsMHhjMSwKKyAgMHg4ZCwweGM2LDB4MWQsMHgzOCwweDBkLDB4ZDQsMHgxMCwweDIyLDB4YTgsMHgyMiwweDVmLDB4NGEsMHg3ZSwweGI4LDB4ODEsMHg3ZiwKKyAgMHg2MiwweGRlLDB4OGYsMHhkNywweDg0LDB4MTYsMHgwOCwweDcxLDB4MTgsMHg1MCwweDBiLDB4ZGIsMHgxOSwweGU3LDB4ODcsMHgyNCwKKyAgMHhhZiwweGQxLDB4ZGQsMHhhMCwweGZhLDB4ZjAsMHgyNywweDNkLDB4ODksMHg3ZiwweDBjLDB4N2UsMHg4MCwweDEyLDB4ODMsMHg4ZCwKKyAgMHg5MCwweDQ0LDB4MjQsMHhjMywweGRiLDB4ZTMsMHhlMywweDg1LDB4NWEsMHg3MCwweDkzLDB4NDEsMHg4YywweDAwLDB4ZjMsMHhmOCwKKyAgMHg4YiwweGJmLDB4NmIsMHhlMiwweDg3LDB4OGMsMHhhNSwweDgxLDB4MjEsMHhhOCwweDM2LDB4ZjIsMHhiZCwweGJkLDB4ZmYsMHhiMiwKKyAgMHhjOSwweDI4LDB4NzMsMHg4YiwweDMzLDB4MDYsMHhhMCwweGExLDB4ZTEsMHhjNSwweDQxLDB4MmEsMHgzZiwweDQwLDB4M2MsMHg2ZCwKKyAgMHg2YywweGI5LDB4MzYsMHgxZSwweGNiLDB4YmUsMHg5MywweGU4LDB4NjUsMHgwNCwweDhhLDB4MWMsMHg0MSwweGE5LDB4MDgsMHhhNSwKKyAgMHgzOCwweDNmLDB4YTQsMHg4OSwweDFmLDB4MjAsMHg4ZiwweDY3LDB4NDMsMHgxOSwweDZjLDB4MDAsMHg1MSwweDEyLDB4ODAsMHg5MiwKKyAgMHg1YywweDc5LDB4MTUsMHhlZiwweDBmLDB4MDIsMHhhNCwweDUxLDB4ZTYsMHg4ZCwweDYyLDB4N2IsMHg0OCwweDg5LDB4YjIsMHg4OCwKKyAgMHg1OSwweGQ2LDB4OTksMHhmMSwweDRmLDB4YzYsMHg0NCwweGY3LDB4MzcsMHhjNiwweDg5LDB4NzksMHg3MSwweGMwLDB4NTcsMHhhMCwKKyAgMHhjYiwweGYwLDB4ZmYsMHg3NCwweGUyLDB4OGIsMHhmMywweGZjLDB4ZjksMHhlYywweDA0LDB4YmUsMHg2YSwweDk3LDB4MTIsMHhlYywKKyAgMHg5YSwweDFmLDB4NjgsMHgyZCwweDg2LDB4ZGIsMHhjNywweDgyLDB4MmIsMHhhYywweDE2LDB4YzUsMHgxMywweGQ1LDB4OWEsMHg0YiwKKyAgMHhmOCwweDdhLDB4M2UsMHg2YiwweGUyLDB4ODcsMHg5YywweDc4LDB4ZmUsMHg3YiwweGJlLDB4Y2YsMHhkOSwweDZjLDB4YjQsMHhhMywKKyAgMHg0YSwweDRlLDB4MjEsMHg2ZSwweDdiLDB4YzMsMHg4ZCwweDMzLDB4MjQsMHg4YywweDQzLDB4NDksMHgzZCwweDJlLDB4ODUsMHgyOSwKKyAgMHgzZiwweDRhLDB4ODgsMHhlZiwweDA3LDB4NGUsMHgzYiwweDkwLDB4NzQsMHgwNCwweDA1LDB4Y2EsMHg3OCwweGJlLDB4ZTUsMHg5ZiwKKyAgMHgwNSwweDllLDB4M2EsMHhiNSwweDFlLDB4ZjEsMHg4ZiwweDg5LDB4NWYsMHgzZCwweGI5LDB4ZGYsMHhhNCwweDEzLDB4NDIsMHgyNSwKKyAgMHg1OSwweGNjLDB4ZGEsMHg3OCwweGEyLDB4NTQsMHgyNSwweGI1LDB4MzUsMHg4YSwweDUxLDB4NjUsMHhhYywweDE5LDB4YmYsMHg0OCwKKyAgMHgyMCwweGE1LDB4M2UsMHhjZSwweDAxLDB4N2IsMHg3OCwweDVhLDB4NzgsMHhhNywweDE4LDB4ODAsMHg1NiwweDM2LDB4MmIsMHg2OCwKKyAgMHgxZCwweDI2LDB4Y2YsMHhjMywweDNhLDB4N2YsMHg1NiwweDQwLDB4ZWUsMHhiMiwweDhmLDB4YTksMHhmYiwweDU5LDB4MDEsMHgwYiwKKyAgMHg5YywweDM2LDB4ZjcsMHgwNywweDkxLDB4MTYsMHgwYiwweDg2LDB4ZmMsMHg3MSwweDczLDB4NzYsMHhiZSwweDUxLDB4ZTcsMHhhMCwKKyAgMHhlMywweDU2LDB4YjIsMHg5ZSwweDZkLDB4NTUsMHg4YywweDg1LDB4NDIsMHg0MywweDU1LDB4MDgsMHg0NSwweDAzLDB4OWMsMHgxZiwKKyAgMHgzMiwweGExLDB4ZWYsMHg5NCwweGZiLDB4NjIsMHhlNywweGY3LDB4OTEsMHgzYiwweDM2LDB4YTMsMHhmNiwweDc3LDB4NDYsMHgyZCwKKyAgMHgwOCwweDg0LDB4ZDQsMHgzNSwweGYwLDB4ODAsMHgyZSwweDIyLDB4OTAsMHg1MCwweDVlLDB4MDksMHhhOCwweGEzLDB4MTEsMHg4ZCwKKyAgMHgwYywweDI3LDB4ZTYsMHgwNywweDAyLDB4ZGYsMHg0NSwweGZiLDB4MDUsMHhmMSwweGNmLDB4ZDIsMHg5YywweGFiLDB4OWUsMHgzNywKKyAgMHhkOCwweDAyLDB4ZGUsMHgyOCwweGU0LDB4NjksMHhmOCwweGIzLDB4ZmYsMHgyNiwweGJjLDB4NTIsMHg3MCwweDBjLDB4YmUsMHgzNCwKKyAgMHg1YSwweGE3LDB4ODksMHgxZiwweGNkLDB4OTgsMHg5OCwweDRmLDB4YTcsMHhjNCwweGU1LDB4YzksMHgyZiwweDM5LDB4MWUsMHhmMCwKKyAgMHg1NSwweDMyLDB4NGUsMHgwYiwweGM5LDB4MmUsMHgwYSwweDg2LDB4YTIsMHgzZiwweDFmLDB4NmIsMHgwNCwweDE2LDB4Y2MsMHgzMSwKKyAgMHhmMSwweDAzLDB4NDgsMHhmYiwweDhkLDB4ZmUsMHgyMCwweGI2LDB4NGIsMHhkZiwweGI4LDB4OTIsMHg3YiwweDU1LDB4YzcsMHhjMSwKKyAgMHg1MiwweGYxLDB4MTUsMHhiOCwweDFhLDB4ZmMsMHhmOSwweGY5LDB4MjUsMHgyNywweDZhLDB4ZTYsMHhjMSwweDFiLDB4N2UsMHg4MywKKyAgMHgyOCwweDA5LDB4MTIsMHhmYiwweGU3LDB4ODUsMHhiYywweGI1LDB4ZGEsMHgyZSwweGNlLDB4MDYsMHg4OSwweGY4LDB4MjcsMHg4MCwKKyAgMHgyZiwweGMyLDB4ZWIsMHhkZCwweDE0LDB4ZjUsMHg4OSwweDFlLDB4YmMsMHhhMiwweDg4LDB4OGYsMHg3OCwweDU3LDB4NmYsMHhjZiwKKyAgMHhlZiwweDVmLDB4ZTQsMHgyNSwweDQ1LDB4Y2QsMHg4OSwweGZiLDB4YzMsMHhlNiwweDNhLDB4ZTMsMHg3ZCwweGZmLDB4MWIsMHg5YSwKKyAgMHg2OSwweDJmLDB4ZTMsMHhjMCwweGEyLDB4MTEsMHg5NCwweDYwLDB4ODUsMHhjNSwweDIwLDB4MGYsMHhmYSwweDE1LDB4NTgsMHhlZiwKKyAgMHhiOSwweDlmLDB4ZDcsMHhmMywweDlhLDB4ZjgsMHg5MSwweGE0LDB4MTgsMHhiYiwweDRiLDB4OWIsMHg4YiwweDNjLDB4YTYsMHg3NiwKKyAgMHg2YiwweDRlLDB4OGQsMHgwMiwweDVhLDB4MzcsMHg4ZiwweDgzLDB4NzMsMHhiMiwweGFjLDB4ZjgsMHhiZiwweDBmLDB4N2UsMHgwOSwKKyAgMHhlNSwweDhmLDB4NjIsMHhlMiwweDQ3LDB4ZWEsMHg5YSwweGMyLDB4YjMsMHg0OSwweDRiLDB4NzQsMHg1YiwweDhmLDB4NzgsMHg5OSwKKyAgMHhlZSwweDg1LDB4MGEsMHgyZCwweDJiLDB4NTQsMHhmMCwweDljLDB4MzYsMHhjNiwweDRhLDB4MWMsMHg2YiwweGRhLDB4YzUsMHg2MiwKKyAgMHhjZiwweDIxLDB4ZjYsMHhmMCwweDI1LDB4ZGMsMHgyMSwweDQ1LDB4ODksMHhmZCwweGMzLDB4ODQsMHhmOCwweGZhLDB4NmMsMHgxMCwKKyAgMHg3ZiwweGNiLDB4MzcsMHg5MiwweDllLDB4YTUsMHhkNiwweDhjLDB4ZDAsMHhiNywweGM4LDB4YmMsMHhiYywweGY1LDB4YzEsMHg5YywKKyAgMHgwZiwweGI0LDB4NzEsMHg2NSwweDNmLDB4NmYsMHhlNCwweDE0LDB4NGQsMHhlYywweDlmLDB4N2MsMHgyNSwweDJlLDB4Y2YsMHgyZiwKKyAgMHg4OCwweGZiLDB4YTQsMHhhMywweDI4LDB4YWYsMHhhYywweDgzLDB4ZTIsMHgzZiwweDI5LDB4OTcsMHg2MCwweDE2LDB4NmYsMHgxYywKKyAgMHg3NiwweDFlLDB4MGUsMHhmMywweGZlLDB4NWYsMHg4MywweDIyLDB4ZDQsMHg0ZSwweDNjLDB4ZmYsMHgxNiwweDY5LDB4ODUsMHhhMSwKKyAgMHhiZiwweGRhLDB4MzYsMHg5MywweDkxLDB4YmMsMHg0MywweGMxLDB4MTIsMHg0NiwweDdmLDB4NzUsMHhkZCwweDM2LDB4ZTgsMHg2MSwKKyAgMHgyNSwweGZhLDB4YTIsMHgxZSwweGYyLDB4NjcsMHhkMiwweGM4LDB4NTQsMHhhMCwweGI5LDB4ZTYsMHhmZSwweDY4LDB4NDIsMHg1YywKKyAgMHhkZiwweDc1LDB4ZTIsMHhmZSwweGMxLDB4ZjMsMHgwMiwweDhlLDB4OTAsMHhiZCwweGIwLDB4NzksMHgwZiwweDJiLDB4NTEsMHhlNCwKKyAgMHgwZCwweGU0LDB4NTMsMHhiNSwweGFkLDB4ZDEsMHhlZSwweGEzLDB4OWIsMHgzZCwweGU2LDB4ZmUsMHg2OCwweGQ2LDB4MzgsMHgxZSwKKyAgMHhmMCwweDBjLDB4MjAsMHhkYSwweDcxLDB4YWEsMHg1NCwweDI1LDB4OGMsMHhiNywweDgxLDB4MDAsMHhjMywweDEwLDB4MGIsMHhkYywKKyAgMHhhZiwweGZhLDB4MWMsMHhlNiwweGZlLDB4NDQsMHgyNCwweDczLDB4YzUsMHg1MiwweGUzLDB4N2QsMHg5ZiwweDExLDB4ZjcsMHhjNSwKKyAgMHhiYSwweDMxLDB4YWUsMHg5MiwweDBiLDB4YTUsMHgwYiwweDBmLDB4ZTMsMHg4OSwweDc4LDB4NDksMHgxYywweGEyLDB4ODcsMHg3YywKKyAgMHg2OCwweGIxLDB4NmUsMHgxMiwweDkzLDB4ZmQsMHhkMSwweGI2LDB4ZGMsMHg3NCwweGM5LDB4NmEsMHhiYywweDZmLDB4OWYsMHg3OCwKKyAgMHg4OSwweDhlLDB4YzAsMHhjZCwweDYwLDB4ZDMsMHg3MywweDQ2LDB4ZTksMHgwNSwweGFkLDB4MGEsMHg2YywweDBmLDB4ZTMsMHhmYiwKKyAgMHg1ZSwweDUwLDB4OGMsMHg3ZSwweDcwLDB4YzMsMHg0OSwweDdmLDB4OGUsMHg3MCwweDA1LDB4ZmUsMHhiNCwweGFhLDB4MzQsMHhjMywKKyAgMHhhNiwweDE3LDB4OWMsMHhkNywweGJmLDB4NjQsMHhiMSwweGI2LDB4MjAsMHhlYSwweDUxLDB4MWMsMHhmMCwweGZhLDB4MDIsMHg3YSwKKyAgMHg3MiwweDY2LDB4NjksMHhiZSwweDU1LDB4NGYsMHhlZCwweDBmLDB4MmIsMHhmNSwweGIwLDB4MTksMHgwYiwweGU1LDB4NzYsMHhjZiwKKyAgMHgyOSwweGNkLDB4YzgsMHg5NiwweGVmLDB4NDEsMHg0MywweDk1LDB4MjcsMHg4YSwweGQzLDB4MWUsMHgzMiwweGQyLDB4MWMsMHhmMCwKKyAgMHhkOSwweDU1LDB4ZGEsMHg2NCwweDQ5LDB4ZTEsMHg0NywweDQyLDB4MDQsMHhiZCwweGRjLDB4YmEsMHg0OCwweGUwLDB4ZGUsMHhhZCwKKyAgMHg1OCwweGQ5LDB4N2IsMHgyNCwweDU2LDB4ZWYsMHhlNiwweDIyLDB4MjMsMHhlYSwweDA2LDB4OGIsMHg5ZCwweDUxLDB4MzMsMHgzZiwKKyAgMHgwOSwweGU3LDB4NDcsMHhkYSwweDRkLDB4Y2UsMHhmOCwweGU0LDB4NzYsMHg3OCwweDFmLDB4ZTIsMHgzNCwweGUzLDB4OWYsMHg5MiwKKyAgMHhkNiwweGVjLDB4OGUsMHg1ZSwweDIzLDB4ZGYsMHhiZSwweGM1LDB4N2YsMHhkYSwweGU4LDB4MGYsMHg5MiwweDhjLDB4OGYsMHhlMCwKKyAgMHhmZSwweDQxLDB4MjMsMHhlOCwweDIxLDB4ZGIsMHhkYSwweGFkLDB4MjMsMHhkMiwweGM1LDB4NTgsMHhkOSwweGZlLDB4ZmIsMHhmZSwKKyAgMHg0OCwweGM0LDB4N2QsMHgwYywweDYxLDB4Y2YsMHg4MCwweGVmLDB4NDQsMHgyOCwweGZjLDB4ZWQsMHhjNSwweDZiLDB4MGIsMHg5NCwKKyAgMHgxNCwweDdlLDB4ODAsMHg5ZiwweDA2LDB4ZTcsMHg3MywweGIxLDB4MzMsMHgzYSwweGQxLDB4ZmYsMHhhMiwweDVmLDB4YmEsMHhjYywKKyAgMHhhYSwweDhlLDB4ZDksMHg0NiwweDZiLDB4YWUsMHhkMCwweGNmLDB4YjksMHhjNywweGNjLDB4ZGIsMHg5NCwweGRhLDB4MWYsMHhlZCwKKyAgMHgwMCwweDQ1LDB4NmQsMHhmZSwweDc4LDB4YzEsMHgwMywweDA4LDB4MDMsMHg4YywweGZiLDB4N2YsMHgwMiwweDA3LDB4OTUsMHg2ZSwKKyAgMHhkZCwweGYwLDB4ZmYsMHg3YywweDA0LDB4ZWUsMHhkZSwweDI1LDB4Y2YsMHhhNCwweGYwLDB4NDMsMHgzYSwweDgxLDB4NDQsMHhlYywKKyAgMHhkZiwweDE0LDB4MzcsMHg5MywweDdjLDB4ZWQsMHhmZCwweDE4LDB4YWQsMHhjNCwweGE3LDB4Y2MsMHhjZiwweGU2LDB4OWMsMHhhMywKKyAgMHhkZCwweGU0LDB4MmYsMHhiNSwweDJkLDB4NWUsMHhmYiwweDI2LDB4NzksMHg3MywweGNkLDB4YzMsMHhhNiwweGY4LDB4ZDcsMHg2MiwKKyAgMHg2MCwweGJhLDB4MWEsMHg1YywweGU0LDB4ODIsMHg2NiwweDYxLDB4YzcsMHg4MCwweDkxLDB4Y2YsMHhkYywweGNiLDB4MTgsMHg1MywKKyAgMHg4MywweDk0LDB4ZDcsMHg3MywweDc1LDB4MjgsMHg4NSwweGIwLDB4NDgsMHgyNSwweGE5LDB4ZmMsMHg0OCwweDhmLDB4MDUsMHhiZiwKKyAgMHhlZiwweDkzLDB4OTcsMHg1YSwweDllLDB4MTYsMHhlMiwweDZkLDB4NDEsMHhkZSwweGQ1LDB4OWEsMHgwNywweGI3LDB4ODYsMHg3OCwKKyAgMHhkOCwweDRiLDB4NWEsMHgxNSwweGM0LDB4MmIsMHg2ZiwweDExLDB4MzMsMHgzZiwweGE0LDB4MTUsMHg3YSwweGMxLDB4MzUsMHhiOCwKKyAgMHhjNCwweDlkLDB4ZGQsMHhjYywweDNlLDB4MDMsMHg1NywweDE0LDB4Y2QsMHhhOCwweDA4LDB4MzksMHgzNCwweDU5LDB4ZDUsMHg5ZCwKKyAgMHgyZSwweGIxLDB4NWYsMHgxZCwweDU2LDB4ZTYsMHgwOCwweGE4LDB4YWYsMHhjZCwweGZjLDB4NDgsMHg5YiwweGM5LDB4NzksMHg5OCwKKyAgMHhhZiwweDJmLDB4MTksMHgxNCwweDJiLDB4NjIsMHhlYiwweDYzLDB4OTQsMHhjNSwweDI5LDB4MGIsMHhmYSwweGYxLDB4YzUsMHg0ZiwKKyAgMHg0OCwweDk3LDB4OTUsMHhiZCwweGFmLDB4ZTMsMHhkMiwweGE1LDB4ZjAsMHgwMywweDA4LDB4ZTMsMHg3ZSwweGNlLDB4NDYsMHgyZSwKKyAgMHg2ZSwweDgzLDB4NDMsMHgxMywweDY1LDB4MWEsMHgzYSwweGI4LDB4ODYsMHg4ZCwweGZhLDB4YzEsMHgyMywweDY4LDB4ZmYsMHg1ZSwKKyAgMHhkMywweDFmLDB4NzYsMHg3MywweGRhLDB4Y2IsMHg1MiwweGJlLDB4NjYsMHhhNCwweDU5LDB4N2UsMHgxOSwweGEzLDB4MDUsMHgzOCwKKyAgMHhjOSwweGYzLDB4MDYsMHg2YSwweDUxLDB4OTAsMHg5ZSwweDI0LDB4OGYsMHhhNSwweGU1LDB4MGYsMHhjOCwweDVlLDB4NGIsMHg2YSwKKyAgMHg3ZiwweGI0LDB4N2QsMHhmZSwweDk5LDB4MWMsMHhlZiwweDFkLDB4MzEsMHhlMiwweDdkLDB4NDYsMHg1YiwweGQ4LDB4NzUsMHhhYywKKyAgMHg4MCwweGJmLDB4ZWYsMHgxNywweGIwLDB4OWEsMHhmZCwweGMwLDB4MjcsMHg1ZiwweGMzLDB4OGYsMHgyNCwweGVjLDB4MTgsMHg3NCwKKyAgMHg5YywweDkwLDB4YTcsMHhhNCwweDhmLDB4NjgsMHg4ZiwweGM3LDB4ZWEsMHg3ZCwweDBlLDB4NmIsMHg2ZCwweDRjLDB4YjUsMHg1MiwKKyAgMHhjZSwweDRmLDB4ZDIsMHhlMiwweGFkLDB4MWYsMHg5NCwweDM3LDB4OTEsMHg2YiwweGY4LDB4OTEsMHg5NCwweGY5LDB4YzEsMHgyNSwKKyAgMHhjMywweGUyLDB4MTgsMHhhNywweDM1LDB4MzAsMHhkMCwweDBlLDB4MWMsMHgxOSwweDc1LDB4MDcsMHg5ZCwweDQ2LDB4YTEsMHg5YywKKyAgMHhiZSwweGE3LDB4ZDksMHhmNiwweDYxLDB4NTMsMHgyYSwweDNmLDB4ZDIsMHg5OCwweGYwLDB4NGIsMHg1OCwweGJmLDB4MWEsMHg0ZSwKKyAgMHhjNSwweDE1LDB4NTMsMHg0MSwweGQ0LDB4M2UsMHgyNiwweGVjLDB4NTcsMHhiOCwweDg2LDB4YTIsMHg2MywweGY2LDB4MTksMHhjMiwKKyAgMHgzNSwweGY4LDB4YzcsMHhkMCwweDhmLDB4Y2IsMHg2ZCwweDFiLDB4NzIsMHg4NiwweGI0LDB4MDMsMHg4YywweGQ3LDB4NGYsMHgxNSwKKyAgMHhiYywweDQ2LDB4MGUsMHg0YywweDc2LDB4NDcsMHg3MSwweDE5LDB4OWYsMHhlNSwweGZkLDB4NDEsMHhhYSwweDExLDB4MWEsMHgxMSwKKyAgMHgzMywweGZlLDB4OTEsMHgzOCwweDdhLDB4OTEsMHgzNywweDkzLDB4MzMsMHhlYywweGY5LDB4YzAsMHg0NCwweDliLDB4NTcsMHg2NiwKKyAgMHg1ZiwweDg5LDB4ZjIsMHg2MSwweDg2LDB4YmQsMHg4NSwweDliLDB4NWEsMHg0ZiwweGE1LDB4ZTYsMHg4NywweGMzLDB4NWUsMHhjYSwKKyAgMHg4YiwweGUwLDB4M2MsMHgzOCwweDRkLDB4OWQsMHg5OCwweDBmLDB4NDYsMHg0NCwweGFjLDB4NTMsMHg4YiwweDBmLDB4NTIsMHhmYiwKKyAgMHhjMywweDFhLDB4ZjUsMHg3MSwweDg4LDB4NzYsMHhhNCwweDJkLDB4NzEsMHgyMCwweDA0LDB4OGQsMHhiNSwweDIxLDB4MjMsMHgyMiwKKyAgMHg4NiwweDg2LDB4M2YsMHhlMiwweDlmLDB4NWMsMHg3YiwweGQyLDB4MWUsMHgzMSwweGY4LDB4OTEsMHgzOCwweDFmLDB4NTQsMHgwOCwKKyAgMHhkZiwweDJlLDB4OTIsMHg2YywweDBiLDB4ZWIsMHg4ZSwweDE1LDB4Y2EsMHhjNSwweGY5LDB4MjEsMHhjZCwweGY5LDB4ZTEsMHg0MywKKyAgMHhmOCwweDU5LDB4NjcsMHg3OSwweDk3LDB4NGMsMHhmMCwweDQzLDB4ZGEsMHg4MiwweGMyLDB4ZTcsMHhiYywweDExLDB4MjEsMHgwZSwKKyAgMHg2YSwweDhlLDB4YzcsMHhhOCwweDkzLDB4MWUsMHg0OSwweGMxLDB4M2YsMHhlNywweGUxLDB4ZjMsMHhmNCwweDRhLDB4NGYsMHhkNiwKKyAgMHg2MCwweDEzLDB4MGUsMHg2MiwweDQwLDB4ZTgsMHg3MywweGM2LDB4MTksMHgyMywweDUxLDB4MmMsMHhmZiwweDM3LDB4ZjgsMHg5MywKKyAgMHgwMywweDgxLDB4ZDAsMHhiMSwweGE2LDB4MTksMHgyOSwweGZjLDB4MDAsMHgzZCwweDQyLDB4NDksMHgzYiwweDZkLDB4MjYsMHgyOCwKKyAgMHg3MSwweDYyLDB4NDAsMHhlOCwweDE0LDB4ODQsMHhhMSwweDQzLDB4YTAsMHg4YywweGE4LDB4ODEsMHg1NiwweDlmLDB4MWQsMHhlNCwKKyAgMHhkNSwweDI0LDB4ODUsMHgxZiwweDg5LDB4ZTMsMHgzZCwweGNmLDB4NDIsMHgyNSwweGZkLDB4YjUsMHhkMCwweDhlLDB4NzgsMHhkOCwKKyAgMHg0YiwweDQ3LDB4MTgsMHhhYywweGQ1LDB4ZjEsMHhjNCwweGVmLDB4MGQsMHg0NiwweGM2LDB4YjgsMHgzZiwweGI1LDB4M2YsMHhkYSwKKyAgMHg2ZSwweGM1LDB4YTksMHg1OSwweGRhLDB4M2QsMHg0MywweGQyLDB4MDQsMHgxMCwweDBhLDB4NmMsMHg1NywweDNiLDB4YmMsMHgzNCwKKyAgMHg5OCwweDNkLDB4YmQsMHhmOSwweGM5LDB4NmMsMHg5NCwweDc4LDB4MWIsMHhjZCwweGZjLDB4NDgsMHhiOSwweGJjLDB4MWIsMHg1YSwKKyAgMHhhNSwweDJmLDB4ZWIsMHhhOSwweDk0LDB4MzIsMHg3ZiwweGRkLDB4Y2QsMHhmOSwweDAxLDB4ZmUsMHgwYiwweGJjLDB4YTUsMHhiOSwKKyAgMHgxMSwweGNmLDB4YzgsMHg4ZSwweDg0LDB4N2MsMHhlOCwweDAyLDB4ODMsMHgxZiwweDI5LDB4ZjIsMHg1OCwweDBhLDB4OGQsMHgxMiwKKyAgMHhlMiwweGUxLDB4ZDgsMHhlMCwweDE0LDB4ZGQsMHhjZiwweGE5LDB4OTYsMHgzZSwweDRhLDB4ZWMsMHg2NywweDgzLDB4MWYsMHgwOSwKKyAgMHg4ZCwweGRjLDB4MjUsMHgyYywweDI3LDB4MmEsMHg0NSwweDQ4LDB4OWMsMHgxNiwweDIwLDB4YTIsMHg3NSwweDIzLDB4MTAsMHg2ZCwKKyAgMHhjMiwweDJmLDB4YTIsMHg1NSwweGMyLDB4MTIsMHg3ZiwweDhkLDB4ODksMHgxZiwweDUyLDB4NzIsMHhjMCwweGZlLDB4NDYsMHhlMiwKKyAgMHgzNywweGJhLDB4OGYsMHhhYywweDUzLDB4NjIsMHg2ZCwweDQxLDB4ZjQsMHg3NSwweDkwLDB4MWYsMHhhNCwweDUxLDB4ZjIsMHhjZSwKKyAgMHgwZiwweGQ3LDB4MzEsMHg4NCwweDQ2LDB4MWYsMHgxMSwweGNiLDB4YzQsMHg3MSwweDA3LDB4MjcsMHhjYSwweDlmLDB4MWQsMHg0MiwKKyAgMHg2MSwweDQ0LDB4OTQsMHhjOSwweDUxLDB4ZTYsMHhkNywweDBjLDB4NWEsMHhiNiwweDIzLDB4ZDAsMHgxNCwweDUwLDB4MjMsMHhiOCwKKyAgMHg5ZSwweGFmLDB4OTEsMHg0NiwweGRkLDB4MTksMHg5NSwweGE3LDB4YTYsMHhlNCwweDg3LDB4NGYsMHg4NSwweDk3LDB4MDIsMHhkMywKKyAgMHhmNSwweDM2LDB4MWYsMHg3OSwweDg3LDB4MzYsMHgzMywweGEzLDB4YmUsMHhlMywweDVkLDB4YjIsMHg4NiwweGU2LDB4MzMsMHg1YSwKKyAgMHg0YiwweDRlLDB4ZDAsMHg2NiwweDRiLDB4NzEsMHgxZiwweGUyLDB4MDEsMHg5YSwweGM0LDB4NTcsMHg3NCwweDFhLDB4N2MsMHhkMSwKKyAgMHg3OCwweDZiLDB4YTcsMHhhZCwweGFlLDB4ZTAsMHgyMCwweGJjLDB4YzYsMHg3NiwweGYzLDB4ZjgsMHhkNywweDE1LDB4NzgsMHhhMywKKyAgMHg3MSwweGI2LDB4ZWEsMHhhYywweDEzLDB4YmYsMHhjMCwweDJiLDB4MGIsMHg3OCwweDdlLDB4YjgsMHhjNSwweGNjLDB4OGYsMHg5NCwKKyAgMHg4NywweGEwLDB4M2EsMHg2MCwweDk0LDB4NjksMHg4YywweDRkLDB4YzgsMHg5MywweDhiLDB4MDIsMHhlZiwweGM4LDB4NjMsMHhmMCwKKyAgMHhmYiwweDU1LDB4MmEsMHg4OCwweDg3LDB4NGQsMHhmMSwweGFmLDB4MjksMHg1NywweGY4LDB4N2EsMHgwZSwweGFkLDB4MzksMHgzMSwKKyAgMHhlOSwweDhjLDB4ZjYsMHgwOSwweGNiLDB4OGUsMHgyNSwweDhhLDB4MWYsMHhmNSwweGNmLDB4MGUsMHg1OSwweGM3LDB4ZjEsMHhmZSwKKyAgMHhlZiwweGIxLDB4YWEsMHhkMSwweDI1LDB4MTEsMHg1MywweDdkLDB4NzQsMHhkNywweGY1LDB4OWIsMHhlMSwweGE1LDB4OWQsMHhjNSwKKyAgMHhmYiwweGYwLDB4YjEsMHg4ZiwweGE5LDB4M2IsMHhjMSwweDExLDB4NWQsMHhkNCwweDQwLDB4YzYsMHg2MCwweGI1LDB4OTQsMHgxZiwKKyAgMHhhMSwweGRmLDB4MjQsMHg2ZiwweDQxLDB4YmYsMHhjNCwweGZiLDB4MTMsMHhhNSwweGYwLDB4NjMsMHg2ZiwweDg2LDB4OWQsMHhmMCwKKyAgMHgwMCwweGM1LDB4OTcsMHgzYSwweDQxLDB4OWYsMHg4OSwweGU3LDB4ODcsMHhhYiwweDZiLDB4OTQsMHg3YywweGE4LDB4NmIsMHgyMCwKKyAgMHhlNywweGI1LDB4MjcsMHhmMiwweDhhLDB4NWYsMHg5NywweDM1LDB4NTMsMHhiZCwweDgwLDB4NGYsMHgxYSwweDkwLDB4YzIsMHhiMCwKKyAgMHg4MiwweGRlLDB4OTgsMHg5ZCwweDFlLDB4YzEsMHg2ZCwweGU5LDB4ODgsMHhiNSwweDc5LDB4NjIsMHg4MywweDA2LDB4MGQsMHhlMCwKKyAgMHhkMSwweGEwLDB4OWYsMHgzOSwweDgzLDB4NzIsMHhkYSwweDNkLDB4NzksMHg4OSwweGZkLDB4ZTksMHg0MCwweGJjLDB4ODcsMHhkYiwKKyAgMHg0NiwweDU5LDB4YjIsMHg5NiwweDc3LDB4NzcsMHg4ZCwweGU5LDB4YWYsMHg0ZiwweGM4LDB4MjEsMHg3MCwweDBmLDB4M2IsMHgxNSwKKyAgMHg3MSwweDg4LDB4YmQsMHhhNSwweDU3LDB4ODYsMHg2YywweDNkLDB4YjIsMHgyNSwweGE1LDB4M2YsMHhlYywweDE4LDB4YWIsMHhjYywKKyAgMHhiNSwweDc1LDB4MDksMHhjMywweDJjLDB4YmUsMHgzZSwweGMzLDB4ZGMsMHgzZiwweDBmLDB4NDcsMHgzNywweDg5LDB4YzMsMHg3NCwKKyAgMHhmOCwweGZlLDB4Y2EsMHg0MSwweDViLDB4ZjgsMHg3MSwweDczLDB4N2YsMHhiNCwweDRiLDB4NzAsMHg4OSwweGZlLDB4NTgsMHhiNSwKKyAgMHg3MiwweDkyLDB4OWYsMHhjYiwweDMxLDB4NWEsMHhlYywweGYzLDB4ZjYsMHhjMywweDMzLDB4MGQsMHhkOCwweDMzLDB4ODcsMHgxYywKKyAgMHg4NiwweDJhLDB4OGIsMHhlZCwweGVmLDB4NDQsMHgzNSwweGUxLDB4ZmYsMHg2OSwweDQ0LDB4ZmMsMHg4MywweGM3LDB4YWEsMHhkMCwKKyAgMHhiMSwweDRkLDB4N2IsMHg1ZiwweDBhLDB4MWIsMHhiNCwweGNjLDB4ZTQsMHgzNCwweDIwLDB4ZWMsMHhlMSwweGZlLDB4OGQsMHgyNiwKKyAgMHhhNSwweDQ1LDB4MmYsMHg3MSwweGM5LDB4NmIsMHhmZCwweGU2LDB4ZmUsMHhiMCwweDJiLDB4YjgsMHhiZiwweDlhLDB4ZDEsMHg1ZiwKKyAgMHhjMiwweDY5LDB4NzUsMHg0MiwweDVmLDB4YWIsMHg2ZCwweDYwLDB4MGYsMHhkMSwweDVmLDB4N2EsMHg2NiwweDQwLDB4OWIsMHhjZSwKKyAgMHhhOSwweGNjLDB4ODgsMHhjOSwweGZmLDB4MDMsMHg1NiwweDA4LDB4MTcsMHgzYSwweDViLDB4MjgsMHg3OCwweGY0LDB4ZTYsMHhiMCwKKyAgMHg1ZiwweDM1LDB4ZjIsMHhjMywweDQ5LDB4MmIsMHgxOCwweDdjLDB4MWQsMHgyMSwweGRlLDB4NGEsMHgwYywweGNmLDB4NjMsMHg5MSwKKyAgMHgyOSwweGMzLDB4OGIsMHhhZSwweDgwLDB4MzEsMHhjNywweDNjLDB4NmEsMHhiNCwweDQ1LDB4MWUsMHg4NywweGVlLDB4YjcsMHg4ZCwKKyAgMHhjNiwweDcwLDB4YWYsMHg3MiwweDQzLDB4MmMsMHgxOCwweDhiLDB4ZmYsMHhhMiwweDY4LDB4MmEsMHg1MCwweDRkLDB4ZjEsMHgyZiwKKyAgMHhjMywweGRiLDB4MjMsMHg0ZCwweGQyLDB4YzUsMHg1MSwweGVkLDB4M2MsMHg1NCwweDFkLDB4ZTQsMHhlZiwweDFiLDB4MGIsMHg4NCwKKyAgMHgwZCwweDhhLDB4ODMsMHhmNCwweDEyLDB4ZTEsMHhmZCwweDYxLDB4YmYsMHg2NSwweGU2LDB4YzcsMHg4ZSwweGZiLDB4N2YsMHhjNiwKKyAgMHg3MywweDJhLDB4YzgsMHhkMywweGJlLDB4ZDIsMHhjOCwweDRkLDB4MTEsMHhlMSwweDNlLDB4NmQsMHg4MCwweGRkLDB4YWMsMHg0ZSwKKyAgMHgzYSwweDI3LDB4NTYsMHg0NCwweGFlLDB4MmEsMHhmOSwweGFhLDB4ZjUsMHg2NCwweDBhLDB4ZmUsMHgxOSwweDA5LDB4MTksMHg2YywKKyAgMHhjZiwweDYxLDB4YjIsMHhjMCwweDFiLDB4YTgsMHgyZSwweDg4LDB4NWEsMHhiYSwweGVjLDB4OTcsMHhmNSwweDAwLDB4N2IsMHgzMCwKKyAgMHgyNCwweGZmLDB4YzksMHg1MiwweDUxLDB4YmIsMHhmNywweDliLDB4NzYsMHg0YSwweGIzLDB4NTMsMHhmOSwweDIxLDB4NjMsMHg3OCwKKyAgMHgyZiwweDQ4LDB4YWMsMHhjMCwweDVjLDB4YTEsMHg0MSwweDRlLDB4NGIsMHhhMiwweGUwLDB4NmIsMHg1NiwweDFmLDB4NTIsMHg5NywKKyAgMHg1OSwweDliLDB4YmIsMHhkNSwweDY1LDB4OTYsMHhiYSwweGVjLDB4ZjQsMHg2YiwweGZhLDB4YzMsMHg0MiwweDQ5LDB4YWYsMHgxYywKKyAgMHhiNiwweDM4LDB4YTEsMHhkNSwweDZhLDB4ZDcsMHgyZCwweGRkLDB4ZmUsMHgxMSwweDEyLDB4NjAsMHgyNSwweGZkLDB4NjIsMHgxNywKKyAgMHg3MSwweDIyLDB4MTAsMHhiNSwweDJiLDB4ODgsMHgzZiwweGNkLDB4ZjgsMHg2NywweDQ1LDB4MGMsMHgwZiwweDk3LDB4OGIsMHg1NiwKKyAgMHgyMywweDFiLDB4MDcsMHhhZCwweGExLDB4OTEsMHg4YywweDQzLDB4N2EsMHg4OSwweGRiLDB4NjYsMHg3NCwweDhjLDB4MGQsMHhiOSwKKyAgMHgxNCwweGU3LDB4MDYsMHg1MywweDdkLDB4NWMsMHgzNCwweGVlLDB4ZmYsMHg1OSwweDdmLDB4OGUsMHg3NywweDM3LDB4ODMsMHgwNSwKKyAgMHhiZCwweGI2LDB4NDgsMHgxMywweGU3LDB4ODcsMHhmYywweGI5LDB4NmEsMHhmMywweDcxLDB4ZmUsMHg3OSwweDVhLDB4OTUsMHg4ZCwKKyAgMHhmNiwweDQyLDB4MmEsMHhmZSwweDg5LDB4YjMsMHhkMywweDNiLDB4ZDksMHgwMSwweGFkLDB4MmMsMHg4MiwweDY4LDB4NzMsMHg4NCwKKyAgMHhmZiwweDg3LDB4MzQsMHgyMywweDAzLDB4ZmYsMHhhMCwweDcyLDB4NGUsMHg3NSwweDZlLDB4NGEsMHhjNSwweDNmLDB4MGEsMHhjNywKKyAgMHhjMywweDg4LDB4ZDYsMHgyYSwweGEwLDB4MTUsMHgwYSwweDA2LDB4ZWIsMHgzNiwweGZiLDB4MmYsMHg2YiwweDJmLDB4MGUsMHhkYSwKKyAgMHhmZiwweDQ5LDB4MGUsMHhhNSwweDVmLDB4OTIsMHg1YSwweGY1LDB4MzIsMHgxNywweDZlLDB4MjQsMHgzMywweDNmLDB4ZTQsMHg2MiwKKyAgMHhjYSwweGQ3LDB4MjcsMHhjMywweDQ1LDB4ZWUsMHg5MiwweDVhLDB4YTEsMHg3MCwweDkwLDB4NTIsMHhjZiwweGE3LDB4ZDAsMHhhOCwKKyAgMHhhYiwweDJlLDB4ZGMsMHgxOCwweDhmLDB4MzEsMHg1NCwweGRjLDB4NmYsMHhkZSwweGU5LDB4NTgsMHg2OCwweGUyLDB4YzcsMHhhZSwKKyAgMHg5ZSwweDY2LDB4YjAsMHg0MSwweGQyLDB4MWYsMHg5MywweDY5LDB4MzQsMHg5NywweGE5LDB4YTcsMHhmMiwweDdlLDB4NDgsMHhkZSwKKyAgMHgzZCwweGY1LDB4NGMsMHgyMCwweGJmLDB4ZjMsMHhjNiwweGJmLDB4ZjMsMHhiYywweGFiLDB4YWQsMHgwOSwweDNmLDB4MTMsMHhjZCwKKyAgMHg1OCwweDcxLDB4MGQsMHhmZSwweDQxLDB4YTMsMHhhOSwweDFmLDB4OWYsMHhkZiwweGNhLDB4NzQsMHg2MSwweDRlLDB4YzQsMHg2YSwKKyAgMHgyMSwweDQ3LDB4NTgsMHg2ZiwweGI2LDB4MGIsMHg2YywweDIwLDB4MGUsMHg4MCwweGRlLDB4ZTksMHhkMiwweGZmLDB4YjMsMHhmYSwKKyAgMHg2YSwweDBhLDB4M2YsMHgzNiwweDVmLDB4OWYsMHg1ZSwweGRiLDB4YTgsMHhlNywweDMyLDB4N2MsMHhhNCwweDU0LDB4NzEsMHhlMCwKKyAgMHgzZCwweDAyLDB4OWYsMHgyYiwweDk1LDB4OGQsMHhiNiwweGZlLDB4OWMsMHg0YiwweDY0LDB4NmMsMHhjZSwweDJiLDB4ZmQsMHg1OSwKKyAgMHgxZiwweGE2LDB4ZjAsMHg2MywweDdmLDB4OGEsMHhhNywweGI1LDB4YjIsMHhkNywweGQ2LDB4NjMsMHhmYiwweDQ5LDB4YTQsMHg5NSwKKyAgMHg5NywweDYxLDB4ZWUsMHgyOCwweDE4LDB4ZDEsMHg1YiwweGEwLDB4ZjIsMHg5YywweGY1LDB4OTIsMHhiOCwweGMyLDB4YjcsMHg5MCwKKyAgMHhkOCwweGY1LDB4YmIsMHg0MiwweDM1LDB4NjYsMHhmYywweGMzLDB4NjksMHhiMSwweDM5LDB4ZWMsMHg5OSwweDYxLDB4ODUsMHhkNywKKyAgMHg4NCwweGUyLDB4N2UsMHhmOSwweDYxLDB4MzIsMHhlMCwweDU4LDB4MDMsMHhiMywweDdhLDB4MzMsMHg3ZCwweGI4LDB4NDMsMHg5ZSwKKyAgMHg4NSwweDAyLDB4ZGQsMHg3MSwweDZkLDB4N2YsMHg1OCwweDAzLDB4ZjYsMHg4YywweDkxLDB4YTcsMHhkYiwweDliLDB4ZmQsMHhjNSwKKyAgMHhhNywweGM0LDB4NDcsMHhjOSwweGJiLDB4ZmUsMHgyNywweDFhLDB4NjcsMHg5ZCwweGE3LDB4NzksMHhmZSwweDY5LDB4Y2QsMHhjZCwKKyAgMHhiZCwweGY5LDB4NWYsMHhlNSwweDg3LDB4ZTQsMHhmNSwweDNlLDB4OGIsMHg2ZSwweDIzLDB4NmIsMHg0OSwweDFiLDB4MGUsMHg2ZSwKKyAgMHhiYywweDhkLDB4OGMsMHhhNCwweDIzLDB4MTAsMHgxYSwweGNlLDB4YTAsMHhhZCwweDRlLDB4YTEsMHg4YiwweDE3LDB4YWEsMHhhOCwKKyAgMHhkNywweGUwLDB4OWYsMHgzOCwweGVjLDB4MTksMHg5NiwweGVlLDB4ZTYsMHhmZSwweDlmLDB4NGUsMHgxYywweGZjLDB4YTEsMHhiMywKKyAgMHgyNCwweGI0LDB4MzYsMHg5YSwweGVlLDB4ODAsMHgyMywweGFjLDB4OWIsMHg2NSwweDg2LDB4ZTQsMHg2YiwweGYwLDB4OGYsMHgwMSwKKyAgMHgwMywweDJjLDB4OWEsMHgzMiwweDRjLDB4YjMsMHg2MiwweGZhLDB4ODgsMHhhNywweGZkLDB4MmMsMHgzMSwweDBhLDB4ZTcsMHg5YiwKKyAgMHhmNywweDczLDB4ZmUsMHg4ZCwweGFmLDB4ZTAsMHg5ZiwweDU4LDB4NTksMHhkYywweDAxLDB4MjgsMHg1YiwweGJlLDB4MjQsMHhmOCwKKyAgMHhlYSwweDA3LDB4ZjAsMHg5NiwweGRmLDB4MDgsMHhmNCwweDdjLDB4MDAsMHgwNywweDU0LDB4NzcsMHhmZCwweGRkLDB4NDEsMHg5OSwKKyAgMHg1YywweGViLDB4ZmYsMHg4OSwweGMzLDB4MTgsMHhjOSwweGVlLDB4ZTMsMHhiNCwweDZjLDB4ZDAsMHgxMiwweGI0LDB4ZjMsMHgxMywKKyAgMHgzNCwweDY0LDB4N2QsMHg4YiwweGE5LDB4M2UsMHhmYSwweGNiLDB4NmIsMHhmMCwweDRmLDB4N2MsMHhmZSwweDE5LDB4ZWUsMHgxZCwKKyAgMHhkNSwweDEwLDB4ZGQsMHhmMSwweDQyLDB4MzksMHg1ZSwweGQ4LDB4OTUsMHhmZSwweDAxLDB4YmYsMHhlMiwweGZkLDB4ZTEsMHhkMiwKKyAgMHg2YiwweGZhLDB4YzMsMHgyMiwweDFlLDB4ZTAsMHg0NSwweDcwLDB4NmYsMHgxMCwweDYxLDB4YTIsMHgyZCwweDVhLDB4MWIsMHg0NCwKKyAgMHg3MSwweDYwLDB4N2YsMHgwZCwweDM2LDB4ZTgsMHhmOSwweDVlLDB4N2EsMHhhZiwweDI1LDB4NjksMHg3ZiwweGY1LDB4NTgsMHgxMywKKyAgMHhmYywweDAwLDB4NTEsMHhhNSwweDBlLDB4Y2EsMHhhMCwweDhkLDB4YTEsMHg5OCwweDNkLDB4NjEsMHgyOCwweGUyLDB4MWMsMHg4ZSwKKyAgMHg4OCwweGJhLDB4ZTEsMHg2ZSwweDRkLDB4MzQsMHhlMSwweDlmLDB4Y2MsMHhjZSwweDg5LDB4YjYsMHg2OCwweGJjLDB4MWIsMHg0OCwKKyAgMHg2NSwweDljLDB4MTYsMHg4MCwweDVmLDB4MzksMHgyZSwweDdlLDB4MjAsMHg3ZCwweDVlLDB4MWQsMHgyMywweGM2LDB4NGMsMHhjOCwKKyAgMHg5ZiwweGY2LDB4YjQsMHg0ZSwweDg1LDB4YmIsMHg4OSwweGIyLDB4MzYsMHg4OSwweDlmLDB4NGIsMHgwNywweGQ0LDB4MmEsMHhkZSwKKyAgMHg4OCwweGY5LDB4NzMsMHhmNSwweDcwLDB4YWMsMHg3ZiwweGRjLDB4YWQsMHhmMCwweGI5LDB4NmIsMHg0NywweDZkLDB4NjYsMHgzMCwKKyAgMHhhNSwweDNmLDB4NmMsMHg5NCwweGY1LDB4NzAsMHg1YSwweDI0LDB4MGUsMHg3YiwweGJhLDB4MWMsMHgzMSwweDdlLDB4NmMsMHhhOSwKKyAgMHgwYiwweDNhLDB4MGMsMHgzMSwweDJiLDB4ZjQsMHgzYywweDgyLDB4ZjIsMHg4NywweDkwLDB4NzUsMHg0OSwweGY5LDB4MjMsMHhmNSwKKyAgMHhhYiwweGY4LDB4YmUsMHg3NSwweDk2LDB4NmMsMHhmMiwweDFhLDB4NmIsMHhkNCwweDU2LDB4YTAsMHhmYywweGYxLDB4ZDQsMHhmMiwKKyAgMHg4ZSwweDNjLDB4YjgsMHg1MCwweDk2LDB4MTgsMHg1NSwweGU2LDB4MzUsMHhmYywweDkwLDB4ZGMsMHhmZiwweDgzLDB4ZjgsMHg2NywKKyAgMHg0MywweDM2LDB4YTcsMHhlNSwweDdjLDB4OTAsMHg4NywweGJkLDB4ODYsMHgwYywweDdlLDB4ODYsMHgxYiwweDc5LDB4NjIsMHhkNSwKKyAgMHg2ZSwweGI1LDB4ODMsMHgwYiwweGVhLDB4ZDUsMHgyOSwweGZjLDB4OTAsMHg0NiwweDc3LDB4ZDcsMHgxOCwweDJkLDB4NTIsMHg4NSwKKyAgMHg2NiwweDBkLDB4MzYsMHgyZCwweDg3LDB4ZGUsMHg0NiwweDc3LDB4NWQsMHg4ZCwweDUyLDB4NWEsMHgyOCwweGVkLDB4YTYsMHg2ZSwKKyAgMHhlZCwweDNmLDB4NzMsMHhmYywweDkzLDB4ZDAsMHhiZiwweDcxLDB4ZmYsMHgwZiwweDBmLDB4ODMsMHhhYSwweGRjLDB4ZmYsMHg3MywKKyAgMHg5NCwweGYzLDB4ODUsMHg4ZSwweGViLDB4OTUsMHhkNSwweDMxLDB4YTIsMHgyNCwweGI2LDB4ZGYsMHhmMywweDRhLDB4NTgsMHhiYywKKyAgMHg4NiwweDFmLDB4NzIsMHg2MiwweGZkLDB4NzEsMHgyMCwweGFjLDB4NmYsMHg2ZSwweDUyLDB4YTUsMHgxMywweGYxLDB4ZmUsMHg3NCwKKyAgMHhjYSwweGQ4LDB4OWQsMHg2ZSwweDFlLDB4ODEsMHhiNSwweDdjLDB4YzUsMHhmZiwweDIzLDB4ODYsMHhiNCwweDBiLDB4MzgsMHg5OCwKKyAgMHhjNSwweGQwLDB4MzAsMHg5ZiwweGM3LDB4ZDYsMHg0ZCwweGI2LDB4YWYsMHgzMSwweDgwLDB4ZDAsMHhmZSwweGM1LDB4MDUsMHhjMSwKKyAgMHhiYywweDkwLDB4YjgsMHgzMCwweDg1LDB4MWYsMHg5MiwweGNiLDB4OWYsMHgxYiwweDVkLDB4ZTQsMHgyZiwweGRjLDB4NzEsMHg3MSwKKyAgMHg0YywweDllLDB4NDMsMHgzMiwweGZkLDB4MWIsMHhmYSwweGQ0LDB4NjgsMHhhYiwweDJiLDB4ZmQsMHg4OCwweGIwLDB4NDcsMHg1YSwKKyAgMHhhNiwweDE3LDB4Y2QsMHg0ZiwweGUxLDB4YzcsMHg5ZSwweGFhLDB4ZjEsMHg3ZSwweDYxLDB4NmQsMHgxYywweDA2LDB4MTgsMHg4ZSwKKyAgMHg5MSwweGIxLDB4OGQsMHg1MywweDg1LDB4YzcsMHg2OCwweGFjLDB4ZDAsMHg1NSwweDMwLDB4MWEsMHhhNywweGZhLDB4NTIsMHhmOCwKKyAgMHhiMSwweGE3LDB4YjEsMHgyZiwweGQ5LDB4ODIsMHhkMywweDljLDB4MGQsMHg0MCwweGY5LDB4YjIsMHg4YiwweDA3LDB4YzIsMHg5YSwKKyAgMHhiMiwweGE0LDB4YmYsMHg2MSwweGY5LDB4YTcsMHhiMywweDc4LDB4YTEsMHhkYywweDk3LDB4OGQsMHhhNSwweGExLDB4NTksMHg0YiwKKyAgMHhjNSwweDE0LDB4N2UsMHg2YywweGVlLDB4MGYsMHg4OSwweGQ4LDB4OGMsMHhiNCwweDFmLDB4NGYsMHg4OSwweDUxLDB4ZWQsMHhjZSwKKyAgMHgyNSwweGQ4LDB4MDksMHhhMywweDYzLDB4YzgsMHg1ZSwweGIyLDB4OWYsMHhhMSwweDdkLDB4NjEsMHhlZSwweDBmLDB4ZmIsMHg2OSwKKyAgMHhkYywweGZmLDB4ZDMsMHhlNCwweDg2LDB4YTMsMHhlZCwweGZmLDB4N2QsMHhjOCwweDdhLDB4NDAsMHhiYywweDYyLDB4ZmQsMHg0YiwKKyAgMHg2OCwweGVlLDB4NzIsMHhkYiwweDZlLDB4YjEsMHgxMiwweDdmLDB4MmEsMHhkZCwweDc2LDB4ZDcsMHhlNSwweDAyLDB4MTMsMHhmZSwKKyAgMHg5OSwweGZjLDB4MzQsMHhhNywweDc1LDB4ZDIsMHg2ZCwweDBkLDB4ZjYsMHg1YywweDZkLDB4NGQsMHhlMCwweDU2LDB4NjYsMHgyOSwKKyAgMHgyNywweDA3LDB4ZDksMHhlYSwweDQwLDB4N2UsMHg0OCwweDVlLDB4MjksMHhkZSwweGE0LDB4ODQsMHg4MywweDViLDB4OWEsMHgxZCwKKyAgMHhkZiwweGYzLDB4MjcsMHhmMSwweDhmLDB4NjIsMHhmMCwweDQzLDB4MWEsMHg2NiwweDlhLDB4MDIsMHg2YiwweDU0LDB4ZGMsMHgyZCwKKyAgMHgxYSwweDM5LDB4YTksMHhmZiwweDc2LDB4ZjIsMHg5NiwweDNhLDB4ZDEsMHg5ZCwweDdkLDB4YWYsMHg4NCwweGVmLDB4MWIsMHhiOCwKKyAgMHg3MywweDMwLDB4M2IsMHgxOSwweGZmLDB4ZjIsMHhlNSwweGM2LDB4ZjQsMHg5ZCwweGM1LDB4ODUsMHg4NywweGI0LDB4NDksMHgyYiwKKyAgMHgwNCwweDE5LDB4OTUsMHgzNCwweGY1LDB4NzMsMHhiZSwweGE5LDB4NzIsMHgzZiwweGE3LDB4YWEsMHg0MCwweDdiLDB4M2YsMHg5ZCwKKyAgMHg5OCwweGYxLDB4MGYsMHhlZiwweDU3LDB4NWUsMHg4NSwweGNiLDB4ODgsMHhkYSwweDZkLDB4OGQsMHhlNiwweDgyLDB4Y2MsMHhhZSwKKyAgMHhkOSwweDIzLDB4ZTQsMHhlMywweDQ2LDB4N2IsMHhhMywweGJjLDB4YmYsMHg2NiwweDM5LDB4NWMsMHg1OCwweGRiLDB4Y2QsMHg2ZSwKKyAgMHhlYSwweDQyLDB4ZmMsMHgzMywweGIxLDB4OWUsMHg0MSwweDg4LDB4YjEsMHg0MSwweGFlLDB4ZGYsMHgyZSwweGYzLDB4MzYsMHhiMiwKKyAgMHhmYiwweGUxLDB4ZWUsMHg1ZiwweDE4LDB4ZjksMHg1MSwweGYzLDB4MWEsMHg2ZSwweGU2LDB4ZmMsMHg5MCwweGY4LDB4OTMsMHgzMiwKKyAgMHgyYiwweDg0LDB4ODMsMHg4NCwweDNjLDB4NTEsMHg2MiwweGVjLDB4YzcsMHg1OSwweGEzLDB4ZTIsMHg3MiwweDM4LDB4NGEsMHg3NywKKyAgMHhiMCwweGNjLDB4YTgsMHg3OCwweDkyLDB4YmUsMHg5NywweDU2LDB4Y2EsMHgxNiwweGYzLDB4NzgsMHhkMCwweDQ1LDB4NDQsMHg0NCwKKyAgMHhjZSwweDEzLDB4NjIsMHg1MiwweDVmLDB4NmYsMHg4OCwweGZiLDB4N2YsMHg2NCwweGZlLDB4ZmMsMHgwOCwweDYzLDB4YzIsMHg3NCwKKyAgMHgzNSwweGY5LDB4MGIsMHg2YiwweGYyLDB4YWIsMHhjYiwweDFkLDB4NjEsMHhjZiwweDNmLDB4NzAsMHhlYSwweDllLDB4MTAsMHg2ZCwKKyAgMHg0ZSwweGMxLDB4M2YsMHg3MSwweGZmLDB4NGYsMHgzOCwweGJiLDB4OWUsMHhhMSwweGQ4LDB4YjksMHhlMywweGZhLDB4NDYsMHgzMiwKKyAgMHhhMiwweGI1LDB4YWUsMHhmZSwweDA3LDB4ODUsMHhmMiwweDdlLDB4NmEsMHgzOCwweDNmLDB4NGMsMHhlZCwweDI0LDB4YzUsMHhmZiwKKyAgMHhjMywweDBjLDB4M2MsMHgxMCwweDI2LDB4NTYsMHhkMiwweGE2LDB4YWEsMHg1MCwweDk3LDB4NGQsMHgyMiwweDdlLDB4N2YsMHgwMCwKKyAgMHg4ZiwweGFkLDB4Y2IsMHg1ZiwweDJiLDB4NzQsMHhlNywweDg1LDB4MTAsMHgyMiwweDk5LDB4ZTQsMHgwZiwweGNiLDB4NWMsMHgxMSwKKyAgMHhlMiwweGViLDB4NjMsMHg2YiwweDEwLDB4N2QsMHhjYSwweDFmLDB4ZjEsMHgzNCwweGRkLDB4ZDUsMHg1YywweGYzLDB4NDksMHhmMywKKyAgMHhkYiwweGVhLDB4Y2IsMHg2MCwweGVkLDB4ZTYsMHhlNywweDQ1LDB4NzUsMHgzMywweDVlLDB4M2EsMHg2YSwweGU2LDB4ODcsMHhlNCwKKyAgMHhmZSwweDlmLDB4ZGUsMHg5YiwweDQ3LDB4ZjMsMHg0NywweDk1LDB4OGIsMHgxYywweGY2LDB4MzQsMHgzNSwweGU5LDB4ZDEsMHg3MywKKyAgMHg1MCwweDI5LDB4ZGQsMHhjYywweGZkLDB4NWQsMHhlMywweGVhLDB4MDIsMHg2NiwweGQzLDB4Y2MsMHhmYywweDQ4LDB4YWIsMHhhZSwKKyAgMHhjMCwweDI1LDB4NzUsMHgzZSwweDBiLDB4ZDQsMHhkNSwweDljLDB4MGQsMHgxOSwweDFiLDB4NjksMHgxNCwweGY3LDB4Y2YsMHgyNSwKKyAgMHg2OSwweDZlLDB4ZjQsMHhhZSwweDU3LDB4NzMsMHg1YywweGZlLDB4ODEsMHhhNiwweDUyLDB4ZDcsMHg5MiwweGZlLDB4OWEsMHgyNCwKKyAgMHhmZSwweGU5LDB4Y2IsMHhmYiwweDE0LDB4NzYsMHhkNywweGRiLDB4N2QsMHgzNCwweDgwLDB4ZjIsMHgyNywweDFlLDB4MDgsMHhmYiwKKyAgMHg5NCwweGQzLDB4MjAsMHg0NCwweGU1LDB4MjYsMHhiYiwweGFhLDB4MDcsMHgxYSwweGVkLDB4NTQsMHg2ZSwweDM2LDB4ZjUsMHg4NywKKyAgMHgzZCwweDA4LDB4MDMsMHhkMCwweGFkLDB4MzgsMHg0MiwweGY1LDB4OTAsMHhhZSwweGIzLDB4MzgsMHhlZCwweGYzLDB4MDAsMHg2NywKKyAgMHg0ZiwweGQzLDB4MzMsMHhiMiwweDA5LDB4MTQsMHgwNiwweGMwLDB4NTEsMHgyNywweGE3LDB4OTMsMHhlZSwweDY0LDB4ZmUsMHg0ZiwKKyAgMHhkYSwweDM2LDB4ZTgsMHhjOSwweGIzLDB4NDcsMHhlOSwweDM2LDB4MTQsMHgzYiwweGYzLDB4NjMsMHhiNCwweGQyLDB4OWMsMHgxZiwKKyAgMHhhMCwweGE4LDB4NTcsMHgwZSwweDU4LDB4NjYsMHhhMCwweDNjLDB4NmYsMHhkNSwweGU0LDB4NzYsMHhkMiwweDkzLDB4OTAsMHgwZiwKKyAgMHhkNSwweDUzLDB4NzgsMHg3ZiwweGQyLDB4NzksMHhkYywweDA5LDB4N2MsMHhmYSwweGVmLDB4MTIsMHhiNCwweGNjLDB4MTcsMHgxOSwKKyAgMHgyMiwweDk2LDB4NTYsMHhkMSwweGJlLDB4YjYsMHg2ZiwweGMzLDB4MGQsMHg0ZSwweGRiLDB4NjYsMHg3OSwweDkzLDB4YTksMHgzZiwKKyAgMHhlYywweDNlLDB4OGUsMHg5ZiwweDYxLDB4ZmQsMHgyMCwweDgyLDB4MWMsMHhiZSwweDMxLDB4MzIsMHhjMywweDA1LDB4OTcsMHhlOCwKKyAgMHg1NSwweDk4LDB4NmIsMHhmNCwweDFmLDB4NDQsMHg0MSwweGYzLDB4MzUsMHhiZSwweDNlLDB4ZjUsMHhjOSwweGZlLDB4YjMsMHhiYywKKyAgMHgzZiwweGFjLDB4ZTIsMHg2ZSwweGIxLDB4MzYsMHg4YiwweDIxLDB4NzYsMHg3MSwweGEyLDB4ZmYsMHhhOSwweDMxLDB4ZDgsMHgyNCwKKyAgMHgxNiwweGIyLDB4NjEsMHgwOSwweDQ1LDB4ZDMsMHgyZSwweGYxLDB4N2MsMHg0MiwweGZlLDB4ZTgsMHhiOCwweDFmLDB4N2EsMHgyNiwKKyAgMHhhYiwweDdkLDB4ZjQsMHg3NywweDFiLDB4YmYsMHhjZSwweDhjLDB4OGQsMHgzMSwweDRhLDB4NzgsMHhlMywweGM1LDB4MmMsMHg1ZCwKKyAgMHg2ZSwweDZmLDB4OWQsMHhjZSwweDU1LDB4ZDUsMHgyNiwweDU0LDB4NTUsMHhhOSwweGYxLDB4YWYsMHgxZSwweDJkLDB4MTQsMHhhNiwKKyAgMHg3OSwweDQ0LDB4OWIsMHg2OCwweGEzLDB4NjMsMHhjNSwweDE1LDB4YjMsMHhlYSwweDcyLDB4YTcsMHhiZiwweGE0LDB4NzYsMHhjYiwKKyAgMHhhZiwweGFkLDB4OWQsMHg3MiwweGExLDB4OTYsMHhlNCwweDQ3LDB4MWEsMHg1NSwweGI4LDB4M2YsMHgzOSwweDNmLDB4ZWEsMHg4OCwKKyAgMHg1OCwweGVlLDB4NjEsMHg3MSwweDVhLDB4NmMsMHhjZSwweDE3LDB4OGQsMHg4MywweDNiLDB4NDksMHhiNiwweGYyLDB4MTIsMHgwZiwKKyAgMHg4NCwweGQ1LDB4OTksMHhmOSwweDAxLDB4ZTgsMHhlMiwweDhjLDB4Y2YsMHhjMCwweGI1LDB4Y2QsMHhhOSwweGU0LDB4MmMsMHg2YywKKyAgMHhmYywweDBjLDB4MzgsMHgzZiwweDAwLDB4MDIsMHhjNSwweDczLDB4NTAsMHhhMSwweGRiLDB4YTAsMHg0NiwweGQyLDB4NGYsMHhmMywKKyAgMHg4MSwweDIyLDB4MWUsMHg0YiwweGYyLDB4MDMsMHhjNCwweGUyLDB4NWYsMHhlYywweDFmLDB4N2IsMHg3OSwweGZmLDB4NWMsMHgwNSwKKyAgMHg4MSwweGNkLDB4YTgsMHg4YywweDI3LDB4ODgsMHgwMywweDIxLDB4NWQsMHgzYywweDVmLDB4NmIsMHgwNCwweGMyLDB4MTAsMHg0OCwKKyAgMHgyNywweGU1LDB4NzMsMHgyYywweGZlLDB4YzUsMHg2YywweDc5LDB4NjIsMHg2MSwweDZjLDB4NTksMHg0NiwweDhkLDB4N2UsMHhjZCwKKyAgMHhkZCwweDdjLDB4NTAsMHgwZSwweDE3LDB4ZjMsMHgyYiwweDE3LDB4ZGEsMHhhMiwweGUyLDB4YzEsMHgyNCwweGZlLDB4ODksMHhjNSwKKyAgMHhiZiwweDk4LDB4ZWMsMHhjZCwweDllLDB4MmEsMHhjNCwweDAyLDB4NjEsMHgyNCwweGNlLDB4YjcsMHhkZiwweGUwLDB4YzksMHg5MywKKyAgMHg3NiwweDI5LDB4YzUsMHhiZCwweDY4LDB4NGYsMHg5ZCwweDRiLDB4ZjAsMHg5ZiwweGM0LDB4ZjIsMHg3ZiwweGYwLDB4YTUsMHg5NiwKKyAgMHg5MiwweDFiLDB4MjcsMHg2OCwweGMwLDB4ZGYsMHg4NSwweDFkLDB4YjgsMHgwMiwweDcyLDB4MWUsMHhiOSwweDBlLDB4NWUsMHgwZSwKKyAgMHgzZiwweGUwLDB4YzMsMHgyYiwweDgzLDB4YTYsMHhmOCwweGQ3LDB4ODAsMHhiNCwweDYzLDB4MzMsMHgxYSwweDU5LDB4ZDksMHg2NCwKKyAgMHg1NiwweGEyLDB4MmQsMHgxMSwweGVjLDB4MDgsMHhhOCwweGZhLDB4OGQsMHg5YiwweDg4LDB4YTQsMHhlZSwweGUwLDB4M2IsMHg3NiwKKyAgMHg4YSwweGZmLDB4ZWQsMHgyNCwweDNmLDB4YzAsMHg5NCwweDYxLDB4NGUsMHgxMywweGQxLDB4MjUsMHg0NywweDZmLDB4MjgsMHg4ZiwKKyAgMHgwNSwweGMyLDB4YjgsMHhiYywweGJkLDB4YTIsMHhiYiwweGQ5LDB4ZmEsMHg0ZiwweGM1LDB4NzksMHhlYywweDQyLDB4YTgsMHgzMiwKKyAgMHg2YywweDFiLDB4MTYsMHgyZiwweDI0LDB4ZjksMHgwMSwweDYyLDB4ZjEsMHgyZiwweDVlLDB4OTQsMHhjZCwweDE1LDB4NzEsMHhkYywKKyAgMHgxZiwweGQyLDB4YTMsMHhlMCwweDYwLDB4YjUsMHg2YywweDM0LDB4OGUsMHhiZiwweGNlLDB4ZjAsMHhmZiwweDRjLDB4M2MsMHgzZiwKKyAgMHg4ZiwweDdmLDB4OWQsMHg1NSwweGRjLDB4ZjUsMHgzYywweGZmLDB4YTcsMHhmNiwweGFkLDB4MDksMHhmZiwweGMwLDB4NTksMHhhMywKKyAgMHg1MSwweGFjLDB4OTgsMHgyNiwweDFkLDB4MTAsMHgyYSwweDdiLDB4YWQsMHhkOSwweGEyLDB4MzksMHhmZiwweDA3LDB4ZjEsMHg4ZiwKKyAgMHg0NywweGZkLDB4MTEsMHg4MiwweDFjLDB4YWUsMHg0ZiwweDkzLDB4NmQsMHhjZSwweGI4LDB4YmUsMHgyZSwweGU0LDB4MWQsMHg2NywKKyAgMHg2YSwweDFkLDB4NjYsMHhmZiwweDRmLDB4YjksMHhjMCwweGJiLDB4ODcsMHhkOCwweGI1LDB4ZmEsMHgwZCwweDllLDB4MTEsMHhmNSwKKyAgMHhjOSwweGU0LDB4ZmMsMHgwZSwweDdlLDB4NGMsMHgwYSwweDA5LDB4NjcsMHg5OCwweDQ3LDB4NDEsMHg5NCwweDk1LDB4MWEsMHhmZiwKKyAgMHhkMiwweDBjLDB4NmIsMHhlYiwweDM1LDB4ODgsMHhhNSwweDAxLDB4MWIsMHhmNSwweGYyLDB4NDYsMHg4NiwweDMwLDB4NjcsMHg4YywKKyAgMHg3NCwweDdhLDB4NjksMHhhZSwweDI1LDB4YzksMHgwZiwweGIwLDB4MzIsMHhjZSwweDhmLDB4NmQsMHhkOCwweDVmLDB4MjcsMHgyNiwKKyAgMHhkZSwweGQ3LDB4NjAsMHhjYywweDBlLDB4YTEsMHhkOCwweDQ0LDB4ZmIsMHg4YiwweGNiLDB4OWYsMHhhYywweDQ0LDB4N2YsMHg1OCwKKyAgMHgxZSwweGZmLDB4YmEsMHhhYywweGJkLDB4ZTIsMHhmZCwweGZiLDB4YzEsMHhhZiwweDdkLDB4NGUsMHg4ZCwweGZhLDB4NzcsMHgyMywKKyAgMHhmZSwweGM1LDB4ZGQsMHgzZSwweGM3LDB4NzMsMHgzZSwweDM3LDB4MWEsMHg2MSwweGQ4LDB4OGUsMHhkNywweDljLDB4YzksMHgzNSwKKyAgMHhjNywweGJmLDB4MmUsMHg1MywweGVlLDB4ZWQsMHhhOSwweDk5LDB4MTMsMHg0YSwweGY4LDB4NGYsMHgyZSwweDViLDB4ZGMsMHg1YSwKKyAgMHhlNiwweDFmLDB4YzQsMHgzOSwweGRhLDB4MDEsMHhhOCwweGFhLDB4YjUsMHgxZCwweGJiLDB4MzYsMHhmZSwweGE1LDB4ZDksMHgzOSwKKyAgMHgwOSwweDUyLDB4M2UsMHgzMywweGZjLDB4M2YsMHhjZCwweDFlLDB4ZWUsMHgxMSwweDJhLDB4MDMsMHhmOSwweDU5LDB4NGIsMHhiZSwKKyAgMHgyNywweDIyLDB4OTUsMHg0MCwweGRiLDB4NmEsMHg3ZiwweDU2LDB4YTIsMHhiZSwweDliLDB4ZTcsMHhmZiwweDZjLDB4NzcsMHgxNCwKKyAgMHg3YSwweGRiLDB4MTUsMHg1MiwweGFiLDB4MWEsMHg4MSwweDMwLDB4NWUsMHg5OCwweGMwLDB4MDcsMHgxOSwweGI5LDB4NDQsMHg2MiwKKyAgMHgxYiwweGMwLDB4NTEsMHg3ZiwweGUzLDB4NjQsMHg1MywweDdmLDB4ZDgsMHg3NiwweDg5LDB4ZDMsMHgzMiwweGNjLDB4ZTAsMHhmNiwKKyAgMHg4YiwweDA5LDB4ODgsMHhmMiwweGMxLDB4OGQsMHgxYiwweDQ5LDB4YjEsMHhkNywweDIwLDB4MWUsMHhkZiwweDY0LDB4ZTYsMHgwNywKKyAgMHhlMCwweGY4LDB4MjcsMHhlYSwweGZlLDB4MjcsMHg2YiwweDllLDB4YmMsMHg5YywweDI1LDB4ODAsMHhhZSwweDgxLDB4NzAsMHhkYSwKKyAgMHg2YiwweDY2LDB4MjgsMHg2ZiwweDQ1LDB4NmYsMHhkMCwweDZjLDB4ZWQsMHhmMiwweDM1LDB4ZjEsMHhhZiwweDUwLDB4OGYsMHg2NiwKKyAgMHg3YiwweDJhLDB4ZTcsMHhkOSwweGM0LDB4N2MsMHhlNSwweGFjLDB4MzIsMHg4MywweGJiLDB4N2QsMHg1ZSwweGE3LDB4ZTMsMHgyMSwKKyAgMHhiYywweGYyLDB4NjQsMHhjZCwweGI5LDB4OTQsMHhmOCwweGQ3LDB4MjgsMHhiOCwweGE5LDB4OGQsMHgzNSwweGU1LDB4YWIsMHgyNywKKyAgMHgxMiwweDdjLDB4NWMsMHhiMSwweDQ0LDB4ZTgsMHhmYywweGJhLDB4MTMsMHg5YywweDFmLDB4ZDgsMHg5ZiwweGQyLDB4MWYsMHhkNiwKKyAgMHgwMSwweGZiLDB4ZWIsMHg0YSwweDM5LDB4MWIsMHg2NCwweGI5LDB4MTIsMHhlNywweDQ3LDB4MWEsMHg4NiwweDNkLDB4NmEsMHgwNywKKyAgMHg1YiwweGY0LDB4OTEsMHg2NSwweGJlLDB4ZDQsMHgxYSwweDJhLDB4ZTUsMHg0NCwweDAxLDB4MjYsMHg3ZSwweDZjLDB4NDAsMHhmYywKKyAgMHg1MywweGE3LDB4OWUsMHg5NywweDZmLDB4MjUsMHg1NiwweGU5LDB4NzEsMHhiMCwweDRlLDB4YjQsMHg0NSwweDAzLDB4ZGQsMHhhMiwKKyAgMHhmOCwweDI1LDB4N2YsMHg1MywweGE4LDB4NzAsMHg1OSwweDQ2LDB4N2IsMHg3NiwweDEyLDB4ZmYsMHhmMCwweGY4LDB4NTcsMHgzNywKKyAgMHgzZiwweGFkLDB4YTMsMHg2NCwweDFhLDB4MTgsMHhmZCwweDYxLDB4MWIsMHhkMiwweDRmLDB4ZTIsMHg3YSwweGU2LDB4ZWIsMHgzNywKKyAgMHg3YSwweDQ5LDB4YWUsMHhmNSwweDMxLDB4ZjYsMHg4MywweDcwLDB4YzYsMHgyMywweGU5LDB4YzksMHhmZSwweGIwLDB4M2MsMHhmZSwKKyAgMHhmNSwweDA1LDB4OWIsMHg4ZCwweGIwLDB4MjcsMHhhNywweDEyLDB4ZmUsMHhjOCwweDc4LDB4NWIsMHhkOCwweGY0LDB4NzcsMHg4ZCwKKyAgMHhiMCwweDU3LDB4NTYsMHg0NCwweDJjLDB4ODMsMHhmNywweDVhLDB4NGIsMHg3ZCwweGM1LDB4MjksMHhmYywweDAwLDB4NDYsMHhmYywKKyAgMHg2YiwweDhmLDB4YjYsMHhjNCwweDc1LDB4Y2IsMHgxOCwweDI0LDB4NjgsMHg3ZiwweGM2LDB4NzksMHhmYywweDBiLDB4ZTUsMHg4ZiwKKyAgMHgzMiwweGFlLDB4Y2UsMHg2NSwweGE4LDB4Y2EsMHg0ZCwweGZjLDB4OTAsMHhkMiwweDdlLDB4ZWQsMHgxMiwweGRlLDB4ZjYsMHhlZSwKKyAgMHhiMSwweDFhLDB4Y2UsMHgwZiwweDU5LDB4MTUsMHhlMywweGI3LDB4YjksMHhjOCwweDRhLDB4NjMsMHg4ZSwweGEwLDB4MmMsMHg2OSwKKyAgMHg4MSwweGNmLDB4N2EsMHhjMiwweGQ0LDB4MWYsMHhmNiwweDA1LDB4OTQsMHgzZiwweDJmLDB4NGQsMHg3NiwweGZhLDB4ZTksMHgzMiwKKyAgMHgzMiwweGMwLDB4ZDYsMHhhMCwweDU5LDB4YzQsMHg2MSwweDliLDB4YjYsMHg2YiwweDY3LDB4M2UsMHgwZiwweDYzLDB4MWQsMHg4NywKKyAgMHgzNSwweGFlLDB4ZTIsMHg4YywweGNjLDB4N2IsMHg4OCwweGI5LDB4M2YsMHhlYywweDY2LDB4ZTUsMHgyNSwweDk4LDB4YTUsMHg1YiwKKyAgMHgxYSwweGZjLDB4YmMsMHg3MCwweGEzLDB4MzgsMHgxMiwweGU3LDB4MzMsMHhjOSwweGVmLDB4OTUsMHg3ZCwweGZlLDB4OTMsMHhmMCwKKyAgMHhlYywweGU0LDB4NTksMHg5ZSwweDNhLDB4NzMsMHhmYywweGFiLDB4NTAsMHg1YSwweGFiLDB4NzQsMHhkYiwweDlkLDB4OTAsMHgzNywKKyAgMHg4NywweDFjLDB4MzAsMHgwYywweDMxLDB4ODMsMHg2ZiwweDYxLDB4MDcsMHhlZiwweGNmLDB4NTgsMHg0MSwweDg2LDB4MWYsMHg2YSwKKyAgMHhkMiwweDRhLDB4NDIsMHgxOSwweDlkLDB4MzMsMHg2OCwweDMyLDB4MWYsMHg3YiwweGNhLDB4ODgsMHhjMiwweGQzLDB4MmEsMHhiMiwKKyAgMHg0MiwweGUyLDB4YWMsMHhiOCwweGZmLDB4OWMsMHg4YywweGM0LDB4MTgsMHhhMSwweGRiLDB4YzUsMHhmNywweGM5LDB4MjEsMHhjZSwKKyAgMHg0OCwweGVjLDB4OTcsMHg0ZCwweGZkLDB4NDEsMHg4NCwweDZkLDB4ZjAsMHg5OSwweDgyLDB4ZDMsMHg5ZSwweDE1LDB4ZGUsMHgzMCwKKyAgMHhhZCwweDBmLDB4ZWEsMHhiYiwweGY1LDB4YzEsMHgyNiwweDgzLDB4YTgsMHgzZiwweDY4LDB4ZWIsMHgzMCwweGYxLDB4NDMsMHhmMiwKKyAgMHhmOCwweGQ3LDB4NWYsMHg2MCwweGVlLDB4YjMsMHgwOCwweDdiLDB4M2UsMHg1NSwweDhmLDB4YzIsMHgyZCwweGJkLDB4NjksMHgzYywKKyAgMHgxZiwweGU2LDB4NjIsMHhjMCwweDkwLDB4ZTcsMHg1MSwweDQ0LDB4NDQsMHg2OCwweDcxLDB4MzAsMHhiMSwweDJlLDB4OTEsMHhmZiwKKyAgMHhjYywweGUzLDB4NWYsMHhmYiwweDU4LDB4ODcsMHg4MiwweGZhLDB4ZmQsMHgyMywweGM2LDB4ZmIsMHg3ZCwweDJjLDB4MGEsMHhkYiwKKyAgMHg0NywweDYwLDB4NzcsMHgxMCwweDE1LDB4ZDksMHgzYSwweGI0LDB4YjAsMHgwMiwweDNjLDB4ZDEsMHgyNSwweDQwLDB4MWMsMHgyOSwKKyAgMHhmOCwweDg3LDB4ZjMsMHhmMywweDY3LDB4MDQsMHg0OCwweDNkLDB4ZTMsMHhmZCwweGIwLDB4MzIsMHhjMiwweDY0LDB4MWIsMHgzZiwKKyAgMHgyZiwweGJkLDB4MDgsMHgwYywweDNlLDB4YTIsMHgwMSwweDQ3LDB4ZDEsMHgzMiwweDFhLDB4ZjAsMHg5YiwweGYwLDB4NGYsMHhhZSwKKyAgMHgxNSwweGMyLDB4NmMsMHgwNiwweDUwLDB4ZDUsMHhkZSwweDBiLDB4NWIsMHg2MSwweDg1LDB4ZTEsMHhmZiwweDQ5LDB4ZGIsMHgyZSwKKyAgMHg1OCwweDc5LDB4ODYsMHg4YywweDJlLDB4MzEsMHhjMSwweGE5LDB4MDUsMHhjMCwweGUyLDB4MzcsMHhmNSwweDg3LDB4NWQsMHg2MSwKKyAgMHgzNCwweDgxLDB4Y2QsMHg0NCwweGIzLDB4MGIsMHhkNywweDY3LDB4ZGUsMHhjOSwweGJiLDB4MzgsMHg1ZiwweGQ2LDB4YjgsMHgzYSwKKyAgMHg0ZCwweDhmLDB4M2IsMHhhMiwweDJiLDB4YjksMHgyMywweGM4LDB4MTQsMHhmZiwweDlhLDB4YzIsMHhiYiwweDlmLDB4Y2MsMHhlNywKKyAgMHg0ZCwweDBhLDB4YzYsMHhkOCwweDU1LDB4NTIsMHgzOSwweDYwLDB4MWIsMHg5ZCwweDg0LDB4NTcsMHg2MiwweGZhLDB4NmIsMHhkNCwKKyAgMHg3MCwweDA0LDB4YWQsMHhkNywweGM1LDB4N2EsMHg1MywweGZlLDB4MzMsMHhlNywweDg3LDB4MmMsMHg4ZSwweDVhLDB4ZjUsMHg0OSwKKyAgMHgyZSwweDU4LDB4YWIsMHhjYywweGQ3LDB4YWQsMHgxZiwweDhhLDB4MTUsMHhiZSwweGEzLDB4NTAsMHgxNSwweDU4LDB4MWIsMHgxMCwKKyAgMHhlNywweDA0LDB4MGUsMHhiMywweDAyLDB4ZTAsMHhmYywweDkwLDB4ZTYsMHhmOCwweDE3LDB4ZWMsMHhlNSwweGZkLDB4ZWIsMHgwMywKKyAgMHhiYywweDNmLDB4YTMsMHg3YSwweGNiLDB4YzksMHg0YywweDk1LDB4MmMsMHg4MCwweGI2LDB4YzcsMHg0YiwweDNhLDB4MWQsMHgyYSwKKyAgMHgyOSwweGQyLDB4OWUsMHhiNywweGRiLDB4OTcsMHg1YSwweDdhLDB4ZmUsMHgxNSwweGZmLDB4MGYsMHg4NSwweDc0LDB4ODksMHgzMCwKKyAgMHg3MCwweGJjLDB4NmEsMHhlOSwweGIwLDB4NWIsMHg1OSwweDkzLDB4ZTQsMHg2NCwweDE0LDB4NmUsMHhiMCwweDBhLDB4M2IsMHhhOCwKKyAgMHg3YSwweDhmLDB4ODMsMHhlNywweGZmLDB4OTgsMHhmYywweDNmLDB4YjksMHgwOCwweDFiLDB4ZmEsMHgyMSwweDdjLDB4YzcsMHgyNCwKKyAgMHhmMCwweDQzLDB4OTEsMHgzZSwweGI5LDB4YWIsMHg3NSwweDcxLDB4NzYsMHg5YiwweDU0LDB4MTIsMHhhMiwweDE1LDB4ZjYsMHg5OSwKKyAgMHhkYSwweDVlLDB4NjIsMHhkNywweDJjLDB4ZTEsMHg2YiwweGZhLDB4ODMsMHg3MCwweGI1LDB4ZWIsMHgwYywweGRiLDB4NTQsMHg4YSwKKyAgMHhlYiwweGEzLDB4NjcsMHgzOSwweDEwLDB4OWYsMHgyYywweDgyLDB4NjksMHg1ZCwweDhiLDB4YjcsMHhkNSwweDE0LDB4YzMsMHg1OSwKKyAgMHhkYSwweDFkLDB4YTIsMHhhZSwweGQ0LDB4ZjgsMHgxNywweDM1LDB4YzIsMHgzYSwweDgzLDB4MDgsMHhlYSwweDBjLDB4NDcsMHg0NywKKyAgMHgzNCwweDg3LDB4NmIsMHg3YywweDllLDB4ZWYsMHg5YSwweDczLDB4MDIsMHhmZSwweGIyLDB4YjUsMHhhYSwweDczLDB4NDksMHg0YSwKKyAgMHg3ZiwweDU4LDB4MDUsMHhkMSwweDBlLDB4OWUsMHgzZSwweDI5LDB4NWYsMHg3ZSwweGEwLDB4NzksMHhhYywweDc2LDB4ODEsMHg5ZSwKKyAgMHhiOSwweGYzLDB4NmYsMHg5ZCwweGQyLDB4YzcsMHg5MCwweDFkLDB4YjQsMHg2ZSwweDEzLDB4OWQsMHhjYSwweGExLDB4YmEsMHgwYSwKKyAgMHhmZCwweGRhLDB4ZmUsMHhiMCwweDFjLDB4MGYsMHg5ZiwweGExLDB4ZTEsMHg5YSwweDEyLDB4NmUsMHg3ZiwweGY1LDB4NjYsMHg3MSwKKyAgMHg0NywweGQwLDB4N2EsMHhjNCwweGZmLDB4NzUsMHgyMSwweDUyLDB4ZDQsMHhkNywweGE2LDB4Y2YsMHhlYiwweGIzLDB4YTQsMHhmNCwKKyAgMHg4NywweDM1LDB4ZWMsMHhhZiwweDEyLDB4ZGQsMHg0MiwweGFmLDB4OTMsMHgyMSwweGNjLDB4MWQsMHg0MSwweDJhLDB4ZTIsMHg5ZiwKKyAgMHgyNiwweGM5LDB4NTEsMHg0NywweDAxLDB4ZDUsMHg1NiwweGY2LDB4MzEsMHgyNywweGQwLDB4ZDQsMHhmZSwweGIwLDB4ZDMsMHgwYywKKyAgMHg5YSwweGU4LDB4YTIsMHhiYSwweGVjLDB4NjksMHhkMiwweGNlLDB4NGUsMHhjNCwweDAzLDB4M2YsMHhjOCwweDllLDB4YjYsMHg3YSwKKyAgMHgwZCwweDliLDB4NjksMHhhNywweDBmLDB4OTAsMHg3OSwweGRhLDB4MmYsMHg0MywweDMzLDB4N2QsMHg5NiwweDk1LDB4MjksMHhmOSwKKyAgMHgzZiwweDU5LDB4MDgsMHgzYiwweGYxLDB4N2MsMHg4MSwweDQ4LDB4NDMsMHg2NywweGEzLDB4MTUsMHhmYSwweGFmLDB4NjcsMHg1YSwKKyAgMHg5YywweGYwLDB4NmEsMHg2MywweDc5LDB4YmYsMHg1MywweDk2LDB4YWQsMHhmMCwweGZiLDB4NzAsMHhhNSwweGQ3LDB4ZWEsMHgzMiwKKyAgMHhmMywweDYzLDB4NjcsMHhjNiwweGZjLDB4NjMsMHgzZiwweDY4LDB4MTAsMHgwYywweGMzLDB4YTEsMHgyZiwweDJiLDB4MmEsMHg1ZSwKKyAgMHgwYSwweGZmLDB4MTEsMHhiZSwweGQ2LDB4NmMsMHhkMywweDJkLDB4MjcsMHg5NCwweGJmLDB4YTAsMHgzZSwweGNhLDB4YmMsMHhiNiwKKyAgMHgzZiwweDJjLDB4NWYsMHhmZiwweDkyLDB4NzAsMHg4ZSwweDhhLDB4ZmIsMHhiMywweGVhLDB4ODQsMHhkNCwweDI1LDB4YWUsMHg1MCwKKyAgMHgzZiwweDM2LDB4ZGMsMHg5MiwweGIyLDB4NTMsMHgzYSwweDQwLDB4MGQsMHhjNiwweGNlLDB4OGYsMHhjYywweGYxLDB4MmYsMHgyMywKKyAgMHg3ZiwweDgwLDB4N2EsMHg0OSwweGIzLDB4ODQsMHhmMiwweGU0LDB4MjAsMHhkNSwweDJjLDB4NTMsMHhmZCwweDZiLDB4N2MsMHhkMywKKyAgMHg0MSwweGY2LDB4NzEsMHgwNiwweDdlLDB4MzIsMHgyYiwweGI1LDB4ZmUsMHg0YiwweDhmLDB4ZTEsMHg5ZiwweGE4LDB4YzUsMHgzMSwKKyAgMHg3OCwweDgzLDB4YjIsMHg4YSwweDM5LDB4YTMsMHg3NCwweGQ4LDB4M2UsMHg4ZCwweGFkLDB4NjEsMHhjNSwweGFhLDB4NWMsMHg2NywKKyAgMHhmZiwweDJlLDB4NTksMHgxMywweDI4LDB4ZTYsMHgxOSwweGQxLDB4YTMsMHgyOSwweGZlLDB4MWYsMHhkYywweDZmLDB4YjcsMHhkNywKKyAgMHhjZCwweDU5LDB4NTgsMHg0MiwweDlhLDB4OTgsMHg1MywweGFmLDB4YzcsMHhmNSwweDk0LDB4OWEsMHhhMCwweGIwLDB4MDMsMHhjZiwKKyAgMHhkNywweDYxLDB4NzgsMHg5MSwweDM5LDB4ZWYsMHhhNSwweGE5LDB4ZmQsMHg2MSwweGJiLDB4MzgsMHhlYywweDA5LDB4NjUsMHg0NSwKKyAgMHg3MywweGU2LDB4OTEsMHgyMywweDM3LDB4YTAsMHgzNiwweDNmLDB4MjMsMHgzYSwweGUwLDB4MjMsMHhhOCwweGVhLDB4YjEsMHgwZCwKKyAgMHg2ZiwweGZkLDB4NzEsMHhlMSwweGMxLDB4MzcsMHhhYiwweDc2LDB4NWEsMHg1MywweGYyLDB4N2YsMHgxMiwweGZlLDB4OWYsMHhhNiwKKyAgMHgyOCwweGMyLDB4ZDIsMHg0YSwweDgxLDB4MGYsMHg4YywweDJiLDB4MzIsMHg2YiwweGRhLDB4ZTIsMHgzMCwweDQyLDB4NDUsMHg1ZiwKKyAgMHhlOSwweDBmLDB4Y2IsMHhhYiwweGJkLDB4MjYsMHgxYiwweDY1LDB4NWYsMHhmMywweGI0LDB4NjksMHhjMSwweDljLDB4N2UsMHg4OSwKKyAgMHgzNywweDBhLDB4NTksMHhkZiwweGFlLDB4NDksMHg3MCwweGE4LDB4ZDMsMHg1NSwweGY3LDB4ZDUsMHhmZSwweDIwLDB4MWMsMHg4NCwKKyAgMHhiNCwweDViLDB4YTYsMHhjMywweDAxLDB4ODEsMHgxMywweDM1LDB4OTMsMHgyMSwweGE5LDB4YzUsMHhhMCwweDc5LDB4YjQsMHg3YywKKyAgMHgxZCwweGRlLDB4NjIsMHg3NiwweDVmLDB4NjYsMHhmMCwweGRhLDB4ZmUsMHgyMCwweGE4LDB4OWQsMHgzOSwweDNmLDB4MzYsMHg2OSwKKyAgMHhlMSwweDZlLDB4NjQsMHg0ZSwweDIzLDB4ZDksMHhjMiwweDIzLDB4NjgsMHg5MywweDViLDB4M2IsMHg3ZCwweDJkLDB4ODIsMHg0MSwKKyAgMHhlYywweDdjLDB4MGQsMHgzZiwweDI0LDB4YWMsMHhlMCwweGQ5LDB4Y2UsMHg5OSwweDQ2LDB4YjYsMHgzMywweGNkLDB4MjUsMHhhZiwKKyAgMHgxMSwweDQxLDB4ZTAsMHhjMCwweDIwLDB4YmQsMHgxOSwweDM2LDB4ZTAsMHg5NSwweDdjLDB4ZTUsMHgyYiwweGZkLDB4NDEsMHgyYSwKKyAgMHhjMCwweDNhLDB4MTEsMHhlZCwweDcyLDB4ZjAsMHg3YywweGVmLDB4MDAsMHg3ZiwweDRkLDB4YzAsMHgyYiwweDA3LDB4ODEsMHgwNywKKyAgMHg2MiwweGFlLDB4ZTksMHgwZiwweGMyLDB4ZGIsMHg4MiwweGNjLDB4M2EsMHgyZSwweDVlLDB4ODYsMHg0ZiwweDZhLDB4Y2IsMHhiYywKKyAgMHg5MywweGJjLDB4MDUsMHgxZiwweDI4LDB4M2YsMHhlNiwweDZkLDB4NjEsMHgwNywweDZiLDB4ZmUsMHg4NiwweDhlLDB4OTMsMHgyYSwKKyAgMHhhZiwweGVkLDB4ZGEsMHhmZSwweDIwLDB4ZTMsMHhiMCwweGEwLDB4MzYsMHg2YiwweDEwLDB4YWQsMHhiMywweDAzLDB4YjQsMHg2OCwKKyAgMHhlMSwweDAyLDB4ZWUsMHgxOCwweDM5LDB4OGMsMHg2MiwweDM5LDB4M2QsMHg5OCwweDMzLDB4ODcsMHhiZCwweDA2LDB4NTUsMHg4YiwKKyAgMHhlOSwweGI1LDB4ZmMsMHhkOCwweDg2LDB4ZmYsMHhhNywweDk5LDB4ZGMsMHg0ZiwweDAyLDB4MGUsMHg3YiwweDFlLDB4MGQsMHgxMSwKKyAgMHhkZSwweDJmLDB4YTMsMHg4NCwweGE3LDB4NGQsMHg4NiwweDY4LDB4OTcsMHg1YSwweGIyLDB4YjYsMHgyOCwweDk1LDB4MWYsMHhiYiwKKyAgMHhkZiwweDhhLDB4ZWYsMHhhYiwweDU5LDB4ZjAsMHgzNSwweGQ1LDB4NDYsMHhhOCwweGY3LDB4YTAsMHg1YSwweDM3LDB4M2EsMHg4NiwKKyAgMHhkYywweGJlLDB4MDgsMHhmNSwweGJiLDB4NjcsMHg0MywweGQ3LDB4OGEsMHg0OCwweDA2LDB4YmUsMHg2ZiwweDlhLDB4YzksMHhmZiwKKyAgMHhhMywweGUwLDB4ZmEsMHhmYiwweGU4LDB4ZTYsMHhmNCwweGQ3LDB4ODUsMHgxNiwweDJmLDB4ZDEsMHgyYywweGMxLDB4ZjQsMHgyMSwKKyAgMHhlOSwweDdhLDB4MDksMHg4MSwweGQwLDB4ZTQsMHg4ZSwweDY3LDB4ZTEsMHg3OSwweDU2LDB4NTIsMHgyNywweDA3LDB4ZDMsMHg1ZiwKKyAgMHhmZiwweGFhLDB4ZmYsMHg4NywweGMzLDB4OTgsMHgwMywweGQ1LDB4ZjMsMHhiNCwweGFjLDB4Y2QsMHgxYywweGI4LDB4OGEsMHg5NSwKKyAgMHhkYSwweGI0LDB4Y2QsMHhlMiwweDhjLDB4OTksMHg4OCwweDZmLDB4YjUsMHhlMiwweGUwLDB4YjcsMHg4NiwweGJmLDB4ZTIsMHhmZiwKKyAgMHhlMSwweGY5LDB4NGUsMHgxMiwweGE3LDB4ODUsMHhjYywweDdjLDB4YjIsMHg2MCwweDg4LDB4N2MsMHgwOCwweDNmLDB4ZjMsMHhhZSwKKyAgMHhlZiwweGUxLDB4OGQsMHg2MiwweGE5LDB4NzEsMHhhYiwweGFmLDB4ZmEsMHg3ZiwweDUwLDB4ZmUsMHg2ZiwweDgxLDB4ODgsMHg4NiwKKyAgMHg4NiwweDVlLDB4NzMsMHg4ZCwweDFlLDB4OGIsMHg0OCwweDM2LDB4ZTcsMHhhOCwweDZhLDB4YmMsMHhmZSwweDJlLDB4MjUsMHhmZiwKKyAgMHg0NywweDQxLDB4YjEsMHhiMywweDlhLDB4NzYsMHg5MCwweDBiLDB4ZDAsMHgwYSwweDJmLDB4ZjAsMHhiNCwweDY3LDB4YzQsMHgzZiwKKyAgMHg4NSwweGZmLDB4YzgsMHhmYiwweDgzLDB4NWMsMHg0ZiwweGQ2LDB4ZTksMHg3NiwweDQ2LDB4YTMsMHg2MiwweGViLDB4YjUsMHhmZSwKKyAgMHg5ZiwweDY4LDB4NDYsMHgxZSwweGY3LDB4OTcsMHgwYSwweGNiLDB4N2IsMHgwNSwweDU3LDB4ZmEsMHg0MCwweGVlLDB4OGUsMHgyNiwKKyAgMHhjMywweDcwLDB4MTAsMHhhMCwweGE5LDB4NzcsMHgwNiwweGY3LDB4OTcsMHhhNiwweGY0LDB4ODcsMHgzNSwweGRhLDB4ODIsMHgwNCwKKyAgMHgxYSwweGQyLDB4MGYsMHhjMCwweDEzLDB4ZWEsMHgwMywweDkxLDB4OGMsMHgxZiwweGQ5LDB4NGYsMHhmMiwweGZlLDB4M2UsMHg5YSwKKyAgMHhmYywweDQ4LDB4NzYsMHg1ZSwweGNlLDB4MWEsMHg3ZCwweDNhLDB4ZjcsMHhmZiwweDc0LDB4OTksMHhmZCwweDNmLDB4YjAsMHhhYiwKKyAgMHg3MSwweDQxLDB4ZjQsMHhhZSwweDk1LDB4ZTIsMHhkMywweGYwLDB4NmEsMHg2OCwweGVlLDB4OTgsMHhmNSwweGQxLDB4NTcsMHhkZiwKKyAgMHgwYiwweDdkLDB4ODksMHgxNiwweGNkLDB4ZmEsMHg5NSwweDZkLDB4MzcsMHg0MCwweDNmLDB4ZGIsMHgxNSwweDc1LDB4ZDYsMHg1ZiwKKyAgMHhjMywweDhmLDB4YmQsMHg5NywweDlmLDB4MmYsMHg1ZSwweGM2LDB4ZjIsMHhiMSwweGQ3LDB4M2QsMHg2OCwweGViLDB4Y2UsMHgxOSwKKyAgMHgxMSwweGY2LDB4NGEsMHg1OSwweGMyLDB4OTIsMHg2NywweDQ5LDB4ODQsMHhlNywweDliLDB4NzEsMHg4ZiwweDkwLDB4OTksMHgxZiwKKyAgMHgzYiwweDE2LDB4YmYsMHhjOCwweDFhLDB4Y2IsMHhmOSwweDI3LDB4NTgsMHhhMiwweGZmLDB4NjgsMHhmNCwweGU5LDB4NzEsMHhmMSwKKyAgMHg4YSwweGY2LDB4ZDgsMHg4NiwweGQyLDB4ZTgsMHg2MywweDYzLDB4MTksMHhkOSwweDEwLDB4ZjEsMHg5NywweDQ2LDB4OWQsMHhjMywKKyAgMHg2NiwweDdlLDB4NmMsMHg4MywweDlmLDB4YjYsMHgxOCwweDc4LDB4N2YsMHg2YSwweGQ2LDB4YTYsMHhkZSwweDFhLDB4OTEsMHg2NywKKyAgMHhmYiwweDJmLDB4NjksMHg4ZCwweGNhLDB4NGMsMHhhZiwweGVjLDB4ZjEsMHhlNCwweDQxLDB4MjAsMHg5NCwweDVmLDB4ODMsMHhjZiwKKyAgMHg2ZiwweGUyLDB4YzcsMHg1NiwweDYyLDB4ZjIsMHhjYSwweDMyLDB4ODcsMHg0YywweDkxLDB4ZDYsMHgwOCwweDMxLDB4MzcsMHg5NywKKyAgMHhmNCwweDBiLDB4YzgsMHhmNywweGEzLDB4YmMsMHhiYSwweDRmLDB4NWIsMHhhMywweDFhLDB4ZmUsMHgyZSwweDMzLDB4M2YsMHhiNiwKKyAgMHhlMSwweGNmLDB4NTcsMHhlOSwweDZkLDB4MTYsMHg4NywweGQwLDB4MjQsMHgxNSwweDIyLDB4N2UsMHgzMCwweDEyLDB4NWQsMHgxYywKKyAgMHhkMCwweGE2LDB4NWEsMHhlZSwweGE0LDB4NGQsMHg3ZSwweGI1LDB4MDEsMHgxNSwweGE1LDB4OTksMHgxZiwweDFiLDB4ZjEsMHg5ZSwKKyAgMHg1NCwweDE5LDB4NGQsMHg0NywweGIzLDB4OWEsMHgxYywweDg1LDB4MDIsMHg3ZCwweDFhLDB4YzcsMHgyNywweDRmLDB4MTIsMHg3YiwKKyAgMHhhNywweDJkLDB4ZmMsMHg4ZCwweDNhLDB4YTIsMHgwYiwweGRkLDB4ODMsMHg4YiwweDQzLDB4YTksMHhmZCwweDYxLDB4YjksMHhiYywKKyAgMHhkZCwweDM0LDB4OGIsMHhmNywweDRiLDB4YmQsMHg4OCwweDQwLDB4ZTgsMHg2NiwweDllLDB4MWYsMHg4ZSwweDg2LDB4ODYsMHhkNywKKyAgMHhmNiwweDZlLDB4Y2QsMHhiMywweDhlLDB4OGIsMHhmNywweDU0LDB4NDQsMHg3OCwweGE4LDB4M2EsMHgyNSwweGZlLDB4YzUsMHhlNSwKKyAgMHhiOSwweDc1LDB4NmMsMHhkMiwweDMwLDB4N2IsMHgwMywweGVmLDB4YmYsMHg3ZSwweDU0LDB4YWUsMHg4MCwweDVlLDB4OTgsMHg4ZCwKKyAgMHhkZiwweDNjLDB4YTcsMHgxYywweDBlLDB4YjMsMHg2YywweGRkLDB4MWEsMHg0ZCwweGVkLDB4MGYsMHhjMiwweGJiLDB4OTksMHg3MCwKKyAgMHg1YSwweGVjLDB4MjgsMHg2OSwweDhiLDB4YzUsMHhiMywweDljLDB4MjgsMHg0ZiwweGNhLDB4NWMsMHgwMSwweGU3LDB4YzYsMHg5OSwKKyAgMHhhYywweDE1LDB4MGQsMHgyYiwweDdlLDB4ZTIsMHg1MiwweGYwLDB4MGYsMHhjMiwweGE0LDB4NjUsMHg5NiwweGVkLDB4ZDksMHg0MywKKyAgMHg0NiwweDNmLDB4ZDAsMHgzNiwweGVlLDB4ZDgsMHg3OSwweDkyLDB4MzMsMHgxYywweGZhLDB4ODksMHg2MywweDYzLDB4ZTAsMHg5YiwKKyAgMHg0NSwweDExLDB4M2UsMHhkZiwweGVjLDB4ZmYsMHhlMSwweGViLDB4MDMsMHgxNiwweDE3LDB4OWEsMHgyMSwweDRkLDB4MzEsMHg3ZiwKKyAgMHg4OCwweDU1LDB4NjgsMHg4NCwweDQyLDB4MmQsMHhjMCwweDUwLDB4MDksMHhiNSwweDUxLDB4ODcsMHg4ZSwweGViLDB4NjMsMHhlMiwKKyAgMHhjNywweDRlLDB4NWIsMHhhMSwweDE5LDB4NmQsMHg3MCwweDc5LDB4M2QsMHhkMSwweDUxLDB4ZWYsMHhjZiwweDc1LDB4ZGIsMHhlNywKKyAgMHg2MiwweDA1LDB4YmMsMHg3NSwweDBmLDB4NmUsMHg3YiwweDkwLDB4MWQsMHhmNCwweDgwLDB4MzAsMHg0ZiwweDc3LDB4ODYsMHg0YywKKyAgMHhmYywweGQ4LDB4YTEsMHgyOSwweDk3LDB4ZDgsMHg1NSwweDU4LDB4MDAsMHhjNSwweGEzLDB4OWMsMHgwZCwweDViLDB4ZGQsMHhjNSwKKyAgMHhkYiwweDVlLDB4NzAsMHg0NCwweDg0LDB4YjAsMHhhNywweGFmLDB4NjksMHg4YywweDUzLDB4MDEsMHg2YiwweDY4LDB4OGYsMHhhNywKKyAgMHhjNiwweGJmLDB4M2UsMHhlNywweGZjLDB4YTIsMHg2NywweGM1LDB4MTMsMHhlYywweGFhLDB4NTYsMHg1YSwweDZiLDB4MWQsMHgxMywKKyAgMHgxZiwweDgxLDB4ZjcsMHg1NCwweDFlLDB4MTEsMHhiYiwweGM1LDB4ZDUsMHgzZiwweGUwLDB4YWYsMHg5MiwweDk2LDB4ZjQsMHhhNSwKKyAgMHhlNiwweGZmLDB4YzAsMHhlZSwweGEyLDB4ODIsMHg0MSwweGZhLDB4ZGYsMHhjOCwweDI3LDB4ZWMsMHg1NywweDEyLDB4NGEsMHhkNywKKyAgMHgxZSwweDUyLDB4MDgsMHhlYiwweDgzLDB4NjgsMHg1NiwweDc3LDB4OTMsMHhlOSwweDNhLDB4ZTIsMHhjMywweGE1LDB4NzIsMHg4YiwKKyAgMHgzZCwweDE1LDB4ZmYsMHhlYywweDU2LDB4ZDUsMHg3ZSwweDU0LDB4M2EsMHg3NSwweGJlLDB4YmQsMHgyMSwweGY1LDB4NGUsMHg4YiwKKyAgMHgyYiwweGJiLDB4NTYsMHg3OSwweDNjLDB4ZTYsMHgwMSwweDAzLDB4YTksMHhiMSwweDc5LDB4YzUsMHhmNSwweDMyLDB4YTQsMHg5MywKKyAgMHhjOSwweDI5LDB4ZjksMHgzZiwweDMxLDB4MzYsMHhjZSwweDBmLDB4NzgsMHhhMiwweDc4LDB4NWQsMHgxMSwweDJmLDB4NmMsMHg2ZiwKKyAgMHg4YiwweDM5LDB4ODIsMHg4YSwweGYyLDB4MDMsMHhlYSwweDgzLDB4YWEsMHhkYywweDkzLDB4NmUsMHhjMiwweDNmLDB4NTMsMHgxMCwKKyAgMHhmZCwweGVhLDB4YjMsMHhmNSwweGM1LDB4YTMsMHgzOSwweDBmLDB4YzMsMHgxNSwweDU2LDB4NWEsMHg5NywweDE1LDB4MTYsMHhlZiwKKyAgMHgzMCwweDFhLDB4OTUsMHhlMiwweDA5LDB4MmEsMHgxMCwweDBlLDB4YjIsMHhjYSwweGQ5LDB4NGIsMHg1YSwweDZiLDB4NTIsMHhmMywKKyAgMHg3ZiwweDJlLDB4NTcsMHg1NywweGU5LDB4YjMsMHg0NiwweGUxLDB4NjEsMHhlZCwweDQyLDB4YjAsMHgyYSwweDhhLDB4ZGEsMHhmYywKKyAgMHgwYiwweGFmLDB4ODEsMHg4OCwweGM2LDB4NWYsMHhlZCwweDRmLDB4YmYsMHhjNCwweDJhLDB4ZmQsMHhlYiwweDM1LDB4MzksMHgzNSwKKyAgMHhmZSwweDM1LDB4ZTYsMHg3NSwweGY3LDB4MmQsMHgwZSwweGNiLDB4ZDMsMHgyMSwweGMyLDB4ZDAsMHgyYywweDBkLDB4OGIsMHg0MywKKyAgMHg5YSwweGQxLDB4MjgsMHg5NiwweGExLDB4NDYsMHhjMywweDgxLDB4ZTIsMHhkYywweDc0LDB4MGQsMHhmZSwweGQ5LDB4YWUsMHgxNywKKyAgMHhlOCwweGY1LDB4OWYsMHhmNywweDE1LDB4YzIsMHgyMCwweDE4LDB4NjksMHg0ZSwweDY3LDB4ZTAsMHhiZCwweDU4LDB4NDcsMHhjZSwKKyAgMHhhZiwweDczLDB4NmEsMHgzYiwweDA3LDB4NmEsMHhhOCwweDZiLDB4ZjAsMHg0ZiwweDQ0LDB4MWQsMHhhNSwweGU1LDB4NjgsMHg5NCwKKyAgMHg4OSwweGEwLDB4NzIsMHhmNiwweDgxLDB4ZDcsMHhmYywweGJjLDB4M2YsMHg1MSwweGM2LDB4YWQsMHgyNCwweDQzLDB4MGQsMHg4MiwKKyAgMHg5MywweDA1LDB4YWUsMHhjMSwweDNmLDB4ZjAsMHgzYiwweDk2LDB4M2YsMHg0NCwweDU3LDB4N2EsMHg2ZSwweDI0LDB4NGYsMHgzNCwKKyAgMHg3ZiwweDJmLDB4NmEsMHg1OSwweGU5LDB4N2YsMHg1NywweDdiLDB4NjIsMHg4YiwweGQxLDB4MzgsMHgzNSwweGRiLDB4ZTgsMHhhMCwKKyAgMHg0YSwweDE3LDB4OTIsMHhkNCwweGZlLDB4MjAsMHg2NywweGMxLDB4ZGQsMHg0NywweGRkLDB4YTIsMHgzNSwweGY0LDB4YWEsMHgxYSwKKyAgMHhlZSwweGI3LDB4YjksMHhjNCwweDIxLDB4Y2YsMHhhYiwweDZjLDB4YWEsMHg5ZSwweGQ5LDB4MmQsMHhkMiwweDY1LDB4NmYsMHg0ZSwKKyAgMHhhYSwweGYwLDB4MmUsMHgyZSwweDRmLDB4ZTksMHgwZiwweGIyLDB4MGYsMHg3ZSwweDA3LDB4MjUsMHg3ZCwweDQ2LDB4NzQsMHhlZiwKKyAgMHgyYSwweDU0LDB4ZjQsMHhkZSwweDY0LDB4ZjAsMHg0MywweDVhLDB4MTYsMHhlOCwweDI1LDB4YTMsMHhmMiwweDk4LDB4YzYsMHhmMSwKKyAgMHg4ZiwweGVkLDB4YWIsMHhmOCwweGM3LDB4N2QsMHgyYywweGViLDB4NjUsMHgzNCwweDcyLDB4MGYsMHgwNSwweDhkLDB4ZjgsMHgzNSwKKyAgMHg0ZiwweGQ0LDB4N2YsMHg1NCwweGI3LDB4ZjUsMHhkNCwweGNjLDB4OTEsMHhmNiwweDA0LDB4ZDAsMHhiNCwweGQ3LDB4YWYsMHhjMSwKKyAgMHgzZiwweDJmLDB4YzEsMHgxNiwweGRkLDB4ZTEsMHg2ZSwweGE1LDB4YmMsMHhkZiwweDEwLDB4MmYsMHhhYywweDM4LDB4NDksMHg5YSwKKyAgMHgxYywweDVjLDB4YjAsMHg4OCwweDg2LDB4M2YsMHg1OSwweGE3LDB4ZGEsMHgzNSwweGY4LDB4ZTcsMHgyNSwweDU2LDB4MzgsMHhjYywKKyAgMHhlMywweDdkLDB4YzIsMHhlMywweGIxLDB4N2MsMHhhNywweGQ3LDB4NjEsMHg0ZCwweDY4LDB4NjYsMHg1NCwweDFlLDB4MjYsMHhkNywKKyAgMHgwOSwweGZmLDB4YmMsMHg0MSwweGJkLDB4M2YsMHhiMCwweDM0LDB4MTUsMHhmZiwweDQ4LDB4YmIsMHhjMSwweGU4LDB4NDcsMHg2MywKKyAgMHg1MywweDc3LDB4NDQsMHgwYSwweDQzLDB4YjIsMHgyYiwweDdiLDB4YzQsMHhlMCwweDZiLDB4OTUsMHg2ZiwweDIzLDB4YjcsMHhhNywKKyAgMHhlZCwweDYwLDB4MWQsMHgzZSwweDdhLDB4ZmQsMHgzNSwweGY4LDB4ZTcsMHg4YSwweDU2LDB4ZDYsMHg4OCwweDIwLDB4NjcsMHgzZSwKKyAgMHg3OSwweDU3LDB4N2YsMHgyOSwweDZjLDB4ZjgsMHg3ZiwweDBlLDB4NDIsMHgzOSwweGIzLDB4N2QsMHgyMiwweDk2LDB4YjMsMHhhNywKKyAgMHg1OCwweGU5LDB4NDYsMHhlNywweGQwLDB4YjUsMHhmOCwweDQ3LDB4MmEsMHg0NywweGVkLDB4MjMsMHg5ZSwweGQyLDB4ODYsMHg5NSwKKyAgMHg3OSwweGU5LDB4NzEsMHg3ZiwweDQ4LDB4YWMsMHgzZiwweDQ4LDB4ZTEsMHg5OCwweGI3LDB4MzIsMHg3YiwweDNkLDB4NmIsMHhiYSwKKyAgMHgwNiwweGZmLDB4NzQsMHg5NSwweGY5LDB4YWMsMHg5YiwweDZmLDB4OTQsMHgwOCwweDJmLDB4N2IsMHg3NywweDZlLDB4MTAsMHgzZiwKKyAgMHg0MCwweGY5LDB4NjMsMHg5NCwweGJkLDB4N2YsMHhjMCwweGVkLDB4N2QsMHg5ZiwweDM1LDB4MDgsMHhkNywweGUyLDB4MWYsMHhiYiwKKyAgMHhjZiwweGIxLDB4OTksMHg0YywweDg3LDB4YzMsMHg0NiwweDdmLDB4NTgsMHgzYywweDA4LDB4NmYsMHgwMSwweGQxLDB4ZTgsMHgzZiwKKyAgMHg5MywweDBmLDB4ZDgsMHhkZSwweDQyLDB4NGUsMHgxZCwweDM5LDB4MjksMHg5NCwweDgyLDB4N2YsMHhmNiwweGQyLDB4MzMsMHhiNSwKKyAgMHgwOCwweDYzLDB4YTYsMHg1NywweGI3LDB4NGMsMHg3ZSwweGIwLDB4ZGEsMHg2OCwweDYzLDB4MTEsMHhlZiwweDY3LDB4MzEsMHgyNCwKKyAgMHgzYywweDBmLDB4MjUsMHhmNywweGQyLDB4ZDQsMHhmZSwweGIwLDB4ZGMsMHhmZiwweGUzLDB4ZjMsMHgzYSwweDBjLDB4NmYsMHg4ZiwKKyAgMHg4NiwweDc3LDB4ZTMsMHg4ZSwweGEwLDB4YzksMHgwOCwweDljLDB4ZjAsMHhjYSwweDZiLDB4NDYsMHg2OCwweGNjLDB4YTEsMHg1YywKKyAgMHg5NywweGQyLDB4MWYsMHgxNiwweDQ2LDB4YTEsMHg4YywweGI3LDB4MDUsMHg4OSwweDQ1LDB4ZGIsMHhiOSwweDIzLDB4NDgsMHg4YSwKKyAgMHg0MCwweDg3LDB4MzEsMHgxMCwweDYyLDB4MWQsMHg2MywweDg1LDB4NzUsMHgyOSwweGY4LDB4ZTcsMHgzMiwweDRjLDB4ZjMsMHgyZSwKKyAgMHhkOSwweDI0LDB4NWUsMHhjZSwweGZlLDB4ODQsMHg1NywweDdiLDB4MDUsMHgwYiwweDNlLDB4ZTcsMHgzNCwweGUwLDB4ZGEsMHg3YSwKKyAgMHg2ZiwweGMxLDB4ZTcsMHhjMiwweDY3LDB4NjAsMHhmNCwweDg3LDB4N2QsMHgzNiwweDA1LDB4ZmYsMHg1YywweDg2LDB4MWQsMHhiNSwKKyAgMHhiNiwweDYzLDB4NzIsMHg2ZSwweGU4LDB4YjAsMHhjYiwweGVkLDB4YjUsMHgwZSwweGQ2LDB4OWMsMHhkNywweDBmLDB4YTgsMHhhNSwKKyAgMHg5YSwweGVkLDB4NGQsMHg0ZSwweDk0LDB4OGQsMHhmOCwweGM3LDB4N2EsMHg0ZCwweDdmLDB4MzQsMHhlOCwweDkxLDB4ZWQsMHg5MiwKKyAgMHhlYywweGY3LDB4YWIsMHg3OCwweDMyLDB4ZWMsMHgzNywweDUxLDB4NDYsMHhkZSwweGY3LDB4MDcsMHgzNCwweDgzLDB4MjgsMHg1MiwKKyAgMHgwZCwweGUxLDB4ZjksMHhkYSwweDRjLDB4OWYsMHhmOSwweDRhLDB4ZmUsMHg4ZiwweGFhLDB4YzksMHgzOSwweDQ0LDB4MGEsMHg3MSwKKyAgMHhmNiwweDVkLDB4YWEsMHg2NCwweGYzLDB4NDAsMHg5OCwweGQxLDB4MjEsMHhhZSwweGY5LDB4MjAsMHhmNywweDgwLDB4ZDUsMHgyYiwKKyAgMHg3NywweDk4LDB4ZTIsMHg1ZiwweDkzLDB4M2IsMHg3MSwweDdkLDB4OGMsMHhlOCwweDYxLDB4MjEsMHg2ZSwweGE0LDB4OTAsMHg1NiwKKyAgMHgxZSwweGNmLDB4YTcsMHhkMiwweGU0LDB4OTcsMHgxNiwweDE2LDB4YzIsMHhmMywweGE0LDB4YTQsMHgwZSwweDUyLDB4ZmEsMHhhMywKKyAgMHhmMSwweGZjLDB4NjcsMHhhZiwweDliLDB4MTcsMHhlOSwweGNmLDB4OTAsMHhjNiwweGE1LDB4NTIsMHhjZCwweDE5LDB4YWMsMHg4OSwKKyAgMHhmNSwweDA3LDB4YjksMHgzOSwweDU3LDB4N2MsMHg0ZSwweDNkLDB4YTAsMHg1NSwweDdhLDB4NmIsMHgzNywweGE3LDB4YzYsMHhiZiwKKyAgMHhhNCwweGYxLDB4MDAsMHhjNywweDNmLDB4MzksMHg0MywweGZlLDB4NWUsMHhkZCwweDAwLDB4NDIsMHhmZCwweDcwLDB4MzYsMHg5ZSwKKyAgMHhmZiwweGMzLDB4ZGUsMHg4MiwweDhhLDB4NjUsMHhiNiwweGVjLDB4NTQsMHhmYywweDIzLDB4OGMsMHg4MSwweDViLDB4YmEsMHg4ZiwKKyAgMHhkOSwweGYyLDB4YjUsMHg0OCwweDBjLDB4NmQsMHg3MiwweGIzLDB4ZjcsMHhlMSwweDU4LDB4YzcsMHhiYSwweDg4LDB4NTQsMHhhOSwKKyAgMHg1OCwweDliLDB4ZTUsMHhkNCwweGY4LDB4ZDcsMHg3ZSwweGI2LDB4OTUsMHgzOSwweDRlLDB4ZDUsMHhmYywweDE4LDB4YmUsMHgwMywKKyAgMHg3NiwweDRlLDB4ZjMsMHgzZSwweDA2LDB4NmYsMHg4MywweDliLDB4YzksMHgxZiwweDkwLDB4ZjksMHg1YSwweGViLDB4MzcsMHg2NywKKyAgMHhhMSwweDIxLDB4NTYsMHg5MywweGRhLDB4MWYsMHg2ZCwweDA3LDB4ZjMsMHg0NSwweGU5LDB4NGUsMHhiMiwweGMyLDB4ZDEsMHhhNCwKKyAgMHhhOCwweGZhLDB4ZjUsMHgzYywweGVkLDB4MTksMHhlZCwweDA1LDB4NWQsMHg5ZSwweDZhLDB4ZjksMHgzYSwweDZkLDB4ZDIsMHg5YywKKyAgMHgwZCwweDE2LDB4NTcsMHgyYSwweGZlLDB4MTEsMHg3NiwweGQxLDB4ZmMsMHgyOCwweDVkLDB4NGUsMHg5NiwweGMyLDB4ZTMsMHhmMCwKKyAgMHgzZCwweDVlLDB4MGYsMHhjNSwweGRiLDB4ODQsMHhlMSwweGY5LDB4YmQsMHg5NywweDU4LDB4ZjMsMHhkNywweGQwLDB4ZTIsMHgzNywKKyAgMHg3MSwweDdlLDB4NGEsMHg3ZiwweDM0LDB4NzgsMHg4NSwweDk1LDB4ZmEsMHhlYSwweDRlLDB4NTgsMHhiZSwweGNiLDB4ZmIsMHg5NywKKyAgMHg4ZCwweDY2LDB4MmUsMHgxNSwweGFmLDB4YzAsMHhhYiwweGVjLDB4OTksMHhhOCwweDZkLDB4NGMsMHhiZSwweDBlLDB4ZGUsMHgwOCwKKyAgMHg1NCwweGY5LDB4NGEsMHg1NiwweDhhLDB4MWYsMHgyNSwweGZkLDB4M2YsMHg5OSwweGRiLDB4MGMsMHg3YiwweGYzLDB4NjYsMHg5NiwKKyAgMHgzMywweDhjLDB4NDAsMHg3MSwweDlmLDB4M2UsMHhjYiwweDIwLDB4NWEsMHgyNywweDMxLDB4YTIsMHg1YSwweGMyLDB4MWIsMHg1ZCwKKyAgMHgzZCwweDE2LDB4NGUsMHhlOSwweDhmLDB4NzYsMHgwNSwweDc4LDB4ZDksMHhmYiwweDYzLDB4NjMsMHhhMiwweDViLDB4M2IsMHgxYywKKyAgMHgyZSwweDFkLDB4YjIsMHg5ZSwweGY4LDB4ZDYsMHgwNSwweGU1LDB4MjgsMHhhYiwweDFhLDB4YjIsMHhkZCwweDIwLDB4YmUsMHhjYywKKyAgMHgzYiwweDNlLDB4YTgsMHgzNywweGFmLDB4MTQsMHhjMCwweDE0LDB4ZmYsMHgzMiwweGY4LDB4YWUsMHgyMywweDhlLDB4NjUsMHgzNSwKKyAgMHg2ZSwweGVkLDB4MjUsMHhlNSwweGQ2LDB4NjEsMHg3YywweGZlLDB4MzEsMHhkMiwweGM0LDB4ZmIsMHhiYiwweGZkLDB4MWQsMHg5OSwKKyAgMHgwMywweGNkLDB4NTAsMHgyYywweGM5LDB4ZWUsMHhkNiwweGQ0LDB4ZmMsMHg5ZiwweDk3LDB4OTQsMHg3YywweGFkLDB4Y2UsMHg1YiwKKyAgMHhhNiwweDg0LDB4N2UsMHhhMSwweGRlLDB4MWYsMHg0NSwweGMzLDB4ZWQsMHhhNCwweDQxLDB4MGMsMHhiZSwweDY4LDB4OTAsMHg2YywKKyAgMHgzMiwweGEwLDB4MTQsMHg0YSwweDMwLDB4NzMsMHg3ZiwweGQ4LDB4MDEsMHhmYywweDQ4LDB4MmEsMHhkYSwweGZiLDB4YTQsMHgxYSwKKyAgMHgwZiwweDcyLDB4ZTEsMHg3MSwweDNjLDB4NWYsMHg2NywweDBjLDB4NDcsMHg5MCwweDVjLDB4NDgsMHg4YSwweDYwLDB4ODcsMHg1MiwKKyAgMHhkMiwweDJjLDB4OTcsMHg1ZiwweDY3LDB4ZWUsMHgwZiwweGJiLDB4MGQsMHgyZSwweDY4LDB4M2MsMHg5YiwweDU0LDB4NzYsMHhhMiwKKyAgMHg1YSwweDcxLDB4OGQsMHhhMiwweGI1LDB4ZjgsMHg2OSwweGNjLDB4MTEsMHg5NCwweDI2LDB4NzYsMHhiYywweDdhLDB4OTEsMHgwMywKKyAgMHg5YiwweGRmLDB4ODksMHg0NSwweDI5LDB4ZjgsMHhlNywweDgyLDB4NWUsMHgxOSwweGNjLDB4ZWEsMHgxNCwweGJiLDB4YjgsMHhmZiwKKyAgMHhhNywweGQ3LDB4MTYsMHg5ZSwweDE0LDB4ZTcsMHgwNywweGUwLDB4MWUsMHgxMiwweGQ5LDB4NTIsMHgxOSwweGY5LDB4NGEsMHg3ZiwKKyAgMHg5MCwweDJiLDB4NzQsMHg4NywweGI2LDB4NjIsMHhhOSwweDVjLDB4ZWUsMHgzZiwweDEwLDB4NzQsMHhmNywweDY1LDB4NWUsMHhjOCwKKyAgMHhiOSwweDQ0LDB4ZGUsMHg4MCwweDFmLDB4ZjEsMHhjNiwweGU4LDB4MmUsMHgxOCwweDY4LDB4YWMsMHhhYSwweDVlLDB4M2IsMHg3YSwKKyAgMHgwZCwweGZlLDB4ZDksMHhmNywweDUwLDB4ZmUsMHgzNiwweGZhLDB4YTYsMHg1ZiwweGYxLDB4M2YsMHhjNiwweGU2LDB4ZWEsMHg2OCwKKyAgMHg3ZCwweDljLDB4NjUsMHg2ZCwweDcwLDB4YmEsMHhiNywweDJkLDB4NDAsMHhiNiwweGFhLDB4ODEsMHhkMywweDI1LDB4NmEsMHg1ZCwKKyAgMHg1OCwweDBjLDB4YTUsMHhlMCwweDlmLDB4MzAsMHg2ZiwweDFhLDB4MzgsMHhkMSwweGM2LDB4MmIsMHgyMywweDljLDB4M2QsMHgyMiwKKyAgMHhiNSwweDA5LDB4MDgsMHg5YywweDAyLDB4YzQsMHhhZSwweDA0LDB4ZDQsMHgxMiwweGJiLDB4ZDEsMHgyOCwweDZkLDB4NjIsMHgzZiwKKyAgMHgxOCwweGZkLDB4ZDEsMHg3MCwweGI3LDB4OTYsMHgwMywweDAxLDB4ZDYsMHgwOCwweDMzLDB4NWUsMHg0NSwweDQxLDB4MWQsMHg5MSwKKyAgMHg5YSwweDA0LDB4OTQsMHhjZiwweDdlLDB4ZDIsMHgyYywweDMwLDB4MzAsMHhlYywweGZkLDB4YTQsMHhmYywweGUxLDB4ZmUsMHg5ZiwKKyAgMHg1MSwweDRlLDB4NjIsMHhhOSwweDhhLDB4OGUsMHhkMCwweDAxLDB4MjgsMHhlNSwweDg5LDB4MjgsMHgyMywweDcwLDB4YzgsMHg2YiwKKyAgMHhlNywweDhkLDB4NzEsMHgzOSwweGZmLDB4NDYsMHhhNSwweDU2LDB4YjIsMHhkZCwweGRjLDB4MWYsMHhmNiwweDdhLDB4OWUsMHhmZiwKKyAgMHg2MywweDYzLDB4ODYsMHg3NywweGNiLDB4ZTAsMHgzNywweDFlLDB4MTQsMHhjMywweGIxLDB4NDQsMHhkNiwweDVlLDB4NzksMHg5NCwKKyAgMHgxYSwweDg5LDB4NDAsMHhlNywweGM0LDB4MmUsMHgxMywweGZlLDB4NzksMHhkNywweGMwLDB4Y2YsMHhkNiwweDk1LDB4ZTIsMHhjZCwKKyAgMHg2MCwweGE0LDB4M2QsMHgwZiwweDhiLDB4MTUsMHhmNCwweGIwLDB4NjMsMHgwNywweGIzLDB4NzIsMHhmZiwweGU0LDB4NDAsMHhmMywKKyAgMHg2YywweGQ3LDB4ZTIsMHhhNSwweDA1LDB4NDksMHhmZSwweDFmLDB4NWQsMHgzOSwweGNkLDB4YjMsMHhjMSwweDgxLDB4NjcsMHgxYiwKKyAgMHgyYSwweDAxLDB4YzYsMHhkYiwweDEyLDB4ZjksMHhhYiwweDQ4LDB4OGIsMHg2ZSwweDBmLDB4NWIsMHhkYSwweGM5LDB4NmYsMHhhMSwKKyAgMHhhZCwweGQxLDB4MmUsMHhhMCwweGM0LDB4MWUsMHg0ZCwweGM0LDB4YmYsMHgyMiwweDEzLDB4ZmUsMHg5ZiwweGIwLDB4ZGQsMHg4OSwKKyAgMHhjYiwweGE4LDB4ZjIsMHhjNiwweGFmLDB4NTYsMHg0ZiwweDIzLDB4NTEsMHg5YiwweGViLDB4MTgsMHhiMSwweDIyLDB4MzAsMHhiNiwKKyAgMHg1MywweGRjLDB4MjEsMHhlNywweDEyLDB4ZjUsMHhhNywweGZhLDB4OTQsMHg5MCwweGQyLDB4YzMsMHgxNywweDAxLDB4ZWYsMHhjZiwKKyAgMHhmOSwweDA0LDB4ODQsMHg1YiwweGQ4LDB4MzIsMHgyNywweGNmLDB4ZmYsMHgwYywweDU5LDB4ODIsMHhmZSwweGRmLDB4YWEsMHhiZiwKKyAgMHg2MiwweDQ2LDB4N2YsMHhkOCwweDUxLDB4OTMsMHhiZiwweDI4LDB4ZTYsMHg3ZiwweGIwLDB4ZjIsMHhiMCwweGQ0LDB4MjEsMHgxZSwKKyAgMHg3NiwweGU5LDB4NmMsMHg3MywweGQyLDB4MDMsMHhjYywweGQ1LDB4NjUsMHhjZCwweDEwLDB4YmYsMHgwZSwweDZmLDB4MzIsMHg5NywKKyAgMHhjMywweGRhLDB4NjIsMHhlYSwweDhmLDB4MTYsMHgxMiwweGMyLDB4NjAsMHgyYywweDgyLDB4NmUsMHg2NCwweGQzLDB4NTUsMHg4MSwKKyAgMHg1NSwweGZmLDB4MTYsMHhlMiwweGMzLDB4OGMsMHg0YSwweGI2LDB4N2UsMHg1MCwweDFjLDB4YjUsMHhmYywweDI1LDB4YTMsMHg0YSwKKyAgMHhjMiwweDlmLDB4ODYsMHg1MywweGYwLDB4MGYsMHg0NywweDUzLDB4ZDYsMHhlZCwweDRkLDB4ZmMsMHhmZSwweDk1LDB4ZmQsMHhhOCwKKyAgMHgyOCwweGQ3LDB4MmEsMHhlMywweGUwLDB4NmUsMHhjZiwweDZhLDB4OWUsMHgzNCwweDlkLDB4ZjcsMHhhNywweDUzLDB4ZDcsMHgzMiwKKyAgMHg3MSwweGI2LDB4MDksMHhmZiwweGYwLDB4YzcsMHg0NiwweDkwLDB4ODMsMHhkZiwweDU3LDB4NjIsMHhkZSwweDEyLDB4MTUsMHgwNywKKyAgMHgxNSwweGIwLDB4ZGQsMHg4MywweDY2LDB4ZDcsMHgxZSwweDhmLDB4MTQsMHg2YywweDBiLDB4ZDksMHg1NSwweDdjLDB4NzEsMHg1NywKKyAgMHgwYSwweGZlLDB4ZTEsMHg2OCwweDkwLDB4Y2UsMHhjOSwweDVlLDB4MGMsMHg0ZCwweDdhLDB4YzksMHg1OCwweGFjLDB4OWYsMHhhOSwKKyAgMHhhNiwweDJhLDB4MTYsMHhmMCwweDU4LDB4MGQsMHhjNSwweGVkLDB4NzAsMHg1OSwweDVjLDB4MDksMHg3ZCwweDE3LDB4MTUsMHhkYywKKyAgMHhkMCwweGNjLDB4OGEsMHg1NSwweDFhLDB4NDksMHg3ZiwweDE4LDB4OWEsMHgwMywweGIzLDB4NTQsMHhiYSwweDk0LDB4NGMsMHg5MywKKyAgMHg3NiwweGY4LDB4ZjMsMHg1NSwweDVhLDB4ODcsMHg0NiwweGUxLDB4OWEsMHhlMCwweDk2LDB4NTEsMHgzYSwweDQ2LDB4MmEsMHgxMiwKKyAgMHhmMSwweGFmLDB4M2IsMHgxMSwweGZmLDB4ZmMsMHg1ZSwweGFhLDB4ZDQsMHg5ZCwweGIzLDB4YzUsMHhjNSwweGYwLDB4MmEsMHg1NCwKKyAgMHhmMCwweGIyLDB4YzEsMHhiNSwweDcwLDB4ZDYsMHhlNSwweGEyLDB4ZWIsMHg4OCwweGM3LDB4NGEsMHg1ZiwweGQ1LDB4NWMsMHhiYSwKKyAgMHhkNSwweDI1LDB4NjYsMHgyNywweGUzLDB4NWYsMHgzNywweDI1LDB4ZDYsMHgyNywweGFjLDB4NWQsMHg1MiwweDE2LDB4ODAsMHhlZCwKKyAgMHg0ZCwweGUxLDB4MzIsMHhmYywweDQ0LDB4YzEsMHgyYiwweDlhLDB4NzgsMHg1MiwweGZiLDB4NTIsMHhhYSwweGVhLDB4YjcsMHg4ZCwKKyAgMHg5OSwweGY4LDB4YjEsMHhlMywweGZlLDB4OWYsMHhhOCwweDkxLDB4ZWQsMHhmYywweDMxLDB4OGIsMHhlNywweDg3LDB4NWYsMHg4NCwKKyAgMHg4YSwweDUzLDB4ZDYsMHg4MCwweGU4LDB4OTQsMHgzZSwweDIzLDB4NmUsMHhkZCwweGRhLDB4NjUsMHhlNiwweGM3LDB4ZGUsMHgxMCwKKyAgMHg4NCwweDlkLDB4MjgsMHgzNCwweDIyLDB4MWEsMHgxOSwweDQ0LDB4NTUsMHg5YywweDBmLDB4MzIsMHhjYSwweDkzLDB4ZGMsMHg1ZCwKKyAgMHg5MCwweGM5LDB4NzksMHhkMywweGE2LDB4MWEsMHg0NCwweGQ5LDB4NjgsMHg0ZiwweDc1LDB4MjcsMHhlNCwweDFiLDB4ODMsMHhhNywKKyAgMHg5NSwweDVkLDB4NmMsMHgxNiwweDc3LDB4ZjIsMHhiYywweDBiLDB4ZmYsMHhjMiwweGMzLDB4NWUsMHgzYywweGRmLDB4ZmIsMHgyNSwKKyAgMHg1NiwweGRjLDB4OTEsMHgxMSwweGYxLDB4NGYsMHgzMywweDQyLDB4ODEsMHgxOSwweGY1LDB4ODQsMHg5YSwweGYwLDB4OGYsMHgwZSwKKyAgMHhmMSwweGZkLDB4MTMsMHgwNSwweDI2LDB4YTgsMHgyMCwweDJiLDB4ZTksMHgwMywweGIwLDB4ZGQsMHhiNywweGEyLDB4ZjEsMHg0ZSwKKyAgMHhiOCwweDI3LDB4NTMsMHhkZCwweGExLDB4ZDksMHhiOSwweDg3LDB4ZWQsMHgyOSwweDUzLDB4ZmMsMHgyYiwweDAwLDB4MTcsMHhhMCwKKyAgMHg4NCwweDk3LDB4YmQsMHgwZiwweDRiLDB4MmYsMHg5MCwweDM4LDB4M2YsMHhmNiwweDE1LDB4YTgsMHhlMiwweGExLDB4YjYsMHhkYiwKKyAgMHhlMCwweDBiLDB4Y2QsMHhjZCwweDhhLDB4M2IsMHg1MywweGY4LDB4YjEsMHg2MywweGRiLDB4NjYsMHg1NiwweDNmLDB4MTksMHg5ZCwKKyAgMHg1OCwweGE4LDB4MjgsMHhhZiwweDg3LDB4Y2EsMHg1ZSwweGNiLDB4MzMsMHg1NCwweGM3LDB4NmUsMHg0NywweDUzLDB4NDUsMHg2ZiwKKyAgMHgzMiwweGM3LDB4YmYsMHg2MiwweGZjLDB4M2YsMHg3OCwweDVhLDB4MGIsMHhmMywweDBlLDB4MjgsMHhiYywweGVjLDB4ZGQsMHhkMywKKyAgMHgwOSwweGUzLDB4OGQsMHg2NSwweGYxLDB4YzYsMHg1OCwweGVkLDB4NWYsMHhlNSwweGZmLDB4ODksMHhhNSwweGYxLDB4M2MsMHg2ZCwKKyAgMHhmZiwweGJhLDB4ZWYsMHgwMCwweDJiLDB4ZDEsMHg4YywweDQ2LDB4NjksMHhiYiwweDgzLDB4MjUsMHhmNywweGI0LDB4NmQsMHhiZSwKKyAgMHhlNywweDBjLDB4ZGQsMHhhZCwweDk1LDB4NjksMHg4MSwweDZiLDB4ZmQsMHgzZiwweDhmLDB4MDksMHhkZiwweGJiLDB4NWYsMHg3ZSwKKyAgMHhkMywweDMyLDB4MDcsMHgxZSwweDhiLDB4ZDUsMHhiMywweDc0LDB4NzIsMHgwZiwweGE0LDB4NzYsMHg2MywweGQwLDB4ZjMsMHhhYywKKyAgMHhjNCwweDAzLDB4NjcsMHg3NCwweDkwLDB4MWMsMHgzMSwweGYxLDB4ZmYsMHhmMCwweDY5LDB4ZjksMHgwZCwweGE4LDB4YWQsMHhhNiwKKyAgMHhjMCwweDJmLDB4NTgsMHhiMSwweDk3LDB4ZGUsMHg0YiwweDlhLDB4NzMsMHg3OSwweDNjLDB4ZTgsMHhjNiwweGJjLDB4ZWMsMHg3ZSwKKyAgMHg5NCwweGQ4LDB4Y2YsMHgzNCwweDM4LDB4YmMsMHhlNCwweDYwLDB4MjIsMHhmZSwweGM1LDB4ZjEsMHg0ZiwweDNjLDB4ZGIsMHhkOSwKKyAgMHg5MCwweDM2LDB4YjgsMHg1NSwweDA5LDB4ZjcsMHg0OCwweDcwLDB4MjIsMHhhMCwweDlhLDB4MTAsMHhiZCwweDIwLDB4YjgsMHgwNSwKKyAgMHhhYiwweDVlLDB4OTAsMHhmNCwweGZmLDB4OWMsMHhiOCwweDg5LDB4MjcsMHhkZSwweDU2LDB4MTgsMHg2YSwweDVkLDB4M2EsMHhjNSwKKyAgMHgwYiwweGMxLDB4ODIsMHhlNCwweGZiLDB4ZDIsMHg2NSwweGFkLDB4ZWEsMHg0ZCwweDliLDB4MzcsMHhlNywweDNjLDB4NWMsMHgxNiwKKyAgMHgyYSwweDc4LDB4YTAsMHgyNywweGM5LDB4OGYsMHg5ZCwweDI3LDB4MTgsMHg0ZCwweDQwLDB4NmEsMHgxMSwweGU0LDB4ZTQsMHgwYSwKKyAgMHg4NywweDc5LDB4ZDksMHhiYiwweDIyLDB4MGMsMHhiMSwweGNmLDB4MTEsMHhmZiwweDM4LDB4MDcsMHg2YiwweDJhLDB4MzgsMHhiMSwKKyAgMHhiNiwweDY2LDB4MWQsMHgyYywweDQ4LDB4ZTIsMHg5ZiwweDk1LDB4ZjEsMHhmZSwweDIwLDB4ZDQsMHhjMCwweDNmLDB4ZjEsMHg0NCwKKyAgMHgyMCwweGFkLDB4ODcsMHhkMywweGNlLDB4MzMsMHgzNCwweGJiLDB4N2EsMHg4OCwweDcxLDB4MjUsMHhjOSwweDhmLDB4OGQsMHhmOCwKKyAgMHg0NywweGRhLDB4MmQsMHgxNSwweGYyLDB4NzgsMHg5ZiwweGU0LDB4NmEsMHgxNCwweDljLDB4OWUsMHg0MCwweGI2LDB4OWYsMHhmMywKKyAgMHg4MSwweGFiLDB4YjcsMHg1MywweDllLDB4OTEsMHhjOCwweDNiLDB4ODYsMHgzOCwweDE0LDB4NjIsMHhlMiwweGM3LDB4OWUsMHhkMiwKKyAgMHgzOSwweDc1LDB4MzcsMHg3NCwweGYyLDB4ZjksMHhkYywweDlmLDB4ZTYsMHhhYywweGFlLDB4ZTcsMHhmZCwweDc5LDB4NzcsMHg2YiwKKyAgMHg0NSwweGRjLDB4YjEsMHgzNiwweDFkLDB4NzYsMHhkNywweDk0LDB4ZjAsMHg4ZSwweDY5LDB4MjksMHhmMSwweGFmLDB4YmMsMHhlZCwKKyAgMHg1MCwweDg2LDB4YjAsMHhjNywweDIyLDB4ZTEsMHg4NywweGFiLDB4YzQsMHg2OSwweDQ2LDB4NjIsMHhiMywweGRiLDB4NjcsMHhkZCwKKyAgMHgyMCwweGNlLDB4ZDAsMHgzOCwweGYwLDB4NzMsMHg5YSwweGZiLDB4YzMsMHgwZSwweDczLDB4ZmYsMHg4ZiwweDY0LDB4NTQsMHg4NywKKyAgMHgyZCwweGU3LDB4ZGUsMHgxZSwweDRmLDB4MmMsMHhmZiwweGI5LDB4YmQsMHg2MiwweGI5LDB4MmQsMHgyOCwweDlmLDB4ZTEsMHhhZSwKKyAgMHhhMSwweDFhLDB4MWMsMHg5YywweGJiLDB4YzYsMHhmZiwweGMzLDB4OWQsMHgzYywweDNjLDB4OTEsMHgwNCwweDBmLDB4ZmYsMHg3YSwKKyAgMHhmYywweDEwLDB4OTIsMHgwZSwweGYzLDB4MTQsMHg1YiwweGMwLDB4YzgsMHg0OCwweDc3LDB4MGIsMHg0NiwweGJmLDB4YjAsMHg4OSwKKyAgMHhlNywweDQxLDB4ZmMsMHgyMywweGVjLDB4ZTEsMHhmZCwweDQxLDB4YTIsMHg2NCwweDFlLDB4NTksMHhjNywweGU2LDB4MDYsMHhiMywKKyAgMHg0MiwweDc3LDB4MzgsMHg2MCwweDlkLDB4NTYsMHgxMCwweDkwLDB4ZWIsMHhjOSwweDMwLDB4YmMsMHhhYiwweGNjLDB4NjUsMHhiMiwKKyAgMHgyZiwweGQ1LDB4ZmYsMHhhMywweGVjLDB4ZTAsMHhkZCwweDE5LDB4NWMsMHhmOCwweDUyLDB4N2UsMHhhNiwweDBlLDB4YjYsMHhiOCwKKyAgMHhlYywweDI4LDB4NzYsMHgxNCwweGM3LDB4YzMsMHhmMiwweDY0LDB4ZDIsMHhhZiwweDM0LDB4NDksMHhmNiwweGUzLDB4ZjIsMHhiNSwKKyAgMHhmZSwweDlmLDB4NTcsMHhhMCwweDQwLDB4Y2YsMHg2YiwweDIwLDB4YjksMHhhZSwweDM1LDB4ODEsMHhlOSwweDQ0LDB4YmUsMHg0MCwKKyAgMHhiMiwweDYwLDB4MGQsMHhkYywweDVmLDB4N2QsMHhhMywweDk3LDB4N2MsMHgwMSwweGZmLDB4ZGMsMHgzOCwweDFkLDB4ZWYsMHg2ZiwKKyAgMHhlMiwweGM3LDB4MzYsMHhmYywweDNmLDB4NmMsMHgzNiwweDU3LDB4MmIsMHg4OCwweDc2LDB4NzAsMHg5MCwweGYxLDB4NjMsMHhjYiwKKyAgMHgzNCwweGYyLDB4MWEsMHhjYiwweGYwLDB4MmQsMHg1OSwweDlhLDB4ZjMsMHgwNywweDhhLDB4NTcsMHg3OCwweGEzLDB4YjQsMHhkMywKKyAgMHhlNiwweGZjLDB4MWYsMHhmYSwweDE5LDB4ZWMsMHhkMywweDY2LDB4MzEsMHg1YywweDk2LDB4Y2YsMHg4NCwweDRhLDB4YjgsMHg3YiwKKyAgMHg0NywweDJjLDB4ZmUsMHhjNSwweGNiLDB4NDgsMHhmYiwweGE1LDB4OGIsMHhiMSwweDA4LDB4YjUsMHhjOSwweGZmLDB4YjMsMHhlYSwKKyAgMHg4YSwweDM3LDB4NWUsMHhiNiwweDUzLDB4YzYsMHhkYiwweDlhLDB4MGYsMHhkZCwweGJjLDB4OWIsMHg1YywweGM5LDB4NDMsMHg4ZCwKKyAgMHhmNiwweGMxLDB4ZGEsMHhiNywweDcyLDB4Y2EsMHhlYSwweDJlLDB4MDYsMHg0YiwweDNiLDB4ZDcsMHhkNiwweGNiLDB4NDksMHg3YywKKyAgMHg2MiwweGU0LDB4ZmYsMHgzOCwweDc4LDB4MTMsMHgzNywweDdiLDB4MmUsMHhhYywweDkxLDB4OGEsMHgzZCwweDU5LDB4OGYsMHg5MiwKKyAgMHg5MywweGMxLDB4OTcsMHg5NywweDY3LDB4MWUsMHg3ZiwweGUxLDB4OWIsMHgxYiwweDczLDB4MjMsMHhiYiwweDQyLDB4YjcsMHgzNCwKKyAgMHhkMywweGZiLDB4ZmQsMHgyZiwweDk4LDB4ZTMsMHg1ZiwweDI4LDB4OTQsMHhlZSwweGU3LDB4MmYsMHgzNSwweGQ1LDB4ZjcsMHgwNCwKKyAgMHgxNCwweGY3LDB4Y2EsMHgwZCwweDdkLDB4MjcsMHhhNSwweDVkLDB4NWEsMHhiMSwweDlmLDB4ZWEsMHhmNiwweGJmLDB4NTEsMHg1ZSwKKyAgMHhhOSwweGNlLDB4NmYsMHhjZSwweGYwLDB4NWQsMHg4MywweDdmLDB4NzYsMHg4MCwweDNkLDB4NGYsMHhiNiwweDEyLDB4MWIsMHg3OSwKKyAgMHhkYywweGViLDB4ZjQsMHg1OSwweGNhLDB4YjMsMHgwNywweDk0LDB4NmUsMHhlMiwweDFjLDB4YjYsMHg0OCwweDllLDB4M2IsMHhiNCwKKyAgMHhlZCwweGNkLDB4NDUsMHg2YywweGE2LDB4OWQsMHgwNCwweDRjLDB4ZjEsMHhhZiwweGRmLDB4OTYsMHg3ZiwweDA2LDB4ZGQsMHg4YSwKKyAgMHhlZCwweDQ5LDB4ZDQsMHg1NiwweDZmLDB4MWQsMHgyZiwweDM5LDB4NmYsMHhiYiwweDY0LDB4MWYsMHg1MSwweDJlLDB4NzAsMHg4ZiwKKyAgMHg3MSwweDhmLDB4YjgsMHgwMiwweDNlLDB4MGIsMHhkOSwweDU5LDB4ZTYsMHgzNiwweGI5LDB4ZTgsMHg1YSwweGZmLDB4OGYsMHg2MiwKKyAgMHhkYiwweDIyLDB4N2YsMHhjMCwweDNlLDB4YWUsMHhhZCwweDBjLDB4MWEsMHg3YywweGRhLDB4MTcsMHgwOCwweDZmLDB4OGIsMHhmNiwKKyAgMHg5ZiwweGI2LDB4NDksMHgwOCwweDFkLDB4OTUsMHhhYywweDZiLDB4ZmMsMHgzZiwweGVhLDB4NTUsMHgzYSwweDM3LDB4NmEsMHgzZCwKKyAgMHgxMSwweGFiLDB4ZjcsMHhlOSwweGI3LDB4OGUsMHgzNiwweDcxLDB4ODQsMHg4MCwweGY2LDB4NDUsMHhiNCwweGU5LDB4MTEsMHhiYywKKyAgMHhmMiwweDIzLDB4N2QsMHg3MSwweDU0LDB4OGMsMHgyNCwweGYwLDB4MGYsMHgzMywweGZjLDB4M2YsMHg3NiwweDVmLDB4ZGQsMHg1YSwKKyAgMHg3ZiwweGI0LDB4NzksMHhlZiwweDAxLDB4ZTcsMHhjNiwweDNhLDB4MWUsMHhmZiwweDBhLDB4NDMsMHhjNywweGZkLDB4YjIsMHgxMywKKyAgMHhiMSwweGZmLDB4NmUsMHhjZCwweGVlLDB4ZTIsMHgxZSwweGM1LDB4NmIsMHhmMiwweDdmLDB4NjYsMHhlNCwweGQxLDB4OGQsMHg5ZSwKKyAgMHg0ZSwweGI2LDB4OTcsMHgxOSwweGZkLDB4NGMsMHg0NywweDYwLDB4YjcsMHg2YSwweGY3LDB4YzksMHhlZCwweDdlLDB4ZmMsMHgyOSwKKyAgMHgzMCwweDYzLDB4Y2IsMHhiNSwweGZlLDB4MWYsMHhiNiwweDgzLDB4YjMsMHg1OCwweGFhLDB4MWUsMHhkZSwweGFmLDB4YTcsMHg0NCwKKyAgMHhhMCwweDZlLDB4ZmIsMHg4MCwweGQ0LDB4ODMsMHgxNiwweGNhLDB4YTIsMHg2MCwweDNhLDB4OWUsMHg0NywweDU1LDB4ZTUsMHg4ZCwKKyAgMHhlNCwweGZhLDB4OTIsMHhmYywweGQ4LDB4OTksMHgzYywweGJmLDB4YjcsMHg4YywweDU5LDB4MTUsMHgzMSwweDQ0LDB4NzksMHg5YSwKKyAgMHhiNywweDczLDB4ZjQsMHg3MSwweGJjLDB4M2YsMHg0YSwweGQ0LDB4MjUsMHg4YywweGU3LDB4ZjcsMHhlNiwweDFiLDB4YTYsMHhhYiwKKyAgMHhkZSwweDk0LDB4Y2MsMHhmZiwweGY5LDB4ODQsMHhiZiwweDI2LDB4Y2MsMHhkMiwweDczLDB4MDYsMHhlOSwweDU1LDB4ODEsMHg3NywKKyAgMHhiMywweGFhLDB4ZTYsMHhlZiwweGJiLDB4YTAsMHg3YSwweDkyLDB4MjYsMHg1ZSwweDgyLDB4MmYsMHg5NCwweDU3LDB4MzgsMHhiMSwKKyAgMHg4OSwweDk5LDB4ZmYsMHhlNywweDJhLDB4NzcsMHg5YiwweGYwLDB4ZmMsMHhmMCwweDE1LDB4NzAsMHgxNCwweGRjLDB4NTEsMHhlYiwKKyAgMHg2OSwweDg0LDB4ODUsMHhiOCwweDNlLDB4MTQsMHhjZCwweGY2LDB4MzksMHhkNSwweDAzLDB4YjcsMHgyMywweDQyLDB4ZTgsMHgyNSwKKyAgMHgyOSwweGY5LDB4Y2YsMHg2YywweDBmLDB4YjMsMHhkMywweGJhLDB4ZjYsMHhmYywweDRmLDB4NjksMHgyYiwweGY4LDB4YTMsMHgzNCwKKyAgMHhlNCwweGIxLDB4NDMsMHg0ZiwweGIwLDB4YzgsMHg0NSwweDFmLDB4MjMsMHhjZiwweGU4LDB4ODEsMHhlYSwweDkyLDB4YTksMHg3NCwKKyAgMHhmNSwweDM1LDB4ZjEsMHhhZiwweDNkLDB4YTAsMHgxMiwweGNhLDB4MmMsMHg1YywweDliLDB4ZGIsMHg3NSwweDlhLDB4NGYsMHg0MCwKKyAgMHhjMywweGY3LDB4NmQsMHhhNiwweDkwLDB4MmQsMHgwMSwweDgyLDB4MWIsMHg5MSwweDBhLDB4YTksMHhmMSwweDJmLDB4ZDgsMHgxMywKKyAgMHhiMCwweDhiLDB4NjgsMHg4ZiwweDhjLDB4YjAsMHg1NiwweDg0LDB4OTEsMHgzNCwweGU0LDB4NTcsMHhkNSwweDFlLDB4NWEsMHhlNCwKKyAgMHg3NywweGIwLDB4YmUsMHhjZSwweDgyLDB4MTcsMHg1OSwweGM5LDB4MjksMHhkYSwweDA1LDB4NDksMHhmZiwweDhmLDB4M2EsMHg3OSwKKyAgMHgwNCwweGNlLDB4ZTksMHhkZCwweDVlLDB4NmIsMHg5YSwweDc4LDB4MmIsMHgwYywweDg0LDB4YzIsMHhiYSwweDc1LDB4NDgsMHg5YywKKyAgMHg1ZCwweDc3LDB4YzksMHg1YiwweGFhLDB4NTgsMHg1ZiwweDEzLDB4MTcsMHg0MCwweDQwLDB4YWYsMHhhYywweGI3LDB4NmUsMHgxNiwKKyAgMHhmMiwweDUyLDB4ZmMsMHgzZiwweGE4LDB4ZGQsMHgxYywweGI2LDB4MTMsMHg0ZCwweDczLDB4YzgsMHgxNSwweGJkLDB4YWEsMHg2ZiwKKyAgMHg1NiwweDU0LDB4M2MsMHgwZCwweDYzLDB4YWMsMHg4YSwweGI3LDB4ZjUsMHgxYywweDUxLDB4ZmUsMHg0NCwweDJiLDB4NjEsMHgxNiwKKyAgMHg1YywweGUzLDB4ZmYsMHhiOSwweGMwLDB4ZDMsMHgzOCwweDliLDB4NTEsMHgyZCwweDFlLDB4YTAsMHhhOCwweGRmLDB4M2IsMHgzOSwKKyAgMHgyZCwweGJmLDB4ZTYsMHgwZSwweDVhLDB4OWIsMHhjNSwweDYyLDB4ZmQsMHg4NCwweDU2LDB4ZTksMHg0MSwweGZiLDB4MmIsMHhiNSwKKyAgMHhmZSwweDZiLDB4MGYsMHhmNywweGM2LDB4ZWYsMHgxMywweDAzLDB4ZDAsMHhkNiwweDZjLDB4MWYsMHg0NCwweGJjLDB4OTcsMHhhZiwKKyAgMHhlMSwweDdlLDB4NjcsMHg5OSwweDk0LDB4MTQsMHgyYiwweDE5LDB4OTEsMHg5MiwweDA2LDB4NWMsMHhhOCwweDY0LDB4ZmUsMHhiMywKKyAgMHhjZSwweGVkLDB4MmYsMHgxZiwweGNlLDB4YmYsMHg5NSwweDFjLDB4ZDEsMHg1YSwweGZjLDB4NmEsMHhiZiwweDFjLDB4MjYsMHg1OSwKKyAgMHhhNCwweDBkLDB4NDIsMHgzZSwweDVhLDB4NmUsMHhiMSwweGUzLDB4OGEsMHg5NSwweDg0LDB4YTksMHg4MywweDg0LDB4NTMsMHhmYywKKyAgMHgzZiwweDNiLDB4MWIsMHg4ZCwweGZhLDB4ZjcsMHg3NSwweGFkLDB4YWIsMHg1OSwweGZlLDB4NzAsMHhkYiwweDRhLDB4MzIsMHg0ZCwKKyAgMHg1ZCwweGUzLDB4Y2YsMHg1ZiwweDk2LDB4ZjEsMHg2MywweDE0LDB4ZTMsMHhhYiwweGI2LDB4MTQsMHg4NywweDEwLDB4MTEsMHhiNSwKKyAgMHgyNywweGVlLDB4NWYsMHg4ZiwweGY4LDB4ZTcsMHg5YywweDVhLDB4MDEsMHgzNiwweGQ3LDB4MzcsMHg4ZSwweDQwLDB4Y2IsMHhjYywKKyAgMHhmMCwweDkwLDB4MmQsMHgyYywweDViLDB4ZTEsMHg1NSwweGQ1LDB4MTUsMHhiMSwweGNlLDB4NmYsMHgwMiwweGQyLDB4ZTcsMHhhZCwKKyAgMHhmMCwweDU4LDB4Y2IsMHg5YSwweDllLDB4NGEsMHhmMSwweGZmLDB4ZWMsMHhlNywweDRlLDB4OWUsMHhiMywweGUyLDB4MjUsMHgzYSwKKyAgMHg1MSwweGZmLDB4YTUsMHg1ZCwweDg0LDB4MDUsMHhkYywweGZlLDB4M2EsMHg1NywweGZiLDB4OTcsMHhkOSwweDQ2LDB4ZWIsMHg2MSwKKyAgMHg2ZiwweDhhLDB4ZmYsMHhjNywweDM4LDB4YWQsMHhlMSwweDQ5LDB4MDMsMHg0MiwweDQ0LDB4ZTgsMHhlZSwweGI1LDB4ZjUsMHgxOCwKKyAgMHg0MCwweGQ0LDB4NjgsMHhmNCwweDVjLDB4MDQsMHgwMywweGIxLDB4ZmEsMHhjYSwweGQ0LDB4ZmUsMHhiMCwweDJmLDB4YTMsMHg5YSwKKyAgMHg4ZSwweDc4LDB4YjMsMHg0ZiwweDEyLDB4YzYsMHhjZCwweDQ2LDB4OWUsMHhlZiwweGQ0LDB4YzQsMHgwMywweDM3LDB4MmUsMHg0MiwKKyAgMHg5NSwweGM3LDB4YTAsMHgwMCwweGE4LDB4ZjcsMHg5YSwweGZjLDB4ZTcsMHg5NywweGY1LDB4NjIsMHg0ZSwweGVhLDB4ZjgsMHgyZSwKKyAgMHg1ZCwweGE1LDB4MWIsMHhmOCwweDY3LDB4MWEsMHgzYywweGMxLDB4MGMsMHgyMiwweGEwLDB4MWIsMHhmMiwweDlhLDB4NTksMHhmZSwKKyAgMHhiMiwweGMwLDB4NTQsMHg3MywweGZlLDB4YjMsMHg4MiwweGY2LDB4OTcsMHhlYSwweDVjLDB4NDYsMHg4ZCwweDZlLDB4YjAsMHg4OCwKKyAgMHgxZSwweDE3LDB4YzUsMHgxYiwweDExLDB4NzIsMHg4ZiwweDUwLDB4YWIsMHhiNywweDUxLDB4MDgsMHgzNSwweDM4LDB4MzYsMHg1ZiwKKyAgMHg1YiwweGZmLDB4YTUsMHhmZCwweDljLDB4MzksMHg3ZCwweGUyLDB4NDUsMHgzOCwweGEyLDB4ZjMsMHhiNiwweDgzLDB4YjIsMHg4MywKKyAgMHgxYywweGUzLDB4MTUsMHg5OSwweGFhLDB4NWMsMHg0ZSwweDhlLDB4NDQsMHg0YSwweDQzLDB4ZDYsMHhhMSwweDZiLDB4ZjMsMHg5ZiwKKyAgMHhiNSwweDRhLDB4MDksMHhmNywweDQzLDB4NTQsMHgxZCwweDhkLDB4YjEsMHgxZCwweGVhLDB4YTgsMHhkNSwweDhjLDB4ZmEsMHg5NCwKKyAgMHg4NywweDYwLDB4OGMsMHhmMiwweGZhLDB4ZjcsMHhjNywweGFmLDB4ZjEsMHhmZiwweDMwLDB4NTQsMHg4MiwweDliLDB4MGIsMHgyNCwKKyAgMHgzOCwweDkwLDB4ZWIsMHhhZSwweGU1LDB4YjQsMHgzZiwweDJjLDB4NGUsMHg3YiwweDU4LDB4MDgsMHg2NywweGVkLDB4MmUsMHg5ZiwKKyAgMHgxNCwweDE0LDB4YWYsMHhjOSwweDdmLDB4YzYsMHhmOSwweDY4LDB4NDQsMHgxNCwweDQyLDB4OGIsMHhhZSwweDFhLDB4ZmUsMHgxYywKKyAgMHgzZiwweGUyLDB4N2YsMHhiYywweDIyLDB4ZmUsMHgwMywweGVmLDB4NTgsMHhlMSwweGE1LDB4NGYsMHg1ZiwweDliLDB4ZmYsMHg5YywKKyAgMHhlNywweGU0LDB4MzAsMHhjOSwweDQ5LDB4NWEsMHhhYSwweDhkLDB4NzgsMHhkOSwweDc5LDB4NzgsMHg0YywweDJkLDB4ZDAsMHgxYywKKyAgMHhjNywweGM4LDB4MWMsMHg2ZCwweDM3LDB4MjUsMHgwYiwweDJkLDB4MWIsMHhmZSwweDk1LDB4ZmMsMHg2NywweDhlLDB4MDcsMHhhMCwKKyAgMHg1MSwweGIzLDB4NzMsMHhiNywweGNmLDB4NzEsMHg2MSwweDE1LDB4NmYsMHhmYywweGVkLDB4MjUsMHhmZiwweDE5LDB4ODEsMHg3YSwKKyAgMHhjOCwweGZiLDB4OTEsMHhiOSwweGZlLDB4MzQsMHgxMSwweGZmLDB4MGEsMHhkZCwweDgyLDB4ZmEsMHg5NywweGQ4LDB4MjcsMHhmYywKKyAgMHgwZiwweGRjLDB4MTEsMHgyMSwweGJiLDB4MTAsMHg2YSwweGJiLDB4NjEsMHhkZCwweDM1LDB4ZjUsMHg1ZiwweGY0LDB4MzIsMHhjYywKKyAgMHg4ZiwweDU1LDB4YmIsMHg1ZiwweGY1LDB4NTQsMHg2OSwweGIzLDB4MzYsMHhkNSwweDdjLDB4MDAsMHhlMywweGJjLDB4M2YsMHhkYSwKKyAgMHgyNiwweGYxLDB4MDMsMHg3YSwweDU1LDB4YWIsMHhmMiwweGRlLDB4NzUsMHhiYywweDI2LDB4MjUsMHhmZSwweGE1LDB4NWQsMHg4NiwKKyAgMHgwYSwweGFmLDB4NmQsMHgzMCwweDY3LDB4OGUsMHg4MywweDI3LDB4MDIsMHhkOSwweGRlLDB4MTYsMHhjYiwweGQ0LDB4YzMsMHg4MSwKKyAgMHhkMiwweDdhLDB4ZWIsMHg4OSwweGE2LDB4YjksMHg4MCwweDg4LDB4YzgsMHg2YiwweDdkLDB4YjMsMHhlOSwweDhjLDB4OTIsMHhmNCwKKyAgMHhmZiwweDljLDB4NjYsMHg3YiwweDg0LDB4MTIsMHg0ZSwweDcyLDB4OTgsMHhhZiwweGY0LDB4YTgsMHgxZCwweDgwLDB4NjYsMHg2MywKKyAgMHgzZSwweDA0LDB4YjQsMHgwZSwweGEwLDB4Y2QsMHgxNiwweDFjLDB4YTgsMHgyOCwweDgxLDB4M2IsMHhjOSwweDExLDB4YjMsMHhmZiwKKyAgMHg4NywweDE5LDB4NjksMHgzZiwweDQxLDB4NWUsMHhlNiwweGNmLDB4YWIsMHhiZCwweDcyLDB4ZmQsMHhiYywweDQzLDB4YWUsMHhjYSwKKyAgMHg1NywweDIwLDB4MGQsMHgxYSwweGViLDB4NzAsMHgyOSwweGIyLDB4NGQsMHhmZCwweGE5LDB4OGQsMHhmYywweGU3LDB4ZTYsMHg5MiwKKyAgMHgzYSwweDc5LDB4YTMsMHg3ZCwweDc5LDB4ZTcsMHg2ZSwweDgxLDB4M2IsMHg4MiwweGVjLDB4ODUsMHgzNCwweGVlLDB4NGYsMHgyYiwKKyAgMHgxNCwweGRhLDB4ZDQsMHg5MiwweDQxLDB4OWEsMHhkMiwweDFmLDB4MzYsMHhkNywweDg4LDB4NjcsMHhmOSwweDZjLDB4ZmMsMHhlYiwKKyAgMHg4YywweDczLDB4YTAsMHgzYiwweDg4LDB4ODYsMHgzZSwweDdlLDB4NWYsMHgxZiwweGMyLDB4MWUsMHgxYywweGRjLDB4NWUsMHhiOSwKKyAgMHhkYywweGRhLDB4OGUsMHhkMCwweDdhLDB4NjIsMHg3ZiwweDFhLDB4ZjUsMHg1ZiwweDUwLDB4NTksMHhiZCwweGE0LDB4NWQsMHhlZSwKKyAgMHg4NCwweGIzLDB4ZmEsMHhmZSwweDg5LDB4N2MsMHhiMCwweDhhLDB4MDYsMHg4NCwweDg1LDB4ZmQsMHhmOCwweDUzLDB4ODUsMHg2ZiwKKyAgMHhkNiwweGM2LDB4ODIsMHg2YiwweGVhLDB4YmYsMHhhOCwweDExLDB4ZTQsMHgzYSwweDA1LDB4NjMsMHg4ZCwweDBmLDB4MWIsMHhiNCwKKyAgMHgzZiwweDJjLDB4MTYsMHhmNiwweGNhLDB4NTEsMHgwMywweDExLDB4MWYsMHhmZiwweDEwLDB4MDUsMHhkNywweGQ0LDB4N2YsMHgwNSwKKyAgMHhjYSwweDFhLDB4NjksMHhiZCwweDdmLDB4OTgsMHgzNywweDMyLDB4ZjMsMHhhMywweGY2LDB4YjksMHgwMSwweDVhLDB4MjUsMHhiNCwKKyAgMHhiZiwweDQyLDB4ZTIsMHgzYywweDc4LDB4NTcsMHgyZiwweDA4LDB4ZDIsMHhhOCwweDI3LDB4YzksMHgzMCwweGVkLDB4MTAsMHgxNiwKKyAgMHhhMywweDc2LDB4NTMsMHg2MywweGRkLDB4MTgsMHg1MSwweDMxLDB4OWQsMHgwZSwweDg0LDB4NDksMHgyNiwweDZkLDB4ZjIsMHhmYiwKKyAgMHg1MCwweGZlLDB4OTAsMHgzYiwweGQwLDB4M2UsMHg1NSwweDFmLDB4YTYsMHg3OSwweGZlLDB4ZDQsMHhmYSwweGFmLDB4OWQsMHhmZSwKKyAgMHhhZiwweDBmLDB4NTMsMHhjZSwweGQ2LDB4ZjUsMHgxMiwweGUwLDB4MzEsMHhmNCwweGZhLDB4MzMsMHg2MSwweDhkLDB4OTYsMHhlZiwKKyAgMHhhMSwweDhmLDB4OTAsMHg1YywweGY1LDB4ODksMHg0MCwweGJlLDB4OTcsMHhkZSwweDc3LDB4NmQsMHhmZCwweDE3LDB4N2IsMHg2OCwKKyAgMHhjYywweGM5LDB4YjMsMHg5ZCwweGFmLDB4YjIsMHgyZCwweDUxLDB4NWEsMHgyMSwweDRlLDB4MjMsMHhhZiwweGIyLDB4ZWQsMHgzZSwKKyAgMHg2NywweGI5LDB4N2MsMHgzNywweDljLDB4NmMsMHgyZSwweDBkLDB4MzksMHg4NywweDUzLDB4ZWIsMHhiZiwweGUwLDB4MWMsMHg1NCwKKyAgMHg0NiwweGYwLDB4MzQsMHgwZCwweGExLDB4YjUsMHg1ZSwweDgxLDB4NjYsMHhiZSwweGNjLDB4MzUsMHg3ZSwweDg1LDB4YjYsMHgzZSwKKyAgMHg2YywweGY0LDB4ZjMsMHhhYSwweGUyLDB4ZmEsMHhjYiwweDljLDB4ZmYsMHg3YywweDA1LDB4MmUsMHgwNywweDc3LDB4OGQsMHg0ZSwKKyAgMHg3ZCwweDRiLDB4YWMsMHhhYywweDNlLDB4MTIsMHgyYywweGY1LDB4NjUsMHgxYSwweGY1LDB4NWYsMHhjMSwweDJhLDB4OWYsMHhmNSwKKyAgMHg4MiwweGY4LDB4MDUsMHgxYywweGM2LDB4MmIsMHgzNiwweGRlLDB4MWYsMHhjNCwweGVjLDB4ZmYsMHhkOSwweGU5LDB4MmEsMHhkMCwKKyAgMHgwMywweGY3LDB4ZTcsMHhkYywweDBiLDB4NmIsMHhjYiwweGYzLDB4YmQsMHg3NSwweDBkLDB4OWUsMHg5MywweGQyLDB4OWEsMHg1MCwKKyAgMHgzMSwweDk3LDB4M2YsMHhlNywweGQ5LDB4MmEsMHg1NywweGZlLDB4MWQsMHhmMiwweDc3LDB4NTIsMHhmYiwweGMzLDB4YzIsMHhjYiwKKyAgMHgyNCwweDVmLDB4NzcsMHg3OCwweGVkLDB4ZDYsMHg4YywweGQ1LDB4ZmMsMHg5OCwweGYwLDB4ZmMsMHg5ZiwweDU1LDB4ZGMsMHhkMCwKKyAgMHg3OCwweGQ4LDB4N2UsMHg3YywweDNhLDB4MjcsMHhiYywweDk2LDB4M2QsMHhhNCwweDlmLDB4NGQsMHhhYywweGJmLDB4MmYsMHg3NywKKyAgMHhjNCwweGRhLDB4YWQsMHgxNSwweDBlLDB4NTIsMHgyYiwweGE5LDB4NTUsMHhkYSwweDIxLDB4YTQsMHgzOSwweGMyLDB4YmMsMHhjZCwKKyAgMHgyNSwweGVlLDB4NDAsMHg4NywweDhiLDB4N2MsMHgyOCwweGY4LDB4NzUsMHhiNSwweDVkLDB4ZmUsMHhhZCwweDg5LDB4N2YsMHg5NSwKKyAgMHhlNywweDNmLDB4OGYsMHg0NSwweDZmLDB4ZWQsMHhiNywweDg2LDB4OWIsMHgwYSwweGUxLDB4MTAsMHgzMywweGY4LDB4ZTUsMHg0NiwKKyAgMHhjOCwweGFiLDB4M2MsMHg5MSwweDNlLDB4OGMsMHhiMCwweDEwLDB4MzUsMHg4ZSwweGNmLDB4ZjYsMHg5NCwweDc4LDB4MzAsMHhiNSwKKyAgMHhmZSwweDhiLDB4Y2UsMHg3YiwweGNkLDB4YjYsMHgxMywweDc3LDB4Y2IsMHgzMCwweGFkLDB4N2MsMHgzMywweDJiLDB4NjgsMHhkOCwKKyAgMHg5YiwweDA2LDB4M2UsMHg4YywweDM2LDB4NWUsMHhiYywweGIzLDB4MzIsMHhkNiwweDY4LDB4Y2YsMHg4NCwweDdmLDB4ZDAsMHhmYSwKKyAgMHgyOSwweGQ1LDB4YWQsMHhkMSwweGE2LDB4ZjMsMHhkYSwweDlmLDB4YjgsMHhmZiwweDY0LDB4MzQsMHhhNywweDAyLDB4OGUsMHhhYSwKKyAgMHhlZSwweGRhLDB4MTUsMHhlNywweGM0LDB4MzEsMHgxOCwweDA0LDB4YTMsMHg1MSwweGFjLDB4NmEsMHhmMiwweGZmLDB4ZmMsMHgwNCwKKyAgMHhmYywweDhkLDB4NWIsMHg3NSwweDRiLDB4ZjMsMHhjNiwweDIxLDB4ZTUsMHhhNCwweGVlLDB4NjgsMHhhMCwweDI3LDB4ODgsMHgwZCwKKyAgMHhkYSwweDU4LDB4MTksMHgwZiwweGY0LDB4OWMsMHg5MSwweDAyLDB4YmEsMHhiZCwweGExLDB4NmQsMHhlZCwweDQ2LDB4NzMsMHhmZCwKKyAgMHhmYiwweDBhLDB4MDgsMHhiMCwweDE5LDB4NjgsMHgxNCwweGMwLDB4MTAsMHhiNCwweGVhLDB4NzYsMHg1ZiwweGM2LDB4NzYsMHgzMiwKKyAgMHgwYiwweGRhLDB4ZjAsMHhlMCwweGQwLDB4MzAsMHg5YywweDU2LDB4NTEsMHg3MCwweDIxLDB4MTAsMHhiYSwweGE2LDB4ZmUsMHg4YiwKKyAgMHhiMSwweDY1LDB4YmEsMHhjNSwweGU1LDB4ZTksMHg5ZiwweDE0LDB4ODQsMHgyMiwweDI1LDB4NGYsMHhlMSwweGMwLDB4NDAsMHgzNSwKKyAgMHgzYywweGY2LDB4M2EsMHg2YSwweDg0LDB4MTAsMHhjOCwweGE4LDB4MDAsMHgxMywweGFiLDB4Y2YsMHhlYiwweGJmLDB4MjIsMHgzMCwKKyAgMHg1NywweDVmLDB4Y2IsMHhjOCwweDUwLDB4NzUsMHg4NCwweDE4LDB4ZjEsMHgxNywweGQ0LDB4MmYsMHgwZSwweDk0LDB4OWYsMHgxYiwKKyAgMHg1MCwweDEwLDB4MWQsMHhlMCwweDE2LDB4YzEsMHg0NiwweDMxLDB4YTUsMHhmZSwweDRiLDB4MzksMHhjZiwweGQ1LDB4OTYsMHgyNiwKKyAgMHg5ZSwweDY3LDB4MjMsMHhiMCwweGMwLDB4MjgsMHhmYiwweDIyLDB4M2MsMHg4MywweDdhLDB4YzksMHhiOSwweGI4LDB4YzcsMHhjMywKKyAgMHhkNiwweGY4LDB4M2QsMHg1MywweGZjLDB4MmIsMHg5MywweGM3LDB4NGYsMHhlNywweDQ2LDB4NmQsMHgwZCwweGUyLDB4MjAsMHgxZCwKKyAgMHg4MSwweDJhLDB4OGEsMHg2MiwweGY5LDB4MTMsMHhiNiwweGJlLDB4YmYsMHg1MiwweGI0LDB4YWUsMHgyYywweGE4LDB4ODQsMHg0OCwKKyAgMHg2ZiwweGU5LDB4ZDksMHhjZCwweDYzLDB4NjYsMHhmZSwweDlmLDB4YzAsMHg2ZiwweGYzLDB4ZTIsMHg2OSwweGNmLDB4MWYsMHhlNywKKyAgMHgwNiwweDA2LDB4NGIsMHg2ZSwweDQwLDB4NDMsMHhlYywweDkyLDB4ZGUsMHhhYSwweDNhLDB4MDcsMHgyZCwweDY4LDB4N2IsMHgxOSwKKyAgMHgwOCwweDI3LDB4MmYsMHg0YywweDRjLDB4ZmMsMHg4NywweGQyLDB4MDAsMHhjNCwweGQzLDB4OWUsMHg1ZiwweDk1LDB4M2EsMHhjMCwKKyAgMHgyOSwweGRkLDB4MDksMHhkOSwweDhiLDB4YTUsMHg0NiwweGUyLDB4NWMsMHhlOCwweDcwLDB4NzksMHhhYywweGIwLDB4MzEsMHhiZiwKKyAgMHhmMCwweDgwLDB4YzUsMHhiZCwweGRhLDB4ZDQsMHgxZiwweDJkLDB4NmQsMHg4MiwweGZmLDB4ODcsMHg3YywweDBhLDB4YWQsMHg3ZCwKKyAgMHgyNSwweGFlLDB4M2IsMHgwMywweDg4LDB4MjcsMHg3OSwweGZjLDB4Y2IsMHhjMiwweDAzLDB4NjEsMHhiZiwweDYyLDB4MmEsMHgwZSwKKyAgMHhlYywweDI2LDB4ZmUsMHg0MywweDg5LDB4ZjMsMHhmMywweGNjLDB4ZDMsMHg4ZCwweDI2LDB4YTQsMHg1ZCwweGFjLDB4MzIsMHg1NCwKKyAgMHhiYywweDBmLDB4ZjcsMHhjZiwweDIxLDB4YTEsMHhmMiwweDM2LDB4MDksMHgxNywweDRhLDB4N2QsMHgwYiwweDc3LDB4NTQsMHg1MSwKKyAgMHg5OCwweDI0LDB4ZjMsMHhmZiwweDM3LDB4NDAsMHg5YywweDBmLDB4NjEsMHhiNCwweGUwLDB4OTIsMHg1MSwweDVmLDB4OTksMHgxNSwKKyAgMHhjZSwweDE5LDB4YTEsMHg1NywweGFiLDB4YWIsMHg0NiwweDc5LDB4YTAsMHhkMCwweGZiLDB4ODksMHhmNCwweDBhLDB4ZWUsMHgxMCwKKyAgMHgzOSwweGQ5LDB4MWYsMHg3NiwweDE0LDB4ZTIsMHg3YywweDBiLDB4NjEsMHg1MSwweDU1LDB4M2YsMHhmMiwweDNkLDB4ZGMsMHhiZSwKKyAgMHgzNiwweDU0LDB4YjAsMHgxOCwweGY1LDB4YmIsMHhlYiwweDM4LDB4YWUsMHhmZiwweDRjLDB4MGQsMHgxNSwweDdkLDB4MjQsMHgzMywKKyAgMHg1YywweGYzLDB4NDgsMHg5MiwweDRmLDB4NDYsMHg4YSwweGU3LDB4YzMsMHg4ZiwweDY2LDB4M2IsMHhhMCwweDE1LDB4OTYsMHgwNSwKKyAgMHg2OSwweDA3LDB4Y2YsMHg4ZiwweGFhLDB4YjMsMHg0NywweDMzLDB4MTUsMHhmMSwweDZlLDB4YTUsMHg4OSwweDc1LDB4MGMsMHhkMiwKKyAgMHg5ZCwweDFkLDB4MjYsMHhmYywweDMzLDB4YzEsMHg4NywweGUwLDB4YmEsMHg4NywweDgyLDB4N2YsMHhkMCwweDhlLDB4NjgsMHgyNywKKyAgMHg3ZCwweGMwLDB4ZGUsMHgxNCwweDUwLDB4MGYsMHhlMCwweDBlLDB4YzksMHg2NCwweDhkLDB4OTMsMHg0MywweDgzLDB4ZDAsMHhlMywKKyAgMHg5ZiwweDU4LDB4NGQsMHhjMCwweDBkLDB4MWIsMHhhYiwweGZmLDB4OTIsMHg3ZiwweDhjLDB4NjIsMHg2ZCwweDU1LDB4MzAsMHg1ZiwKKyAgMHhhNSwweDhmLDB4NjYsMHgzZiwweDBkLDB4YWIsMHg4MywweGY5LDB4NTEsMHg3MSwweDhjLDB4ZmMsMHg4YywweGFlLDB4MDksMHgxYSwKKyAgMHhjMCwweGEwLDB4MzIsMHgzMSwweGJmLDB4MGUsMHhiMiwweGY0LDB4Y2YsMHhiOCwweDE4LDB4NzEsMHg4OSwweGMwLDB4ZmMsMHg0YSwKKyAgMHhjOCwweGUyLDB4YWMsMHgxMCwweDhmLDB4ZjAsMHhlNywweDhmLDB4NjYsMHhiOSwweDQ0LDB4MmIsMHg3YiwweDc1LDB4YjAsMHg1YiwKKyAgMHg3NywweDZlLDB4OTcsMHhiMywweDkzLDB4ZmMsMHgzZiwweDEzLDB4N2MsMHgzZSwweGUxLDB4NDUsMHhjMywweGU0LDB4NmQsMHg5ZSwKKyAgMHhkNiwweDFiLDB4Y2UsMHg0NiwweDA0LDB4OWUsMHg2ZSwweDU0LDB4YzAsMHgwZCwweGMwLDB4NDUsMHg5NSwweGFmLDB4OTgsMHgxOCwKKyAgMHg0YywweGQ4LDB4NDcsMHg3MSwweGZlLDB4OWYsMHgyOCwweDVlLDB4MGMsMHg4MSwweDJlLDB4MTgsMHhmYywweDkzLDB4YzUsMHhlYywKKyAgMHgxMCwweGNjLDB4ZDMsMHhhNiwweDcyLDB4MjAsMHhkNCwweDFiLDB4YWIsMHhlOCwweDRjLDB4ZTUsMHg3ZiwweGU2LDB4ZjEsMHhmNCwKKyAgMHg0OCwweDAzLDB4YzksMHg4MywweDY2LDB4YzksMHg4OCwweDdmLDB4ZGQsMHhlNCwweDU5LDB4OGYsMHg0MCwweGE4LDB4YjgsMHg4MSwKKyAgMHg2YywweDI2LDB4NmIsMHhlMCwweDc5LDB4MWUsMHg2MSwweDRmLDB4ZGEsMHhiZiwweGYxLDB4ZmMsMHg2NywweDBlLDB4N2IsMHhmYywKKyAgMHhiMCwweDFhLDB4ZTEsMHg4YiwweDY1LDB4NjUsMHhlYiwweDM0LDB4YjYsMHg5ZSwweDE1LDB4OWYsMHhjYSwweDM4LDB4YzEsMHhmZCwKKyAgMHg1ZCwweGIxLDB4ODgsMHg5OCwweDk5LDB4ZmYsMHgzOSwweGM2LDB4MzcsMHg5NSwweGUxLDB4MjIsMHgxNiwweGI0LDB4NjcsMHhlZCwKKyAgMHgyMSwweDc5LDB4M2YsMHhjNywweDU3LDB4NWUsMHgzYywweGExLDB4NGEsMHhmNiwweDNhLDB4YWQsMHg2OSwweGIwLDB4ODQsMHgyMywKKyAgMHhhMiwweGE0LDB4ZmMsMHg4OSwweDQ4LDB4NWQsMHgxMywweDY5LDB4Y2YsMHg3YiwweGM4LDB4ZWIsMHhmYSwweDhlLDB4OWUsMHhhYywKKyAgMHgyMSwweGQxLDB4MDEsMHhhZiwweDZiLDB4M2YsMHg3ZiwweDNlLDB4YTMsMHhhMywweGUwLDB4MDYsMHg1OCwweDI3LDB4ZmQsMHg1MywKKyAgMHhhYywweDIyLDB4M2UsMHg3MSwweDdmLDB4ODgsMHhlNSwweDYzLDB4NjQsMHgyMSwweGZlLDB4ZjEsMHg4ZCwweGU1LDB4NWQsMHgyMSwKKyAgMHgzNiwweDU2LDB4ZDAsMHhjYiwweDI1LDB4OTIsMHg2MiwweDYzLDB4MzUsMHg1MSwweDM2LDB4MjYsMHhjZCwweGUzLDB4MTYsMHhiYSwKKyAgMHg4OSwweGZmLDB4MTksMHhlMiwweGY1LDB4M2UsMHg4YSwweDUxLDB4MWYsMHg2NCwweGQ3LDB4YWEsMHg4MywweDM5LDB4Y2IsMHhjOSwKKyAgMHgwMSwweGQ2LDB4YmQsMHgzYywweGYzLDB4MjksMHhmMSwweGNjLDB4ZGEsMHgwMywweDhlLDB4YWYsMHhmOCwweDdmLDB4MTIsMHhmNSwKKyAgMHg1YywweGRjLDB4OWYsMHg2MCwweGFmLDB4YWIsMHgzMywweDgwLDB4OTAsMHg2NiwweGJmLDB4M2YsMHhiMCwweDk5LDB4OWMsMHg4MSwKKyAgMHg0NiwweDY2LDB4MjgsMHhlMiwweDY4LDB4NjIsMHg3NSwweGYyLDB4YTQsMHg0MiwweDY5LDB4YjcsMHg1NCwweGEyLDB4NjUsMHgwNCwKKyAgMHhmZCwweDlkLDB4ZDAsMHgyMiwweGJjLDB4NTAsMHgyYiwweDZmLDB4MjAsMHhjYiwweGQ1LDB4MTYsMHhmNSwweGI0LDB4MDcsMHg4MiwKKyAgMHg5ZSwweDIxLDB4ZjUsMHg3OSwweDFlLDB4YWYsMHgwZiwweGRhLDB4Y2QsMHhmYywweGNmLDB4MDksMHhmZSwweDlmLDB4MTgsMHgwYywKKyAgMHhiMCwweDZjLDB4MjIsMHg2OSwweGQ2LDB4MzYsMHhjZCwweGMwLDB4MDMsMHhmZCwweDk2LDB4MTcsMHg4ZCwweGQwLDB4MTgsMHgyNCwKKyAgMHhlMywweGVmLDB4NGIsMHgzMywweGEyLDB4MTMsMHhmOSwweDI3LDB4ZjEsMHg2YSwweDc3LDB4MTAsMHgzNSwweDg4LDB4MDgsMHgyZSwKKyAgMHg3MCwweDg2LDB4MzgsMHgyMywweDVmLDB4OWMsMHhmZiwweDc5LDB4OTIsMHgwOSwweGZmLDB4ODAsMHhlMSwweGZmLDB4YzksMHgzNSwKKyAgMHg2OCwweDBmLDB4ZTcsMHg3YSwweDMzLDB4OGYsMHg4YiwweDFmLDB4YzAsMHhlZiwweDQ4LDB4OTUsMHhmNywweDQ2LDB4YWYsMHg3OCwKKyAgMHgxMiwweGZlLDB4MTQsMHg0YiwweDdkLDB4NDksMHhmNiwweDg3LDB4Y2QsMHhjYiwweDRjLDB4ZjIsMHhmZiwweGIwLDB4MGYsMHhkNSwKKyAgMHhiOSwweDhiLDB4YWQsMHhiZiwweGFmLDB4MjksMHgxYywweDFjLDB4ZDcsMHhhYSwweGZlLDB4NmUsMHhlYSwweGEwLDB4MzgsMHgwNywKKyAgMHgwZSwweDZiLDB4ODgsMHgxOCwweDM3LDB4ODgsMHhkNywweGYwLDB4MWYsMHhjNiwweGNhLDB4ZGUsMHhmMywweDYxLDB4YWQsMHgxNywKKyAgMHhhZCwweGFkLDB4NDksMHhhOCwweDlkLDB4ZjYsMHhhOSwweDI1LDB4NzksMHg3OSwweGNjLDB4YzMsMHgzMywweDEyLDB4NTUsMHg0YSwKKyAgMHhmYiwweDEwLDB4OWYsMHg0YywweDdjLDB4NWYsMHgxZiwweGNmLDB4N2YsMHgyNiwweGM2LDB4ZmIsMHg3ZSwweDViLDB4N2IsMHg4NiwKKyAgMHgxOSwweDhlLDB4YTAsMHg1YywweGU1LDB4MjUsMHg3MCwweDdlLDB4OTMsMHhmMywweDFmLDB4NDIsMHg4YiwweGNhLDB4NDMsMHgxYiwKKyAgMHgyNCwweGM5LDB4N2YsMHhkOCwweDkzLDB4ZGIsMHg2OSwweDhkLDB4YWYsMHhmZiwweDFjLDB4ZmEsMHgxOCwweDk0LDB4ZDQsMHhkMSwKKyAgMHhhMCwweDY1LDB4MGUsMHgyYywweDEwLDB4NGEsMHhiYywweDc0LDB4MDMsMHg0ZiwweDg0LDB4NjgsMHhkYywweGEyLDB4ZDMsMHg0MSwKKyAgMHg5MiwweGRhLDB4MWYsMHgzNiwweGZlLDB4ZmMsMHhmZiwweDA1LDB4M2UsMHhkNCwweDY2LDB4NzgsMHg5YywweDFiLDB4NjMsMHgwYywKKyAgMHhjZiwweDhmLDB4MzgsMHhkYSwweGM1LDB4MTksMHg5ZSwweDVlLDB4YzYsMHhiZiwweDZmLDB4NGUsMHgwYSwweGZmLDB4NjEsMHg2YywKKyAgMHhiZSwweDgyLDB4Y2IsMHg2MiwweDY0LDB4M2IsMHgxYiwweGZjLDB4M2YsMHgzYSwweGFlLDB4NTgsMHhmYiwweGEyLDB4ZDgsMHg1MiwKKyAgMHhjYywweDBhLDB4MTIsMHgxMywweGZmLDB4MjEsMHg4NCwweDkyLDB4ZWIsMHhiZiwweDk2LDB4OTQsMHgxMSwweGE3LDB4NWYsMHg1NCwKKyAgMHhiZCwweDAzLDB4ODYsMHhkYiwweDI3LDB4ZTcsMHgxNCwweDQ0LDB4MTgsMHhmNywweGM4LDB4OTksMHhlYSwweGJmLDB4NjgsMHhiMywKKyAgMHg4MywweDFhLDB4NjUsMHg1ZiwweGJjLDB4YTksMHg2OCwweDJiLDB4MTQsMHg4NCwweGE4LDB4NGEsMHg4YSwweDI0LDB4MWMsMHhmNCwKKyAgMHhkOCwweDU2LDB4ZTAsMHhiNiwweDZmLDB4ZDUsMHg0YSwweDEwLDB4MDgsMHg3OSwweDkyLDB4ZmEsMHgyNSwweGNlLDB4YzcsMHhjMiwKKyAgMHgzMiwweGI4LDB4ZGIsMHhkOSwweDBmLDB4MzMsMHg3YywweDM0LDB4OTcsMHhhYywweDI1LDB4NWIsMHg5OSwweDFhLDB4OTEsMHgxNSwKKyAgMHhmZiwweDAwLDB4NmIsMHgxNCwweDljLDB4YTcsMHgxMCwweDA4LDB4OTEsMHg4NCwweGZlLDB4MTIsMHhjMCwweGM4LDB4ZmYsMHg2MSwKKyAgMHg2ZCwweDJlLDB4M2MsMHhiZiwweDY4LDB4N2YsMHg3OSwweGE4LDB4ZjcsMHg4ZSwweGE3LDB4MjYsMHgzZiwweGE3LDB4ZTcsMHhlYiwKKyAgMHgxNiwweGFmLDB4ZmYsMHg5MiwweGJhLDB4ODYsMHgxNiwweGY3LDB4ZDEsMHg5ZiwweDc4LDB4NjgsMHhjMiwweGZmLDB4NDMsMHhkOSwKKyAgMHhkMywweGYwLDB4MjUsMHg1YiwweDEwLDB4Y2EsMHhhYywweDE3LDB4OWYsMHg0ZSwweDVmLDB4Y2QsMHhlNiwweGZhLDB4YWMsMHg0YiwKKyAgMHhmMSwweDQ0LDB4N2UsMHg4YSwweGY4LDB4NDcsMHg1ZSwweDk5LDB4ZjMsMHgwNywweGYyLDB4N2EsMHhmMywweDgyLDB4YTgsMHg3NSwKKyAgMHhjYywweDg0LDB4N2YsMHgxMiwweGY1LDB4MTQsMHgyMSwweDMxLDB4MjIsMHg5ZCwweDhiLDB4MmQsMHhlYywweDBhLDB4NzgsMHgzYiwKKyAgMHhhNiwweGRmLDB4ZmIsMHgyMSwweDRlLDB4OGQsMHg5OCwweGY0LDB4ZmYsMHg2OCwweGQyLDB4N2UsMHhlZiwweDU1LDB4NTYsMHgxNSwKKyAgMHhiMiwweDhkLDB4MTUsMHg0YywweDgzLDB4NzcsMHg3OSwweDIwLDB4MjMsMHgyMiwweGVlLDB4Y2YsMHgzOCwweGVjLDB4YWYsMHg4YSwKKyAgMHg2NiwweDllLDB4MTAsMHhkZSwweDg1LDB4MzcsMHg1OCwweDI5LDB4Y2YsMHg3ZiwweDRlLDB4Y2EsMHg4NywweDE3LDB4NjAsMHg2ZCwKKyAgMHhhYywweGZlLDB4YTIsMHhjMSwweDgyLDB4Y2YsMHhlZiwweDk4LDB4MTUsMHhhMSwweDBiLDB4YzksMHgwZCwweDdkLDB4ZmYsMHg1MywKKyAgMHg5ZCwweDA1LDB4MTYsMHgyZiwweDM5LDB4ZTksMHg1OSwweGEzLDB4ZTQsMHg2YiwweDhlLDB4NmYsMHg5MiwweDI0LDB4ZmUsMHgwYywKKyAgMHgyOSwweDliLDB4MTUsMHg2MywweGJlLDB4OGYsMHg0YywweDQ1LDB4ZjksMHg1MywweGFjLDB4ZDMsMHg2YSwweGM0LDB4M2YsMHhhYiwKKyAgMHg1YiwweDcxLDB4ZjAsMHgxMCwweDFhLDB4MWEsMHhhYiwweGU5LDB4MzMsMHhiNSwweDE5LDB4NGIsMHg0OSwweDdmLDB4OTIsMHhmZiwKKyAgMHgzMCwweDI2LDB4N2YsMHg3OCwweDM3LDB4NzksMHg5NCwweGU3LDB4Y2MsMHhiOSwweDlkLDB4MTIsMHhiMiwweDAyLDB4ZmMsMHgyMSwKKyAgMHg2NywweGRlLDB4NDIsMHgxNywweDM5LDB4YWEsMHhmOCwweDk5LDB4YzEsMHg1MCwweDNhLDB4NjgsMHhmYSwweGJlLDB4NDYsMHhiZCwKKyAgMHgxYiwweDZmLDB4YTIsMHgzZCwweDg5LDB4YTcsMHgwNSwweDdlLDB4ZGIsMHhjOSwweGQxLDB4NGIsMHgxYiwweGFiLDB4M2MsMHg0NiwKKyAgMHhjMywweGUyLDB4YzEsMHgzYiwweDVlLDB4NjUsMHg2ZSwweDk2LDB4MTksMHg0MiwweDg5LDB4M2QsMHhmMSwweGJlLDB4MGMsMHhlMiwKKyAgMHhlYiwweGMzLDB4ZDEsMHhkMSwweDg3LDB4M2UsMHhiZSwweDNlLDB4OTMsMHg0MiwweDcwLDB4NTEsMHhhYywweGY0LDB4NjYsMHgwNSwKKyAgMHg2YiwweDNlLDB4ZDEsMHgyZSwweDZhLDB4OTUsMHg4MywweGQzLDB4M2EsMHgwYiwweDNlLDB4NGMsMHhmMiwweDNmLDB4MWIsMHhmYSwKKyAgMHg2ZSwweDNlLDB4MDcsMHgzOSwweDczLDB4ZDUsMHhjMywweGJkLDB4NTUsMHg5YSwweGVkLDB4MDYsMHhmMSwweGZiLDB4ZjQsMHg1ZCwKKyAgMHg5OCwweGRkLDB4MjUsMHg0NSwweDExLDB4NGYsMHgxZSwweGExLDB4M2IsMHg0MiwweGQ2LDB4ZTEsMHgwMiwweDMzLDB4ZmYsMHhiMywKKyAgMHg1MSwweGJmLDB4Y2MsMHhiMiwweDU0LDB4MWUsMHhjZiwweGYyLDB4OTUsMHg5YywweDVhLDB4ZDQsMHhlMywweDJmLDB4MDQsMHgzZiwKKyAgMHhiMSwweDk3LDB4NjcsMHg3NiwweGY5LDB4ZmYsMHhhMiwweGI0LDB4ZTYsMHhkYiwweDA3LDB4MTEsMHg1MSwweGFiLDB4YmUsMHgwNCwKKyAgMHhmZSwweDg5LDB4Y2YsMHhiNywweDg0LDB4MmQsMHg3OCwweDlhLDB4ODQsMHg5MiwweGQzLDB4NzIsMHgzMCwweDdkLDB4ODUsMHhmNCwKKyAgMHgyNCwweGMyLDB4ODAsMHg4NSwweDQ2LDB4M2MsMHg0OCwweGIxLDB4MDcsMHhlYSwweDllLDB4NGQsMHhjMSwweDNmLDB4OTksMHhjNiwKKyAgMHhmYSwweDU4LDB4NWMsMHhmOCwweGM5LDB4MWIsMHhmOSwweDQyLDB4NGQsMHgyNiwweDBlLDB4ZDYsMHhjMiwweDYxLDB4OGYsMHhjYiwKKyAgMHgzMywweDkyLDB4ZGUsMHg1NiwweGNkLDB4ZWIsMHg3MywweDZmLDB4MzAsMHg3NywweDM4LDB4NTksMHgxMSwweDZmLDB4MGEsMHgyYywKKyAgMHhmMiwweGZiLDB4ZjMsMHhiMiwweGEzLDB4OWMsMHgwNywweGFhLDB4ZGYsMHgwNiwweGY3LDB4ZjEsMHg2OSwweDNjLDB4MDMsMHgwYSwKKyAgMHgxNSwweDE5LDB4NzMsMHg4NiwweGM0LDB4MjQsMHhmZiwweDIxLDB4ZmIsMHgwNSwweGNmLDB4ZmYsMHhhOSwweDYyLDB4NTksMHgzZSwKKyAgMHg4MywweDJkLDB4MTMsMHgxNSwweGZkLDB4MGUsMHgzMiwweGEyLDB4MjEsMHg2YywweDA2LDB4MDQsMHg3ZSwweDk3LDB4ZTIsMHgxOSwKKyAgMHhiZiwweGUyLDB4ZjAsMHg4YywweDA0LDB4ZGUsMHgxMCwweDhjLDB4ZmMsMHhiMSwweDA4LDB4OGYsMHhmZSwweDA0LDB4ZmUsMHhjNCwKKyAgMHhlNywweGZiLDB4NDQsMHgxNywweDhiLDB4MzgsMHg0YSwweDc5LDB4N2QsMHhmNywweDk3LDB4YzIsMHg4MCwweGVmLDB4ZTcsMHgyYSwKKyAgMHg5YSwweGJhLDB4ZDcsMHhlNCwweDNmLDB4YWIsMHhiMywweDNlLDB4OTAsMHg3YiwweGVlLDB4ODksMHg2YSwweDJkLDB4M2EsMHgyYSwKKyAgMHhmYSwweDEwLDB4YjcsMHhiZiwweDc0LDB4ZmIsMHgyMywweGJjLDB4NTAsMHhhYiwweDMxLDB4ODAsMHgyYiwweDI2LDB4YWYsMHgzNiwKKyAgMHhlMSwweDFmLDB4MjMsMHhmZiwweDM5LDB4YzMsMHhkOSwweDhiLDB4ZjgsMHg0NywweDRmLDB4NjcsMHhkYSwweDBhLDB4NWQsMHhjZSwKKyAgMHgyNywweDE5LDB4OTIsMHgxZiwweDFjLDB4ZjgsMHhiZSwweDA4LDB4NmMsMHg5OCwweDA3LDB4MDcsMHg0MiwweDRhLDB4N2YsMHhkOCwKKyAgMHgzOCwweGZlLDB4ZDksMHhjNywweDY5LDB4NWQsMHgwMSwweDgxLDB4NTYsMHhhOCwweGQ1LDB4YTEsMHhiNiwweGQyLDB4ZDMsMHhjMCwKKyAgMHhlZiwweDRmLDB4ZGEsMHg3OCwweGU5LDB4ZmQsMHhiZSwweDg1LDB4YTYsMHhmYSwweGY3LDB4NWMsMHhlZSwweGY0LDB4YWIsMHhlYSwKKyAgMHg1ZCwweDcyLDB4YTIsMHg2NiwweDU0LDB4M2YsMHgwYSwweDU1LDB4ZjUsMHhiNiwweGExLDB4OWMsMHhkOSwweDY4LDB4ZmEsMHhlZiwKKyAgMHhkMCwweDk3LDB4ZWMsMHhhYywweDE5LDB4ODEsMHg4YywweDk2LDB4NzksMHg3NCwweGM5LDB4ZGEsMHg2ZiwweDI1LDB4ZjEsMHhjZiwKKyAgMHgyOSwweDE2LDB4YzcsMHgzZiwweDgzLDB4MWIsMHg0ZiwweGMzLDB4OGIsMHhmYywweDM0LDB4NDUsMHg2MywweGI0LDB4MTIsMHhiMSwKKyAgMHhjNiwweDc5LDB4OTcsMHhlOSwweGNkLDB4MTEsMHg5YiwweDk3LDB4MjQsMHhmMSwweDhmLDB4NTEsMHhmZiwweDNlLDB4YTksMHhmMiwKKyAgMHhkNSwweGM1LDB4YzEsMHg5YSwweGE4LDB4NzQsMHgxMCwweGJhLDB4ZmIsMHhhZCwweDg1LDB4ZTIsMHg0YywweDM4LDB4NTgsMHhlZCwKKyAgMHg2NiwweGNlLDB4NTUsMHhiMiwweDkzLDB4NDUsMHgzYywweDA2LDB4ZmYsMHhiYywweDg5LDB4ZmYsMHg1OSwweDcyLDB4NGEsMHg3YiwKKyAgMHg2MSwweGQ2LDB4YTgsMHg2NSwweDYzLDB4ZjYsMHhmYiwweDVhLDB4MmIsMHhiOCwweGNmLDB4ZDMsMHgxNywweDQ4LDB4MTEsMHhmMSwKKyAgMHg5ZiwweDI4LDB4NjMsMHg3NCwweDk1LDB4MjUsMHg4MywweGI0LDB4MGMsMHhlMCwweGYzLDB4ZmYsMHhkYSwweGYzLDB4NDUsMHhhYSwKKyAgMHhmZiwweDA3LDB4NTAsMHhjOCwweDgwLDB4MzIsMHg5MiwweGRkLDB4MDgsMHg4NSwweDUxLDB4NWEsMHg5OSwweGZkLDB4NzUsMHhkNiwKKyAgMHg4OCwweDgyLDB4M2EsMHhhMywweDFjLDB4Y2QsMHhmNiwweDBlLDB4YjYsMHg0MiwweDkxLDB4Y2IsMHg1MywweGZiLDB4NWYsMHgyOCwKKyAgMHhiYiwweDFhLDB4OGIsMHhhMywweGRmLDB4ZjksMHg3MSwweGY2LDB4YmIsMHhiMCwweGFhLDB4MzEsMHhiZiwweGNiLDB4YjEsMHg5MiwKKyAgMHg1YywweGU3LDB4NWIsMHgxNSwweDlhLDB4ZWUsMHhhMywweGI3LDB4OTEsMHg0YSwweGRmLDB4MzMsMHg5YiwweDFlLDB4NTAsMHhlNSwKKyAgMHhiZiwweDIzLDB4OTcsMHgxMiwweGY2LDB4NWQsMHhiZCwweDUxLDB4ZmYsMHg1ZSwweGQxLDB4MzcsMHgzMCwweDdiLDB4YzYsMHg4MCwKKyAgMHhhYSwweGMzLDB4Y2UsMHgxMSwweGFiLDB4NGIsMHg3NCwweDZhLDB4YWYsMHhiMiwweDM5LDB4ZTAsMHg5YywweDJlLDB4NWEsMHhlMSwKKyAgMHg3NCwweDJlLDB4MWEsMHg1NiwweDQ1LDB4NGQsMHhlNiwweGZlLDB4MTcsMHg3YywweDdkLDB4MTYsMHgxYywweGIzLDB4OWQsMHhmZCwKKyAgMHhjNiwweDI1LDB4YjgsMHhjNCwweGFhLDB4OWEsMHg2ZCwweDY3LDB4ZTUsMHg0YiwweGRhLDB4OTcsMHg1MCwweDU1LDB4NjgsMHhkYiwKKyAgMHgyMiwweDllLDB4OTQsMHhkZSwweGNiLDB4YWUsMHhmMiwweGQ4LDB4NDYsMHg2YiwweDA2LDB4MTMsMHhmOCwweGE3LDB4MmIsMHgwZCwKKyAgMHhkMSwweDk0LDB4ZTAsMHgxZSwweDVlLDB4MWMsMHhjYywweDcxLDB4NGEsMHg4NywweDg0LDB4NmUsMHgwMSwweDBmLDB4YTYsMHhkMSwKKyAgMHhkNiwweDQxLDB4YWYsMHgwOCwweDhiLDB4ZGIsMHhjOCwweDAwLDB4N2IsMHgzOCwweGIwLDB4NDQsMHgzNywweGM3LDB4YmYsMHgyNiwKKyAgMHgyMywweGM4LDB4OTEsMHg2ZSwweDhkLDB4ZGMsMHhkNSwweDkwLDB4M2QsMHg5NSwweGFlLDB4ZTEsMHhkNiwweDkzLDB4Y2IsMHg1MCwKKyAgMHhjNCwweGY5LDB4M2MsMHhlZCwweGI5LDB4MDIsMHgwZCwweGFiLDB4ZmIsMHg5YiwweDY1LDB4MmYsMHg0OSwweGYyLDB4M2YsMHhlYiwKKyAgMHhmMCwweDM0LDB4NTksMHg2ZiwweDc4LDB4N2IsMHhmYywweGQzLDB4ZTAsMHg1OSwweDk2LDB4YWYsMHgyMiwweGRhLDB4ZjksMHgyZSwKKyAgMHg4NywweDNkLDB4MjEsMHhiYSwweDE0LDB4ODEsMHg1ZiwweDg4LDB4NDcsMHhjNCwweDI4LDB4NDksMHhmMiwweGJiLDB4ZDYsMHhlNywKKyAgMHgwZSwweDIwLDB4NWEsMHgyZSwweGVjLDB4NmQsMHgyOSwweGY3LDB4NWIsMHhjMSwweDFmLDB4NTQsMHhjYiwweGYxLDB4ZmUsMHhiYywKKyAgMHgwMywweDY2LDB4NjEsMHgyNywweGZkLDB4MjUsMHgxZSwweGI0LDB4YzYsMHg3YywweDM1LDB4MmEsMHgwNywweDNkLDB4ZGYsMHhiOSwKKyAgMHhhNiwweGZlLDB4ZGQsMHhjZCwweGFjLDB4NDMsMHhiMiwweGMzLDB4N2EsMHg4NCwweDk0LDB4NzYsMHhkYiwweDQyLDB4NzIsMHgzZCwKKyAgMHgzOSwweDg4LDB4OTgsMHg4YiwweDdlLDB4MjQsMHhmNiwweGIwLDB4MjMsMHgwMSwweDc3LDB4MTcsMHhlZSwweDkwLDB4NDcsMHhmZiwKKyAgMHg5NSwweGZlLDB4MTcsMHgwNSwweDNhLDB4YjksMHg2NCwweDBjLDB4NmUsMHhkOSwweDQyLDB4NDYsMHhhYiwweDZmLDB4ODMsMHg5YiwKKyAgMHg1OSwweGFjLDB4M2YsMHgyYywweGQ4LDB4NTYsMHgzNSwweDZkLDB4NGMsMHhmYSwweDFmLDB4OTQsMHg1OCwweDM0LDB4YzQsMHhjNiwKKyAgMHhkYiwweDVlLDB4ZjQsMHg3MiwweDM2LDB4YTQsMHgyMCwweDk5LDB4NmUsMHg0NCwweGM0LDB4MTYsMHg2ZiwweDEyLDB4NjcsMHhiMCwKKyAgMHgwMywweDUyLDB4YTUsMHgzNiwweDI5LDB4NjgsMHhlMiwweDdmLDB4MGUsMHhjNSwweGYyLDB4N2YsMHgzOCwweDY5LDB4NGYsMHgyMSwKKyAgMHgzMSwweGQyLDB4NGUsMHgxNCwweDkyLDB4YzYsMHg1YSwweDk2LDB4NzUsMHg2OCwweDgxLDB4YTAsMHg2NSwweDg2LDB4ZjAsMHg5NiwKKyAgMHhiNywweGE0LDB4N2YsMHg1MSwweGJiLDB4NDUsMHgxNSwweDI2LDB4M2UsMHg3MCwweGI5LDB4ODEsMHg5NywweDc4LDB4ZDksMHhiYiwKKyAgMHg2NSwweGJhLDB4ZjQsMHg2YiwweGIwLDB4NzMsMHgzNiwweGJmLDB4OWQsMHg4NiwweGZmLDB4YTcsMHgyZSwweDk4LDB4NmQsMHg0OCwKKyAgMHgyNCwweDRkLDB4ZGUsMHhlMCwweGJmLDB4MzYsMHhmZiwweGM3LDB4MjgsMHg3YiwweDlmLDB4ODIsMHhhYiwweDFkLDB4ZTIsMHg4NSwKKyAgMHhmMCwweGJmLDB4MjAsMHg4NiwweGZmLDB4MjcsMHhkYiwweDNmLDB4MDksMHgxYSwweDM1LDB4YTcsMHhkNiwweDY2LDB4ZTYsMHg3ZiwKKyAgMHhlZSwweGExLDB4NmEsMHhhYywweGRhLDB4OGIsMHhjNywweGJmLDB4MDYsMHhkMCwweGRhLDB4OTIsMHg1MSwweGI1LDB4YTIsMHgxNiwKKyAgMHgyZiwweDA1LDB4YTcsMHhiZiwweDQ2LDB4MjUsMHhhZCwweGJjLDB4ZmUsMHg5MSwweGQ1LDB4ZmMsMHgzNiwweDA1LDB4ZmYsMHg3YywKKyAgMHgwZSwweDE1LDB4ZGUsMHhmNSwweGY3LDB4ZDYsMHhiYywweDA2LDB4NjcsMHg3OSwweGZlLDB4Y2YsMHgyNiwweGYxLDB4ZmIsMHgzMCwKKyAgMHhlZSwweGE5LDB4ZjAsMHhkZSwweDdjLDB4NGYsMHhkMywweGY5LDB4ZjQsMHg1OCwweDIxLDB4NTgsMHg0MSwweDkyLDB4ZmYsMHhiOSwKKyAgMHgzZCwweGVkLDB4M2MsMHgzOSwweDAwLDB4NTUsMHgxZSwweGE3LDB4YjcsMHhhOSwweDJjLDB4NzQsMHhiOCwweGFiLDB4NzQsMHhhMSwKKyAgMHg3NSwweGE5LDB4NTgsMHhjNiwweDVlLDB4NjMsMHg1NSwweGY1LDB4ZDYsMHhlMywweDRkLDB4YjcsMHhlMiwweDc5LDB4NDQsMHhmYywKKyAgMHhmMCwweGE2LDB4NTgsMHg5MiwweDkyLDB4ZmYsMHgxMywweDIwLDB4M2MsMHhmZSwweDllLDB4OWQsMHhhZiwweGI0LDB4NmEsMHg0NSwKKyAgMHg3OSwweDU2LDB4NDYsMHg0MiwweDEwLDB4NTAsMHg1MCwweGFkLDB4NzcsMHg1OCwweDU0LDB4ZDYsMHhhMywweGQ5LDB4MjEsMHhmMywKKyAgMHgxOSwweDNjLDB4MzgsMHgwOSwweDhiLDB4MjEsMHhhZCwweDVmLDB4NmEsMHhjYywweGUwLDB4NmMsMHhjZiwweDQ1LDB4OTIsMHg4YSwKKyAgMHg3OCwweGNmLDB4NDMsMHhhZiwweGYzLDB4YTcsMHhmMSwweGZjLDB4ZTcsMHhkYSwweDk5LDB4OGEsMHgwNSwweDk3LDB4YzIsMHhmMSwKKyAgMHgwMiwweGJlLDB4NzgsMHg2YSwweGZjLDB4MGIsMHg1YSwweDQ4LDB4ODksMHhlZSwweDA4LDB4ZmEsMHg3OSwweGRhLDB4NjcsMHg1MSwKKyAgMHhmNSwweDlkLDB4NDEsMHhkMiwweGM5LDB4MzgsMHgxMSwweDYyLDB4NDYsMHhkMCwweDUyLDB4NTgsMHhiOCwweGRiLDB4ZjcsMHg0MywKKyAgMHg2ZiwweDQ2LDB4ZDAsMHg5MywweDllLDB4ZmMsMHg1ZSwweGI5LDB4OWQsMHhiMSwweDZlLDB4MjYsMHg0MSwweDc5LDB4MGUsMHgzOSwKKyAgMHhlMCwweDMxLDB4NjgsMHg3ZiwweDBhLDB4MTEsMHhkZiwweDU2LDB4N2EsMHgzMywweDM3LDB4ODksMHg1ZiwweDg3LDB4NzEsMHhhZCwKKyAgMHg1YywweGIzLDB4ZmUsMHg1YSwweDc2LDB4MjQsMHhlZSwweGRmLDB4NmEsMHhlMCwweDFmLDB4M2MsMHg3NCwweGQ5LDB4MjIsMHg0ZiwKKyAgMHgxNCwweGRmLDB4YjcsMHgxYywweGVkLDB4ZjcsMHgzMywweGJjLDB4ZmUsMHg1ZCwweGNiLDB4YmEsMHg0MSwweDNjLDB4YTMsMHg5ZCwKKyAgMHg0NSwweDQzLDB4ZmIsMHg5YSwweGZlLDB4MTcsMHgwNiwweGZlLDB4NTEsMHgxNywweDM3LDB4Y2IsMHhjMCwweDIyLDB4NWEsMHgzNywKKyAgMHhiMSwweDA1LDB4NDQsMHgxZiwweDQ0LDB4YTgsMHg1YiwweDcxLDB4YWUsMHg5NiwweGYzLDB4NjEsMHg0YywweDM1LDB4M2UsMHg4ZCwKKyAgMHhjOSwweGZmLDB4ZDMsMHg0YywweDhkLDB4YjIsMHg3NywweGZhLDB4YTEsMHg3ZiwweDNlLDB4YWMsMHg4NiwweDgyLDB4YTAsMHhmYywKKyAgMHgxMSwweDZmLDB4MGIsMHgxYiwweGNhLDB4MzcsMHhmYSwweGMzLDB4YzIsMHg3ZSwweGNkLDB4MWYsMHg5MCwweGEzLDB4MjQsMHhhOSwKKyAgMHg1ZiwweDI2LDB4ZjIsMHg5ZiwweDAzLDB4NGEsMHhiNiwweGE1LDB4ZDYsMHgwZiwweGFhLDB4MmEsMHg3NywweDkxLDB4MDcsMHgzNSwKKyAgMHg1NiwweGFiLDB4MzIsMHhiNCwweGM3LDB4MjUsMHhjNywweDc2LDB4NTYsMHgxOCwweDkxLDB4ZGIsMHgzNywweDI2LDB4ZjEsMHg0ZiwKKyAgMHhiZSwweDMwLDB4OTUsMHhlZSwweDUyLDB4OGIsMHgwNywweDAzLDB4ZGUsMHhlYywweDNjLDB4YjYsMHgxYSwweGYyLDB4MTUsMHhkZSwKKyAgMHhiNiwweDg2LDB4MDMsMHhhMSwweDQ2LDB4M2MsMHhiZiwweGI5LDB4ODUsMHgyZiwweDY5LDB4ZDMsMHg3NSwweGI5LDB4ZjYsMHgxYSwKKyAgMHhmZiwweGNmLDB4OTcsMHhkMSwweDhhLDB4YTgsMHg3MywweGE5LDB4MzgsMHgwZiwweGZhLDB4ZDgsMHg2YywweDlmLDB4YWQsMHg1ZSwKKyAgMHg3YywweDk4LDB4ZjQsMHhiMywweDcwLDB4YzgsMHhjYSwweGYzLDB4N2YsMHhhZSwweGIwLDB4OTcsMHg3OCwweDIyLDB4OTAsMHgyNSwKKyAgMHhjOSwweGZmLDB4N2MsMHg1MywweGNjLDB4ZmUsMHg5YSwweDE0LDB4MTQsMHg4NywweDNkLDB4N2IsMHg1MCwweGYxLDB4ZGQsMHhjYywKKyAgMHhmMywweDA5LDB4NzEsMHgwNSwweGQ4LDB4ZGYsMHg3MywweGZlLDB4YzMsMHgyYiwweDMwLDB4NmYsMHhkMCwweDE2LDB4MmQsMHg0OCwKKyAgMHhmNSwweGZmLDB4NWMsMHg2NSwweDk1LDB4ODUsMHhkNiwweDk1LDB4MzUsMHgyZiwweDJjLDB4M2MsMHhkMiwweDU4LDB4YjksMHhkYywKKyAgMHgzOSwweDI2LDB4ZmUsMHgwYywweDA2LDB4OTgsMHhhMSwweGQ2LDB4YTcsMHg2OSwweDlmLDB4YjAsMHgxZiwweDlkLDB4YjcsMHg5ZCwKKyAgMHg5OCwweDk0LDB4NjcsMHg4YSwweDdmLDB4MTksMHhmNiwweDk3LDB4YzMsMHhlMSwweGY1LDB4ZGMsMHhjMCwweDU2LDB4ZTcsMHg5NSwKKyAgMHhkNCwweGQzLDB4NTEsMHhmMiwweDBiLDB4Y2UsMHgzZiwweGQ2LDB4NGMsMHgxZiwweGM1LDB4MTcsMHhmOSwweDlmLDB4OTAsMHhkZiwKKyAgMHgyOCwweDZiLDB4ZTksMHg0OSwweGZlLDB4ZTcsMHgwZCwweDQ2LDB4ZmMsMHhjYiwweDQ5LDB4MTEsMHhlZCwweGI0LDB4NmIsMHhhYiwKKyAgMHhhMSwweDM4LDB4OTIsMHg4MSwweGFmLDB4ODksMHhmMywweDU1LDB4OTYsMHg2MSwweGNmLDB4OWUsMHhhMywweDM2LDB4YzMsMHg3NCwKKyAgMHhhZCwweGNkLDB4NGIsMHhmYSwweDRkLDB4ZmQsMHgyZiwweDA2LDB4MTQsMHg1YywweDRmLDB4ODEsMHgwYSwweGE0LDB4OGIsMHhmOCwKKyAgMHhmMywweDlkLDB4YmMsMHg5MSwweDQxLDB4MzMsMHhhMiwweDk2LDB4ZDAsMHhkYSwweDhjLDB4YjAsMHg4NSwweGMyLDB4NTMsMHhhYywKKyAgMHgxMCwweGU0LDB4MjIsMHgxMywweGZlLDB4NzEsMHg0YywweGQ5LDB4YTYsMHg1YywweGM1LDB4ZjcsMHg1ZCwweGJjLDB4MjksMHhhNywKKyAgMHg4YiwweDFjLDB4ZWMsMHhhZiwweDFjLDB4Y2MsMHgwYywweDE1LDB4MzgsMHg4OSwweDBlLDB4ZWUsMHg2MCwweDMxLDB4NWEsMHhkYywKKyAgMHhmMCwweDYxLDB4ZTAsMHg2NSwweGM1LDB4YjYsMHg1OSwweDRlLDB4ZTIsMHg5ZiwweGUwLDB4NDQsMHhmYywweDJiLDB4MjgsMHhmYywKKyAgMHg4MCwweDNiLDB4Y2EsMHhkMiwweGQxLDB4Y2MsMHhmZiwweDBkLDB4MTksMHgzMywweGRhLDB4NWUsMHg4OCwweDUxLDB4NjUsMHhiYywKKyAgMHg2ZSwweDllLDB4YmEsMHhhNCwweDkxLDB4MjQsMHhmYiwweGJkLDB4NmUsMHg4OCwweGU1LDB4M2YsMHgzNywweGQ4LDB4MDYsMHhiNywKKyAgMHhkNiwweGMzLDB4MTEsMHg2OSwweGI2LDB4NGUsMHg0ZiwweDhiLDB4Y2IsMHhkMSwweDdlLDB4OTksMHhjZCwweGE2LDB4YmUsMHgyNSwKKyAgMHhiYSwweGQ0LDB4YjcsMHg2MSwweDZlLDB4YmEsMHgyZCwweDRjLDB4YTIsMHgyNiwweGZjLDB4YjMsMHgwMiwweDVlLDB4NDEsMHhmYiwKKyAgMHhhMiwweDZkLDB4OWEsMHg2NywweDllLDB4ZDIsMHhjYSwweDY5LDB4N2MsMHhjNiwweGM4LDB4ZDcsMHgyMCwweDEwLDB4ZTksMHg2MCwKKyAgMHhiNCwweGE3LDB4NDgsMHgyNCwweDVkLDB4Y2MsMHg5ZSwweGQ3LDB4YjYsMHhkNiwweDNmLDB4YTQsMHg5OSwweGYwLDB4NGYsMHg0YywKKyAgMHg1ZiwweGI3LDB4OTMsMHg5MiwweGY0LDB4YTcsMHhjMCwweGJlLDB4Y2MsMHgxMiwweGM2LDB4ZDMsMHgxOSwweGUwLDB4OGQsMHg1NywKKyAgMHg0MiwweGU0LDB4MTYsMHhlOSwweGM5LDB4ODAsMHgxZCwweDdmLDB4NGEsMHg4ZiwweGE2LDB4ZjgsMHg3ZiwweDcwLDB4N2QsMHgwOCwKKyAgMHhjYSwweDFmLDB4MjgsMHhmNCwweDQzLDB4YzgsMHg1MiwweGM0LDB4OGYsMHgyMSwweDUzLDB4MWMsMHhjYywweGUxLDB4NDYsMHg3YiwKKyAgMHgyNCwweGM0LDB4ODksMHgwMiwweDcyLDB4M2QsMHg0OSwweGZiLDB4OGIsMHg1MSwweDAzLDB4ZmYsMHhkNCwweGQ5LDB4ODIsMHhiMiwKKyAgMHhjMywweDdmLDB4OTAsMHhiOCwweDRmLDB4NjQsMHg4NSwweDczLDB4OWMsMHgyNCwweGEyLDB4Y2QsMHg2MywweDE0LDB4MGQsMHgwMSwKKyAgMHhlOSwweDJkLDB4Y2UsMHhhZiwweDhiLDB4ODIsMHgzNywweDNkLDB4MTksMHhmZiwweGJhLDB4YTQsMHhmMCwweGY4LDB4ZDcsMHgxMiwKKyAgMHhjNCwweDMzLDB4MjgsMHg5ZCwweGFiLDB4NWEsMHgzMywweDc5LDB4NjEsMHhjNSwweDY1LDB4NzUsMHgyZSwweGIzLDB4ZWQsMHhlNCwKKyAgMHg4YSwweDllLDB4YmMsMHgwMiwweDM2LDB4YmQsMHg2MCwweGY4LDB4MWIsMHgxMywweGYyLDB4YzQsMHhkYywweDhmLDB4NmYsMHg4ZCwKKyAgMHhlYiwweDNmLDB4NDAsMHgzZiwweDNlLDB4ZDMsMHhmZCwweDI3LDB4YjksMHhmZSwweDlhLDB4ZmIsMHg0ZiwweDY0LDB4MGEsMHg1OSwKKyAgMHgyMywweGM2LDB4YTAsMHhkNCwweDllLDB4YjgsMHgwMiwweGI0LDB4YzksMHhhZCwweDBlLDB4ZjAsMHg5ZiwweDc0LDB4ZDMsMHhmYywKKyAgMHhmZiwweGI3LDB4ZmEsMHgyMSwweGM2LDB4ZmYsMHhhMywweGE1LDB4ZTYsMHg2YiwweDNjLDB4ZTMsMHhlYywweGRhLDB4NzksMHhmZiwKKyAgMHg0YSwweDFiLDB4YzQsMHhhZiwweDdjLDB4ODgsMHhmZiwweDE3LDB4ZDcsMHhmZiwweGRmLDB4ZTgsMHg4NywweDA4LDB4YzksMHgyYiwKKyAgMHhkYSwweDU3LDB4ZmIsMHgyMSwweDBlLDB4ZjAsMHhlNCwweDFkLDB4N2QsMHg4ZCwweDJiLDB4M2UsMHgzMCwweGRmLDB4M2YsMHg3NiwKKyAgMHgyNSwweDc1LDB4ZmQsMHgxYiwweGMxLDB4YTAsMHgwMywweDkzLDB4MjYsMHgwNiwweGE2LDB4ODUsMHg4YywweDVkLDB4YjksMHg2NiwKKyAgMHhmZCwweGYzLDB4ZjksMHg2ZiwweGYxLDB4YTcsMHhlNSwweDAzLDB4ZDMsMHhmYSwweGM3LDB4YWYsMHgyNCwweDE3LDB4YzcsMHhlOCwKKyAgMHg4NywweDM4LDB4NjAsMHhhYywweDdmLDB4N2MsMHhiNSwweDUzLDB4YmUsMHg3ZSwweGVjLDB4ZWYsMHhmZiwweGY2LDB4NDMsMHhmYywKKyAgMHhmNywweDA3LDB4ZmYsMHg1ZiwweDllLDB4NGYsMHg5YSwweGE1LDB4ZDgsMHhhMSwweGYzLDB4YTQsMHgxZSwweGNjLDB4MWYsMHhmZCwKKyAgMHg1YiwweGU3LDB4MzEsMHgwZCwweDBmLDB4NWQsMHg1YSwweDM1LDB4MjgsMHhlYywweGFmLDB4M2MsMHg4ZiwweGFiLDB4ZjksMHhhNiwKKyAgMHhmNSwweDg4LDB4NWYsMHgzOSwweDg2LDB4ZjYsMHg3ZiwweDRiLDB4MWUsMHg1YSwweDA1LDB4MjAsMHg3OCwweDEzLDB4MmQsMHhmNSwKKyAgMHhiNiwweDNmLDB4ZmEsMHgzNywweGU1LDB4YTEsMHg4NSwweDk3LDB4MjgsMHhkYiwweDUxLDB4MDksMHg0ZCwweDg4LDB4YzEsMHhhZiwKKyAgMHgwYywweDUyLDB4ZGUsMHhkNywweDcwLDB4M2EsMHgwYSwweDU0LDB4ZjMsMHg3ZiwweDU1LDB4YjAsMHgxMSwweDg1LDB4MzUsMHg3ZiwKKyAgMHg1NSwweDFlLDB4NGEsMHgyYSwweGE1LDB4NDQsMHgwNCwweGZkLDB4YWIsMHg2MiwweGQwLDB4YWYsMHhmMCwweGJjLDB4ODYsMHhhZiwKKyAgMHhjYSwweGMzLDB4ZjgsMHhhYywweGFmLDB4ZmMsMHhmZCwweDZiLDB4ZjIsMHgzMCwweDdiLDB4OGQsMHg3MywweDBiLDB4MGYsMHg4NywKKyAgMHg0ZiwweGVkLDB4YzMsMHhkNSwweDFlLDB4OTgsMHg1OCwweGZmLDB4MDEsMHhiMywweDNjLDB4NGMsMHg5MSwweDI3LDB4MzAsMHg0OSwKKyAgMHhjMSwweGY1LDB4ZjcsMHhmYywweGY1LDB4ZjIsMHg3MCwweDhkLDB4OWEsMHgwZiwweGQ2LDB4ZWEsMHg0OSwweDdmLDB4YmQsMHgzYywKKyAgMHg3NCwweDI2LDB4ODQsMHhkZSwweDVmLDB4ZDMsMHgxZiwweDU2LDB4NDUsMHg2MywweDAyLDB4YWMsMHgzNSwweGEyLDB4OTcsMHhmZCwKKyAgMHg3NSwweGZhLDB4MmUsMHg5YiwweGYwLDB4ZjUsMHgyMywweDE5LDB4ZTAsMHhmOSwweGViLDB4ZjQsMHg5MSwweGMyLDB4NDUsMHhhNCwKKyAgMHg1NSwweDE0LDB4ODEsMHhmZCwweDk1LDB4ZmQsMHg2MSwweDA1LDB4ZmUsMHg3MCwweGUyLDB4YmYsMHhiYSwweGZlLDB4MTMsMHg3ZiwKKyAgMHg2NiwweDc5LDB4YzgsMHg3MywweDA5LDB4YjQsMHg3ZiwweDdiLDB4ZWEsMHgzNSwweDdmLDB4MTUsMHgxNSwweDI4LDB4NzAsMHgxOSwKKyAgMHg1YywweGIzLDB4YzQsMHhkNywweGZlLDB4OTksMHhlNSwweDIxLDB4NTksMHg0YSwweGZlLDB4ZmEsMHhkYiwweGYzLDB4M2YsMHg3YywKKyAgMHgyMSwweGY2LDB4YmYsMHgzMSwweDNkLDB4NTcsMHhjOCwweGNlLDB4NzcsMHhmZCwweGFmLDB4YTcsMHgyNSwweGZlLDB4ZmUsMHhhMywKKyAgMHhjOSwweDlmLDB4ZmYsMHg2MCwweGYzLDB4NWYsMHhhYiwweDE2LDB4MWIsMHhiNCwweDkzLDB4Y2EsMHg1YywweGM4LDB4ZWMsMHgzNSwKKyAgMHgwNiwweGZmLDB4M2QsMHgzNywweGYzLDB4MzUsMHhmMSwweGExLDB4ZWEsMHhmYiwweGJjLDB4NzMsMHg4ZCwweDgxLDB4MzYsMHhiNSwKKyAgMHhlMSwweDZiLDB4ZDIsMHg2NCwweDdkLDB4NzYsMHg2MiwweGZlLDB4ZWQsMHhiNSwweDY5LDB4MGYsMHgwOSwweGY3LDB4NjksMHg3ZiwKKyAgMHhhYiwweDQwLDB4YmYsMHgzMSwweGYwLDB4MmEsMHg1MywweDhjLDB4ODEsMHhlZiwweDZmLDB4NzEsMHgyMCwweGU0LDB4MWIsMHgzZiwKKyAgMHhhNSwweGU5LDB4YjMsMHgyNywweGYwLDB4MmEsMHgzNCwweDdiLDB4MDQsMHg5NSwweGQ1LDB4YTksMHhkOSwweDE0LDB4ZmEsMHg2MiwKKyAgMHg4MywweDNjLDB4YzksMHgxZiwweGJmLDB4MjIsMHhhZCwweDE2LDB4ZjIsMHg2MywweDAzLDB4OTYsMHhmYywweGEwLDB4MGMsMHgwNCwKKyAgMHgxZiwweDJjLDB4ODUsMHhlYiwweGUwLDB4N2YsMHgzMiwweDYzLDB4NzAsMHgyZiwweDRkLDB4NWIsMHgyZCwweGRjLDB4Y2YsMHg5NiwKKyAgMHg2YSwweGQ3LDB4MjksMHg2OSwweDc4LDB4NDUsMHg1OCwweGFhLDB4N2QsMHgxYiwweGQyLDB4MTIsMHhlMSwweDY4LDB4N2MsMHhmZSwKKyAgMHhhNSwweDY5LDB4NjUsMHhjMiwweDVkLDB4ZWMsMHg1YiwweGQ1LDB4NTIsMHgyMCwweGVkLDB4NjEsMHhlMSwweDNlLDB4ZmQsMHg2ZiwKKyAgMHhkNSwweDI5LDB4OTEsMHhiNCwweDg3LDB4ZTEsMHgzZSwweGY2LDB4YjcsMHhjZSwweDI5LDB4MDcsMHg4NSwweDdiLDB4ODQsMHhmYiwKKyAgMHhkOCwweGI3LDB4ZDQsMHg1YywweGQzLDB4ZjMsMHhiYywweGE2LDB4NjksMHhhYSwweDQyLDB4MjUsMHgyMiwweDAwLDB4ZWYsMHhmMCwKKyAgMHg5OSwweDA3LDB4ZTksMHgyMCwweDMwLDB4MjUsMHgzZSwweDU4LDB4MjUsMHhmOSwweDU4LDB4ZWMsMHg0YSwweGYyLDB4N2QsMHg1ZiwKKyAgMHhhYiwweDkzLDB4OTYsMHgwOSwweDc5LDB4ZWMsMHgwZSwweDgwLDB4ODAsMHg2NCwweDE3LDB4MjgsMHhmMywweGE4LDB4NGEsMHg0MCwKKyAgMHhjMiwweDUzLDB4Y2UsMHgwNywweGNkLDB4OTIsMHgyYSwweDUwLDB4M2MsMHhkNywweDhhLDB4NzksMHhmZSwweGMyLDB4YjQsMHg3YiwKKyAgMHgxYSwweGVmLDB4MGQsMHhmZCwweDBkLDB4OTUsMHg2OCwweDlhLDB4YTcsMHhkMSwweDNiLDB4MmEsMHgzOSwweGE2LDB4NTgsMHhkMiwKKyAgMHhiNCwweDQ2LDB4NmYsMHhlOCwweGRlLDB4ZjIsMHgyOSwweDYyLDB4OWEsMHhjNiwweGJjLDB4ZWEsMHg5NCwweGE5LDB4NTMsMHhiNCwKKyAgMHhlNCwweGYzLDB4YjAsMHhhOSwweGMyLDB4ZGYsMHhjMiwweGRmLDB4ZTgsMHg1MywweGJjLDB4YTgsMHgwNiwweGY4LDB4NjAsMHg3MiwKKyAgMHg0MywweGRhLDB4N2QsMHhjMiwweGI3LDB4ZDgsMHhiZCwweGZhLDB4MTQsMHgxNywweDBlLDB4NDQsMHhjMCwweDQxLDB4YjksMHg5NCwKKyAgMHgzMCwweGJmLDB4NzAsMHgzZSwweGFlLDB4MWQsMHg2NCwweDgzLDB4MTQsMHgwMiwweGVlLDB4ZjQsMHg1MCwweDM0LDB4ODEsMHg4YiwKKyAgMHhjMCwweDFhLDB4MmUsMHgwYiwweDE1LDB4NDEsMHg0MiwweGE4LDB4ODUsMHg2YSwweDRhLDB4ODEsMHg2YSwweGQzLDB4ZmEsMHhmOCwKKyAgMHhiOCwweGEzLDB4MWEsMHhjZCwweDBlLDB4MzAsMHgzYywweGQ2LDB4ODAsMHg4NiwweGIyLDB4MWEsMHhiZiwweDQyLDB4ZDUsMHhmNCwKKyAgMHhmOCwweDRmLDB4ZDUsMHhhNiwweGY1LDB4ZjEsMHg2NiwweDJjLDB4MTcsMHhmZSwweDBlLDB4YmUsMHhhZCwweDE1LDB4YjIsMHhiNCwKKyAgMHhlNSwweDY5LDB4N2MsMHgzMCwweDI1LDB4OTgsMHhlNiwweDIzLDB4MjcsMHhlMCwweGRiLDB4ODAsMHgwMywweDU1LDB4MzgsMHgwMSwKKyAgMHhmZiwweDA0LDB4MGIsMHhjYywweGVmLDB4YWIsMHg4OSwweGJjLDB4NTEsMHg2YSwweDk5LDB4MmEsMHhiMSwweGQ4LDB4ODAsMHg4NywKKyAgMHgzMiwweDk2LDB4ZTEsMHg2MCwweDg2LDB4MzEsMHgxMCwweDk2LDB4YjIsMHhlYiwweGYwLDB4N2IsMHg5OSwweGY2LDB4OGYsMHg0NywKKyAgMHg3MiwweGY1LDB4NWEsMHhkNSwweDFhLDB4OWEsMHhlNywweDk3LDB4NWMsMHg4ZCwweDdjLDB4YTAsMHhmNCwweDQ5LDB4MmUsMHhkZCwKKyAgMHhhYSwweDU2LDB4NTMsMHhlNSwweDU1LDB4ODgsMHg1ZCwweGM5LDB4ZDMsMHgyNywweDI3LDB4OWUsMHgwNywweGI4LDB4YzQsMHhiMiwKKyAgMHhjNiwweGU0LDB4NWIsMHg3YywweGEwLDB4NGYsMHgwYywweDIyLDB4YjEsMHg4MSwweGFhLDB4OTksMHgzNiwweDM1LDB4MjMsMHg4MiwKKyAgMHg0YiwweDVmLDB4YWMsMHhlNiwweDUwLDB4ZGMsMHg2NiwweDJlLDB4YzYsMHgwNywweGI1LDB4N2QsMHg4MiwweGFiLDB4ZDEsMHhiOCwKKyAgMHg3MiwweDkwLDB4ZmYsMHhlNCwweGZhLDB4OTYsMHg1MywweGQyLDB4NGQsMHhlYiwweGUzLDB4NDksMHhmMywweDM1LDB4MmUsMHg1NSwKKyAgMHhiZiwweDhkLDB4ZjMsMHhlMywweDgzLDB4MjksMHgzOCwweGU4LDB4MzUsMHgwNiwweDRkLDB4ODIsMHhkYSwweGJiLDB4ZDQsMHhmNSwKKyAgMHg2ZCwweGViLDB4MTQsMHhmMywweGZlLDB4ZjEsMHgxOCwweDJiLDB4OTcsMHg1OCwweGMyLDB4ZjgsMHg0MCwweDMyLDB4MDYsMHg5MiwKKyAgMHhjYSwweGFjLDB4YWEsMHg0OCwweDg1LDB4ZDQsMHhmNywweGY1LDB4MzUsMHhlNiwweGE5LDB4NzcsMHhlMCwweDQ3LDB4YzMsMHhjMSwKKyAgMHhmNSwweGVhLDB4MWQsMHg3NCwweGIyLDB4NWYsMHg1YSwweDhlLDB4YWYsMHg3OSwweDQ3LDB4ZGQsMHhlNCwweDhkLDB4OTIsMHhjYSwKKyAgMHhkZiwweGI3LDB4MmUsMHg2NSwweGZmLDB4ZjgsMHhkMiwweDk2LDB4MGEsMHhkZiwweDg2LDB4YmYsMHg2MSwweDY5LDB4M2UsMHgyOSwKKyAgMHgzNiwweDk4LDB4ODIsMHg1NywweGE0LDB4M2IsMHhlMCwweDc2LDB4M2UsMHhhMCwweGMyLDB4MWQsMHgzMCwweDk5LDB4NDksMHhhNiwKKyAgMHhmZCwweGQzLDB4OWIsMHgyZSwweDNjLDB4YzQsMHhlZSwweGY1LDB4NGQsMHg2OSwweDRmLDB4YmIsMHg0MywweGE4LDB4NjYsMHg1ZSwKKyAgMHg1ZiwweDZlLDB4OWUsMHg5MCwweDhlLDB4MDMsMHg2NSwweDYyLDB4YzAsMHhhZiwweGE0LDB4MjUsMHhjYywweDdkLDB4M2MsMHg4ZiwKKyAgMHg1YywweDhkLDB4NTAsMHg1NCwweDAxLDB4NGEsMHgzNiwweDFlLDB4ODEsMHhlYSwweGQ4LDB4NTksMHg5MCwweDE4LDB4MWUsMHg4YSwKKyAgMHgzYSwweDg5LDB4NWYsMHhlMSwweDgzLDB4ZGMsMHhhNCwweDdiLDB4MDksMHg1ZSwweGJiLDB4ODMsMHg0YywweDY2LDB4Y2QsMHhiZSwKKyAgMHg3YywweDg1LDB4ZGUsMHgyMSwweDdlLDB4OTMsMHgxZCwweGY3LDB4ZGQsMHg5YSwweDk3LDB4YzksMHgwNywweGY3LDB4MWEsMHg4MywKKyAgMHg0OSwweGYxLDB4MmIsMHhhNiwweGU3LDB4NzksMHgyZCwweDNkLDB4ZWQsMHhhMSwweDQ2LDB4OTQsMHgwNiwweDc5LDB4NTMsMHg1ZSwKKyAgMHg5NywweDYyLDB4ODMsMHhiNCwweGQ3LDB4MTMsMHg1NywweDcwLDB4NzAsMHhkMiwweGY3LDB4ZGYsMHhmMywweGE2LDB4OTgsMHhlNSwKKyAgMHhjOSwweDFkLDB4ZTIsMHg0MywweDZjLDB4YjMsMHg2ZiwweDJlLDB4NGUsMHgyMywweDdjLDB4ZjAsMHhkZiwweGYzLDB4MzIsMHg1ZSwKKyAgMHhjNywweDJiLDB4ZjcsMHhlMSwweDk1LDB4Y2MsMHhkNywweDI3LDB4M2QsMHhjNCwweGE2LDB4ZmEsMHhiZSwweDg2LDB4ZjMsMHgyNywKKyAgMHg5YiwweGU2LDB4YzcsMHhlZSwweGI2LDB4OTQsMHhhNiwweGRjLDB4ZDYsMHg2YSwweDBjLDB4OTQsMHhkOSwweDM4LDB4YTgsMHhlMSwKKyAgMHhmMywweDRkLDB4ZmIsMHg0NywweDUwLDB4ODEsMHg5ZiwweDk4LDB4YjQsMHg4NCwweGQ4LDB4ZTEsMHg4MywweGZiLDB4OGMsMHgwMSwKKyAgMHhmMCwweGMxLDB4ZDcsMHg1MCwweGZlLDB4OTgsMHg3NiwweDViLDB4ZmEsMHg2NCwweDk0LDB4MzYsMHhiZSwweGViLDB4ZjIsMHg2MiwKKyAgMHg2MiwweGM3LDB4ZjcsMHg2ZCwweDYzLDB4ZDAsMHgxOCwweGJiLDB4OTIsMHg5NiwweGRmLDB4YzgsMHhhZiwweDRjLDB4MzEsMHhjZCwKKyAgMHhiZiwweDVkLDB4NGIsMHg3MywweDA5LDB4OGIsMHhjOSwweGI3LDB4NDAsMHg2MiwweDY5LDB4MGQsMHhjMiwweDdkLDB4ZjAsMHgzNSwKKyAgMHhjOCwweGQ1LDB4OGQsMHhjMSwweGRmLDB4YzIsMHgxNCwweDFkLDB4N2YsMHg4YSwweDBkLDB4OTIsMHhjZiwweDczLDB4YmIsMHg2OSwKKyAgMHhmZiwweGEwLDB4YjQsMHg1MSwweGE1LDB4ODksMHg0MSwweDNhLDB4MTUsMHhmOCwweGYzLDB4MTgsMHgwMywweDY2LDB4N2EsMHhkZiwKKyAgMHhmOCwweGZlLDB4MzEsMHg3NiwweDU3LDB4MjMsMHhmZiwweDg3LDB4OTMsMHg2MywweDAzLDB4MGYsMHg1NSwweGZjLDB4ZjgsMHgxMywKKyAgMHgxZiwweDc4LDB4Y2QsMHhmMywweDZiLDB4ZDIsMHhiYywweGJkLDB4ZjcsMHhiYSwweGZlLDB4ODYsMHhhZSwweDIyLDB4NWMsMHhlYywKKyAgMHhhOCwweGI5LDB4ZDYsMHgyOSwweDFlLDB4NDksMHg2YiwweGY2LDB4YWEsMHhmNywweGQyLDB4MjksMHhhMiwweGUwLDB4NDUsMHhmOSwKKyAgMHg5MywweDRiLDB4ZDMsMHhjMCwweGI0LDB4M2UsMHg2MiwweGJlLDB4MzcsMHg3MiwweGFmLDB4NmIsMHgwYSwweDk1LDB4ZjAsMHg1NywKKyAgMHhmZCwweDVlLDB4NzUsMHg4YSwweDM1LDB4YWQsMHg4NiwweDBmLDB4NWMsMHgzOCwweGYwLDB4YzQsMHgwNiwweDM0LDB4NGQsMHgzMywKKyAgMHhhZCwweDBmLDB4NjgsMHg5YSwweGEyLDB4NDgsMHg5MiwweGEwLDB4YzQsMHgyNCwweDFmLDB4ODIsMHhhNiwweGY4LDB4NDAsMHg0NSwKKyAgMHg0MSwweDE0LDB4MWIsMHg0YywweDM2LDB4Y2QsMHhiZSwweDdkLDB4MjEsMHgyMSwweDhjLDB4ODUsMHhkNCwweGJhLDB4NzYsMHgzZiwKKyAgMHgwMiwweDIxLDB4YTYsMHhhYSwweDBlLDB4NGEsMHg2MiwweDAzLDB4MDQsMHg5OSwweGU5LDB4ZjEsMHg4MSwweGU5LDB4NzksMHg2ZSwKKyAgMHhkNywweGI4LDB4OTAsMHg0NywweDY5LDB4OTMsMHg4YiwweDI3LDB4NDAsMHhlMCwweDhhLDB4NjAsMHgwYSwweDBlLDB4YzAsMHg5MCwKKyAgMHgzZiwweGZjLDB4MGEsMHg5NywweDNmLDB4NTMsMHg0YywweGVmLDB4YmIsMHg0YSwweDEzLDB4ZjksMHhhZiwweGQ3LDB4YzEsMHg0OSwKKyAgMHgyNiwweGM2LDB4ZTQsMHg0ZiwweDFhLDB4Y2IsMHhmNiwweDQ5LDB4ZjcsMHhjNSwweDA0LDB4OTEsMHgwZiwweDhjLDB4MmYsMHg2MiwKKyAgMHhmZSwweGJlLDB4OTAsMHhlYiwweDEyLDB4YjgsMHhmNCwweDYwLDB4NGMsMHhlMiwweDAzLDB4MTQsMHg5ZCwweDNhLDB4MGUsMHhmMiwKKyAgMHg4YywweDgxLDB4YTIsMHhlMiwweGUwLDB4OGUsMHg1NCwweDI4LDB4MjUsMHhjNSwweDg0LDB4OGMsMHg4NiwweDE3LDB4NjcsMHg4MywKKyAgMHg1NSwweGMzLDB4YzEsMHg3MSwweDk4LDB4MDMsMHgxOSwweDYwLDB4MGMsMHgwYSwweDcxLDB4NDAsMHhiNCwweDk0LDB4ZjksMHg2OSwKKyAgMHhjMiwweDZjLDB4NmQsMHhiMSwweDM3LDB4MjcsMHhiOCwweDY5LDB4MTUsMHgxZiwweDY4LDB4NjIsMHhhZSwweGY0LDB4OWEsMHgzMCwKKyAgMHhmYiwweDc2LDB4YmMsMHg5MiwweDJiLDB4YmQsMHgyZSwweGNjLDB4YWUsMHg1ZSwweGVjLDB4ZmQsMHg5NiwweDUyLDB4NmIsMHg5ZSwKKyAgMHhmZiwweGY1LDB4YjQsMHhmYSwweGRlLDB4ZWYsMHhiOCwweGJlLDB4MWQsMHg0OCwweGRiLDB4OGEsMHg4MywweDFiLDB4NWMsMHhmNywKKyAgMHhhYywweDlkLDB4ZjIsMHg1YywweGVjLDB4Y2EsMHhkYSwweDI5LDB4NWIsMHg4NSwweGY4LDB4YzAsMHgzYywweDNmLDB4MjMsMHgwNiwKKyAgMHhmNCwweGY5LDB4N2YsMHhkNCwweDQ4LDB4NmEsMHhmNCwweDE5LDB4NGQsMHhjNSwweDhjLDB4YzcsMHhkOCwweDI0LDB4ZmQsMHgyYiwKKyAgMHhjZiwweDAzLDB4Y2IsMHg3ZCwweDkzLDB4ZjMsMHhhNCwweDNiLDB4MDQsMHgwOCwweGQ0LDB4NzIsMHg0NSwweGU2LDB4MTEsMHgyNiwKKyAgMHgwNywweGE0LDB4NjUsMHg5MywweGYzLDB4OWEsMHhlZiwweGM4LDB4OWYsMHhjYywweDZhLDB4MjcsMHgwNiwweGU2LDB4ZjksMHhiNywKKyAgMHg3YiwweDI3LDB4ZGYsMHgyYiwweGRkLDB4OGUsMHhhOCwweDMyLDB4Y2QsMHgzYiwweDM5LDB4NTcsMHhmYSwweDFiLDB4NjEsMHg4YSwKKyAgMHg3NiwweGJiLDB4MTcsMHhlZSwweDk1LDB4ZmUsMHgwNiwweDI2LDB4NmIsMHgxZiwweDc4LDB4NWQsMHhmNywweDRhLDB4NTMsMHhmMCwKKyAgMHg4YSwweDY5LDB4M2EsMHhjZCwweGU3LDB4N2IsMHg1OSwweGMxLDB4MmQsMHhjOSwweDgzLDB4YzUsMHhmZSwweDVjLDB4MzUsMHhhZCwKKyAgMHg0ZSwweGYwLDB4MzgsMHgxNCwweDk2LDB4OGIsMHhiYSwweDMxLDB4ZmYsMHgxZSwweGVhLDB4NmQsMHhjZCwweDU1LDB4NTcsMHg5OSwKKyAgMHg2ZiwweDZmLDB4MTEsMHg3OCwweDE2LDB4OTQsMHhkNywweDIxLDB4ZjEsMHg4MSwweDE2LDB4NTIsMHgxYywweGNhLDB4YzQsMHg2MCwKKyAgMHhlMiwweDhhLDB4ZDMsMHhlYywweDdkLDB4MDAsMHgyYiwweDllLDB4YWQsMHg2NiwweGZkLDB4ZmIsMHhhZSwweGViLDB4MTcsMHg4YiwKKyAgMHhkZiwweDgyLDB4ZTMsMHg3ZCwweGI3LDB4YmEsMHhhOCwweDMxLDB4ZDAsMHg2ZiwweDc1LDB4NjUsMHgyZSwweDRlLDB4Y2YsMHgzMSwKKyAgMHgwNiwweDI5LDB4ZmIsMHgzMywweDIzLDB4ZWQsMHhlMSwweGVhLDB4ZmIsMHg4MiwweDFjLDB4MDYsMHg0OCwweDg4LDB4MDcsMHhkOCwKKyAgMHgzNywweDYyLDB4NzgsMHhlMCwweDI0LDB4ZTMsMHg1NywweGE2LDB4MmYsMHgxMywweDRlLDB4YjIsMHhmZiwweDVlLDB4ZjgsMHhhNCwKKyAgMHg2ZSwweDlhLDB4MmYsMHg3ZiwweGM3LDB4ZjMsMHg4NywweGUwLDB4NGIsMHg5ZCwweGM1LDB4MTksMHhiNywweDJjLDB4YzQsMHhjMSwKKyAgMHhjZSwweGNlLDB4ZTIsMHgzYiwweGU1LDB4N2IsMHgxNiwweDBlLDB4NmUsMHg3YywweGE5LDB4ZjAsMHgzNywweDE5LDB4YjIsMHg2NywKKyAgMHhlMSwweDcxLDB4NjMsMHg2MCwweDdlLDB4OWUsMHhmOSwweDU3LDB4ZWYsMHhiZSwweGZhLDB4ZmIsMHg1NywweGNlLDB4N2YsMHgzMiwKKyAgMHg1ZSwweGY1LDB4NzMsMHgxYywweGVjLDB4M2EsMHhmZiwweDk3LDB4ZjEsMHhmOSwweDU3LDB4OTYsMHhiYywweGY3LDB4ZjgsMHhkNSwKKyAgMHhhMSwweGNiLDB4ZTMsMHhmMywweDdmLDB4YjYsMHhlNCwweGFhLDB4MzEsMHg4MCwweGZmLDB4ODMsMHhiZiwweGNhLDB4MjcsMHgzMywKKyAgMHg2NiwweDc4LDB4ZWUsMHgwYywweDZlLDB4NWMsMHgzZSwweDdkLDB4ZGMsMHhmNiwweDZjLDB4Y2QsMHhkNSwweGUwLDB4YzYsMHg5ZiwKKyAgMHg1NiwweGZlLDB4ZjMsMHg5ZCwweDNmLDB4M2YsMHg3NiwweGU3LDB4ZjksMHgyNywweDJlLDB4NTcsMHg1ZCwweGJkLDB4ZjMsMHhlYiwKKyAgMHg3YywweDMwLDB4NjQsMHg5ZSwweDVmLDB4ZjUsMHhiMywweGJiLDB4ZGYsMHg3YiwweDdjLDB4ZDcsMHhkMCwweDI3LDB4MTMsMHg4ZiwKKyAgMHhmMSwweGM5LDB4ZTUsMHg4OSwweDA3LDB4YzMsMHhmOSwweDc3LDB4YmYsMHg2NywweDNjLDB4YTEsMHg3OSwweDdlLDB4YzEsMHhjZiwKKyAgMHhlYSwweGRlLDB4ZGIsMHgzOCwweDc3LDB4NjgsMHhlZCwweGZkLDB4ZjMsMHhmOSwweDNmLDB4ZGMsMHgzZSwweGY0LDB4MTgsMHgzZSwKKyAgMHhmNiwweGRkLDB4ZWYsMHhlNiwweGYwLDB4M2IsMHgxNCwweGU0LDB4ZjEsMHg0MSwweGYzLDB4YzgsMHhmZCwweGU2LDB4ZjksMHg4MiwKKyAgMHhhNywweDQxLDB4ZGIsMHhhYywweDdjLDB4M2QsMHgzYiwweDQzLDB4OGYsMHgwZCwweDcyLDB4MzMsMHg1ZSwweDRiLDB4NmYsMHhkMCwKKyAgMHhhNywweDJhLDB4OTMsMHhhNCwweDhjLDB4ZDcsMHgwOCwweGUyLDB4NDMsMHhiYywweDIyLDB4OTgsMHhkNywweDUzLDB4OGEsMHhlMSwKKyAgMHhjMywweGE5LDB4NzEsMHg3YywweGM4LDB4NjEsMHhlMSwweGE0LDB4ODcsMHhlMCwweDNlLDB4ZWQsMHg2YiwweDBhLDB4MTcsMHhkNCwKKyAgMHgzOCwweGE4LDB4NDEsMHg3YywweDY4LDB4OWEsMHgyZiwweDRlLDB4ZTAsMHg0MywweDQzLDB4M2UsMHhiYiwweDEwLDB4ZGEsMHhiMCwKKyAgMHgyNCwweDNlLDB4ZTQsMHg4MywweGFmLDB4OTUsMHhhNywweDllLDB4ZGYsMHgxOCwweDZjLDB4NTMsMHg1OCwweDFjLDB4YmYsMHg3MSwKKyAgMHhiMSwweDc5LDB4YmYsMHg3MSwweDQ1LDB4NjAsMHg3MCwweGJmLDB4OTQsMHg0NywweGQyLDB4NTUsMHhjMSwweDNjLDB4OWIsMHhmZSwKKyAgMHhmZiwweGRhLDB4MzksMHhiZiwweGQ4LDB4MjgsMHg4YSwweDM4LDB4OGUsMHhmZiwweGU2LDB4NmUsMHhlZiwweGQ4LDB4MmIsMHg3NywKKyAgMHg2NSwweGI3LDB4YmQsMHhjMiwweDE1LDB4OWIsMHg2NiwweDhmLDB4MmIsMHg0NywweGZkLDB4MTMsMHhkYywweDIyLDB4YzUsMHgxYSwKKyAgMHg0YywweDNiLDB4ZWQsMHhlZCwweGI1LDB4NDcsMHhkMywweGMyLDB4ODEsMHg4MCwweDQwLDB4OGMsMHhiOSwweDJhLDB4MjEsMHhjNiwKKyAgMHgyNywweGQwLDB4MTcsMHhhMywweDQxLDB4ZjYsMHhjYSwweDQxLDB4OGMsMHhkMSwweGE0LDB4YTksMHgzNSwweDk2LDB4MDQsMHhmNSwKKyAgMHgzMCwweDZhLDB4OGMsMHg4MSwweGY4LDB4ZTAsMHg5ZiwweDkwLDB4MTgsMHg5MywweDA1LDB4OGQsMHg0OCwweDM0LDB4MjksMHgwZiwKKyAgMHhmMCwweGEyLDB4MjYsMHg0MiwweGU0LDB4YzUsMHhjNCwweDg0LDB4M2UsMHg5MCwweDE4LDB4MWYsMHhlYSwweGY5LDB4OWIsMHg5OSwKKyAgMHhiZCwweGVlLDB4MWUsMHg0NCwweDg4LDB4YzgsMHhiZSwweDk4LDB4ZjksMHgzZSwweDdkLDB4YmIsMHgzNywweDM3LDB4M2IsMHgzNywKKyAgMHhmMywweGJiLDB4ZGYsMHg3YywweDdlLDB4ZGIsMHhkZCwweGIzLDB4OWUsMHgyMywweGYxLDB4YzksMHg1YywweDE4LDB4Y2UsMHg1YiwKKyAgMHhlYiwweDQ4LDB4NDcsMHg2NSwweGM0LDB4ZDAsMHhkOSwweDQzLDB4MzUsMHgxZCwweDE4LDB4MTgsMHhmYSwweDBmLDB4MTgsMHgyMSwKKyAgMHg2OCwweDU0LDB4ZGQsMHg2OSwweGVjLDB4M2YsMHhhNSwweDU2LDB4NDIsMHg3YywweDJiLDB4ODQsMHg5NCwweGM2LDB4NjgsMHhkMCwKKyAgMHgzMiwweGM0LDB4ODksMHhjYSwweGVlLDB4YTksMHg4OSwweDdmLDB4M2MsMHgyYSwweDYyLDB4MjEsMHgyNiwweDBkLDB4MGIsMHhmOSwKKyAgMHhmMCwweDI5LDB4YzYsMHg4NywweDI1LDB4NmQsMHg1NiwweGQ5LDB4MjcsMHhjYywweDcxLDB4MjUsMHg1YiwweDhlLDB4MzEsMHhlMywKKyAgMHg2ZiwweGZmLDB4YTAsMHgzMiwweDVhLDB4NWUsMHg1ZSwweGNkLDB4ZGIsMHhkYSwweDVhLDB4NjUsMHg0ZiwweGI5LDB4YTUsMHg2YSwKKyAgMHg3ZCwweGE0LDB4ZGYsMHgwNywweDdiLDB4Y2UsMHhhMCwweDM5LDB4YWQsMHhkZiwweDhmLDB4MmYsMHhhMSwweDk5LDB4ZjUsMHhlNSwKKyAgMHg0ZiwweGQ1LDB4NDksMHg0MCwweDJiLDB4ZGIsMHg1MiwweDNlLDB4ODMsMHgzMSwweDRjLDB4NWEsMHhjOSwweDBiLDB4YjAsMHg5ZSwKKyAgMHg4YywweDAxLDB4ZWUsMHgzNiwweDRlLDB4YTQsMHg4ZiwweDhjLDB4OTEsMHg1NiwweDU4LDB4Y2UsMHgzNiwweDE5LDB4ZWEsMHhiZCwKKyAgMHhjMSwweDg5LDB4MjIsMHgwYiwweDIyLDB4MGQsMHg2ZSwweDg1LDB4MGEsMHgwNSwweGY2LDB4OTgsMHgyMCwweDI1LDB4MWEsMHg1OCwKKyAgMHg5OCwweGM1LDB4OTQsMHgyMiwweGQxLDB4YjQsMHhhNCwweGEyLDB4MzMsMHhlMywweGVkLDB4ZWYsMHhhYSwweGMzLDB4Y2EsMHg1NSwKKyAgMHhjYywweGMyLDB4NWQsMHhlMiwweDRhLDB4ODEsMHhjNiwweDM2LDB4YTQsMHgxMCwweGNiLDB4N2EsMHhhYywweDMwLDB4NmIsMHg2MSwKKyAgMHg2NSwweDlmLDB4MDEsMHhkMCwweGQwLDB4NWUsMHgyOSwweDExLDB4MDYsMHhjOSwweDNjLDB4ZTMsMHhhNywweGM4LDB4MTAsMHhlMywKKyAgMHg5MSwweDEyLDB4OTksMHg4NSwweDdkLDB4NjgsMHgyMiwweGNjLDB4MGMsMHg0MywweDhmLDB4YzcsMHhmMywweDFhLDB4YTEsMHg5OCwKKyAgMHhhMSwweDY2LDB4MjEsMHg2YiwweDIwLDB4OTksMHg3MSwweDAzLDB4MzEsMHg2MSwweGQ2LDB4YTEsMHgwMSwweDY2LDB4ZDYsMHgwMCwKKyAgMHhhZSwweDYwLDB4NWQsMHg5NCwweGYxLDB4MjEsMHg4NywweDIyLDB4MzgsMHhlYywweGUzLDB4NDMsMHhkNywweDcwLDB4M2UsMHgxYywKKyAgMHg1NiwweDFkLDB4NDcsMHg1ZiwweDdjLDB4OWUsMHgxMSwweGZlLDB4ODksMHgwZiwweDQzLDB4N2UsMHhhMywweGQ1LDB4NjcsMHg4OCwKKyAgMHgyYSwweDQzLDB4NjAsMHg3MiwweDQ4LDB4ODMsMHhhZiwweGViLDB4ZTYsMHhlYywweGEyLDB4ZDEsMHg4NCwweGExLDB4MWUsMHg2ZiwKKyAgMHhkMCwweGZhLDB4ZmUsMHgxYiwweDg3LDB4NDksMHg3NywweDIzLDB4ZDYsMHgzZCwweDEzLDB4ZTEsMHgwNiwweDNmLDB4ZjgsMHhlMiwKKyAgMHhmZSwweDQ1LDB4MDksMHhkZiwweGRmLDB4ZDMsMHgzNywweGYyLDB4ZTEsMHhlMiwweDhlLDB4Y2YsMHg4ZCwweDE3LDB4MGYsMHg0NSwKKyAgMHg3MiwweGFiLDB4ZmUsMHg3MSwweGEzLDB4ZTcsMHhjNiwweDZiLDB4NGYsMHhmMywweDE0LDB4ZDcsMHgyZiwweDA5LDB4NzksMHgyOCwKKyAgMHhkNiwweDhkLDB4N2UsMHhiMywweDE5LDB4NWEsMHgxYywweDRmLDB4MDEsMHg1NywweDZhLDB4ZDAsMHg0ZSwweDk2LDB4OTYsMHhiMCwKKyAgMHgyNSwweGRiLDB4OGEsMHg1OCwweGE4LDB4MjAsMHgxNiwweDdhLDB4NjYsMHg1MCwweDE4LDB4MmYsMHg3YywweDBhLDB4ZWMsMHg5NiwKKyAgMHgxMiwweGJiLDB4Y2UsMHg4YiwweDM2LDB4NTYsMHgxOCwweGEyLDB4NTYsMHg3MiwweDhiLDB4MjYsMHg0MywweDE4LDB4ZjAsMHg4ZCwKKyAgMHg2NywweDI3LDB4ZDIsMHgyMCwweGYyLDB4NjEsMHgxMSwweDc2LDB4MjIsMHgyOCwweDVlLDB4ZTIsMHg1OCwweDE4LDB4MjIsMHgyZSwKKyAgMHgyOCwweDEyLDB4ZTQsMHg0MywweGRhLDB4OWIsMHg4YSwweDUwLDB4NmYsMHg3ZiwweDI3LDB4YzMsMHg4OCwweDg1LDB4MWQsMHhhNSwKKyAgMHg5MSwweDU0LDB4ZmIsMHhiNywweGFlLDB4ZDEsMHgzZCwweDEzLDB4ZTUsMHg2NiwweDU3LDB4YmIsMHhlMywweGY1LDB4NGYsMHg4NiwKKyAgMHgzOSwweDE2LDB4YWUsMHg0MSwweGJhLDB4MjMsMHhjMiwweGM0LDB4NTgsMHhiMywweDlmLDB4MjcsMHg5OCwweDAxLDB4NzEsMHgyNCwKKyAgMHhlOSwweDJjLDB4NWUsMHg5ZSwweDI4LDB4ZDYsMHhmOSwweDMwLDB4MDUsMHg0NywweDQ5LDB4NGYsMHhmOSwweDg5LDB4MDksMHg4NiwKKyAgMHg4NSwweDRiLDB4MGUsMHg5NCwweGM3LDB4MzgsMHgxZiwweGI2LDB4MDksMHg3NCwweGI0LDB4Y2UsMHg3YSwweGViLDB4MDUsMHhlYywKKyAgMHhiNywweDMxLDB4OTEsMHgwZiwweGE5LDB4MzIsMHg0NSwweDRhLDB4ZjYsMHgyNiwweDVlLDB4OGQsMHg5MiwweDJlLDB4N2IsMHg5NywKKyAgMHhkMSwweDUyLDB4NTAsMHhhNiwweDQ1LDB4MjIsMHgyYSwweGUwLDB4OTEsMHhjNSwweGY4LDB4YzEsMHgwMCwweDllLDB4YjAsMHg1MywKKyAgMHhhNSwweGU4LDB4NmMsMHhmMSwweDQzLDB4MzQsMHgyYiwweDRiLDB4ZDEsMHgxNCwweDM5LDB4MmEsMHg4ZSwweGI4LDB4NjYsMHgyMiwKKyAgMHg5YSwweGMyLDB4ZjUsMHhhYSwweGI3LDB4ODcsMHg3YywweDQ5LDB4NzksMHgyMSwweGRkLDB4YWMsMHhlNiwweDcwLDB4Y2YsMHg1MywKKyAgMHhmYSwweDQ4LDB4MjcsMHhlNCwweDZjLDB4ZWQsMHhiMiwweGQyLDB4MDcsMHg5ZCwweDMwLDB4NjIsMHhlYiwweDk3LDB4ZjksMHg5MSwKKyAgMHgxMSwweDliLDB4MzgsMHhiZSwweGY4LDB4ZDksMHgwNiwweGE1LDB4Y2IsMHg2YSwweDVmLDB4NjgsMHgwYywweGRlLDB4YzAsMHg1MiwKKyAgMHhhZiwweDVkLDB4ODQsMHg0ZCwweDE3LDB4YzMsMHhjMiwweDAyLDB4OTksMHgxNiwweDdjLDB4NTgsMHhmMCwweGU1LDB4MWYsMHgxYSwKKyAgMHgwOSwweDI5LDB4YzYsMHgwOSwweGNlLDB4ODcsMHhhZiwweDU2LDB4OTAsMHgwNiwweGFiLDB4MjIsMHg3ZSwweGVjLDB4MDYsMHgzZSwKKyAgMHhmNCwweGM1LDB4MWIsMHhjZCwweDg3LDB4MTQsMHg1YSwweDRlLDB4MWEsMHg3OSwweGZjLDB4NWUsMHgyOCwweGM1LDB4YjIsMHg4NiwKKyAgMHg0NiwweGNmLDB4NDEsMHhmMSwweDg4LDB4NjYsMHg1OCwweGFhLDB4MWUsMHhlNiwweDQ3LDB4MmMsMHg5NSwweDgwLDB4NmYsMHg3ZSwKKyAgMHhiMCwweGE0LDB4NzQsMHg5MiwweDY2LDB4MjQsMHg2ZSwweDhmLDB4MWEsMHhlMCwweDI0LDB4YWIsMHgyNCwweDRlLDB4YjAsMHhiZCwKKyAgMHhjZCwweDhlLDB4MzAsMHhjMywweDVmLDB4MjIsMHhkNCwweGZiLDB4YmUsMHg2MCwweGQ2LDB4MzAsMHgwNSwweDFmLDB4MDIsMHgwZCwKKyAgMHg2MSwweGZlLDB4ZTEsMHhmNSwweGE5LDB4Y2IsMHg4NywweDZhLDB4NTIsMHg5OCwweDQxLDB4N2YsMHhmYywweDBjLDB4YWQsMHg2YSwKKyAgMHg2MSwweDdjLDB4OTgsMHhiMCwweDQzLDB4NTksMHhjYywweDQzLDB4YWIsMHhkMiwweGRkLDB4NmEsMHg1MywweDlkLDB4MGYsMHhlYiwKKyAgMHhjNiwweGY2LDB4OGQsMHg4NywweGQwLDB4MGEsMHhjZiwweDNmLDB4MjQsMHg2ZCwweDFmLDB4NDUsMHhhMywweGYyLDB4N2EsMHg4OCwKKyAgMHhhNSwweDY1LDB4NjEsMHhkOCwweDRiLDB4YTEsMHhkZCwweGJlLDB4Y2YsMHg0YiwweGU4LDB4N2IsMHg3YiwweGUxLDB4MTgsMHg2NCwKKyAgMHgwNywweDYzLDB4NTMsMHg5MywweDI1LDB4MzgsMHhkNiwweDk0LDB4NjUsMHhmNywweDY3LDB4YjksMHg4OSwweGM4LDB4MzUsMHhhMSwKKyAgMHg5OCwweGI3LDB4NWUsMHgxNCwweGQ3LDB4YWIsMHg4ZiwweDM0LDB4ZTMsMHgzMiwweGQ5LDB4NTUsMHhkNywweGIwLDB4ZjUsMHg2YSwKKyAgMHgzMCwweDY1LDB4Y2QsMHg1YiwweGFmLDB4MjIsMHg3ZSwweGJjLDB4NDcsMHg5YywweGU2LDB4ZmQsMHhlMSwweGUzLDB4ZjYsMHgwNywKKyAgMHg4NiwweGM5LDB4N2UsMHhkZCwweDVlLDB4ODEsMHgyYiwweGUwLDB4OWEsMHgzMywweDc1LDB4ZTMsMHhjYiwweDNmLDB4OTgsMHg1OSwKKyAgMHg3YiwweDY5LDB4YTIsMHgxOCwweDJlLDB4MjIsMHgzZCwweGY2LDB4ZDAsMHgwNCwweDBkLDB4NmYsMHg4NywweDRiLDB4MGMsMHgyYywKKyAgMHg4YiwweGUxLDB4MjQsMHgzMywweDk0LDB4OWIsMHhiMywweGJlLDB4ZjksMHhjOSwweDI5LDB4YTUsMHhjMSwweGQ0LDB4N2UsMHg1YywKKyAgMHhkZiwweGMzLDB4NGEsMHhlOSwweDRjLDB4Y2EsMHgxYywweDhlLDB4ZWIsMHgzNywweDliLDB4ODYsMHhmOSwweDExLDB4N2MsMHhjOCwKKyAgMHgyZSwweDQ2LDB4ZjIsMHg4YiwweDg1LDB4ZWMsMHg4YSwweDcwLDB4YzMsMHhlNSwweGMzLDB4ODYsMHg0YiwweDg1LDB4OTQsMHgxNCwKKyAgMHgyYywweGMxLDB4ODcsMHgzNiwweGE3LDB4NDEsMHgzNCwweDNlLDB4MmMsMHg2NCwweDY2LDB4MjYsMHg5NywweDZlLDB4Y2MsMHgzZiwKKyAgMHhkNiwweGY2LDB4ZjYsMHhiNiwweDY4LDB4M2UsMHhhNywweDI1LDB4ZjcsMHgzMiwweDNlLDB4Y2MsMHg2MywweGM2LDB4YjEsMHhiOCwKKyAgMHhlMSwweGY5LDB4MDcsMHhjZCwweDIwLDB4MWEsMHg1ZiwweGZjLDB4ZjAsMHg0OCwweDBjLDB4YjksMHgyOSwweDUwLDB4OWIsMHg4YywKKyAgMHgxOCwweGE0LDB4YzAsMHg2MiwweDZhLDB4OTIsMHg1ZiwweDNiLDB4ZDksMHgyNiwweDBjLDB4ZjgsMHg4NCwweDEwLDB4ZTgsMHg0MCwKKyAgMHgxNSwweGJhLDB4YTEsMHgwOSwweGY4LDB4ZWQsMHhmMiwweGMyLDB4ZjgsMHhmOSwweGIwLDB4YmIsMHgyMSwweGZmLDB4OGMsMHg4NywKKyAgMHgxZiwweGEzLDB4OTUsMHgwYiwweGU5LDB4ZjUsMHhmNiwweGY4LDB4YWEsMHg1NiwweGZhLDB4MGQsMHgxYSwweDc1LDB4M2MsMHhkNCwKKyAgMHg0YSwweDJmLDB4NWUsMHhlOCwweDVkLDB4OWYsMHgxOCwweDBmLDB4ODUsMHhiOSwweDg5LDB4ZmIsMHhjNiwweDQzLDB4MGEsMHgxNSwKKyAgMHhkYywweGY0LDB4YTcsMHg3MCwweGY3LDB4M2YsMHhjZiwweGY4LDB4MTAsMHg1YywweGMzLDB4NzksMHhlMCwweDNiLDB4ZDcsMHgyNCwKKyAgMHgxZCwweGRmLDB4NzgsMHgzOCwweDE2LDB4MzIsMHgzZSwweDVjLDB4M2EsMHgzYSwweGVhLDB4ZTcsMHhjMywweGY3LDB4ZWIsMHg3YywKKyAgMHhiOCwweGI3LDB4OTEsMHgwZiwweDM5LDB4N2QsMHgzMSwweDNlLDB4ZGMsMHg3OCwweDY4LDB4OGIsMHg5ZiwweDBmLDB4YWYsMHhkZiwKKyAgMHgyNSwweDNlLDB4ZTQsMHg1OCwweGY4LDB4ZGIsMHg1NCwweDZkLDB4NjEsMHhlMCwweDRmLDB4MDEsMHg4YSwweDA3LDB4YmIsMHhkZSwKKyAgMHg2NSwweDU4LDB4MzgsMHhmNSwweGQ2LDB4YzIsMHhlYSwweDlhLDB4NmIsMHhmYywweGVkLDB4ZjksMHhkOSwweGZmLDB4YjgsMHg4YSwKKyAgMHhlZCwweGZmLDB4MTIsMHhhMCwweGI4LDB4YjAsMHhmMSwweDEwLDB4YzMsMHhjMiwweGFiLDB4ZDcsMHgxNiwweDM2LDB4ZDYsMHg1YywKKyAgMHhkMywweGQwLDB4YmUsMHhkMywweGU1LDB4YzMsMHg0YywweGU3LDB4ZTYsMHg1ZiwweGE2LDB4N2IsMHg5MCwweDBmLDB4MzMsMHgyZiwKKyAgMHg2ZiwweDNlLDB4YzcsMHgwOSwweDMzLDB4YzMsMHg1MSwweGIzLDB4NzIsMHhlZCwweDNmLDB4OGMsMHhkZiwweDA0LDB4ODMsMHhiMCwKKyAgMHhkYiwweDMzLDB4NGMsMHhjOCwweGM1LDB4ZWYsMHhiYywweDE3LDB4MjksMHgyOSwweDI5LDB4MjksMHgyOSwweDI5LDB4MjksMHgyOSwKKyAgMHgyOSwweDI5LDB4YTksMHhmZiwweGJiLDB4NzgsMHhlZCwweGEwLDB4YzgsMHhkYSwweDQxLDB4NGEsMHg0YSwweDRhLDB4NGEsMHg0YSwKKyAgMHg0YSwweDRhLDB4NGEsMHg0YSwweDRhLDB4ZWEsMHhkNiwweGUyLDB4YjUsMHg0MywweDU0LDB4ZDYsMHgwZSwweDUyLDB4NTIsMHg1MiwKKyAgMHg1MiwweDUyLDB4NTIsMHg1MiwweDUyLDB4NTIsMHg1MiwweDUyLDB4YjcsMHgxNiwweGFmLDB4MWQsMHg1NCwweDVlLDB4M2IsMHhlMCwKKyAgMHg1ZiwweDkxLDB4YmUsMHgyNywweDc3LDB4ZDMsMHg4MSwweGZlLDB4OTcsMHg3NiwweDA3LDB4NzQsMHhiNiwweGVlLDB4NzMsMHhmMCwKKyAgMHgwMCwweGNkLDB4NTgsMHhkMCwweDcwLDB4MTMsMHhkYSwweDVkLDB4OTQsMHhkMiwweGY0LDB4Y2MsMHgzMSwweDdiLDB4NjksMHhkYiwKKyAgMHg5NywweDg1LDB4NjAsMHhiYSwweDg3LDB4ODEsMHgzOSwweDM2LDB4N2UsMHgwYSwweDAzLDB4NGUsMHgzMCwweGZkLDB4MmIsMHhjNiwKKyAgMHhjYywweDA5LDB4NjcsMHhlNSwweGM1LDB4ZDcsMHg1ZiwweDA5LDB4YTYsMHg3YiwweDMwLDB4ZTcsMHhjYywweGRmLDB4NjksMHg2NiwKKyAgMHhiZiwweDYzLDB4M2EsMHhjMSwweGY0LDB4OWYsMHg3OCwweGY4LDB4ZTAsMHgxMSwweGE3LDB4ZTMsMHg5MywweGE3LDB4YjcsMHgwNCwKKyAgMHhkMywweDNkLDB4Y2UsMHhiZiwweDE4LDB4N2YsMHg1MCwweGYzLDB4MWYsMHg1ZiwweDczLDB4ZGMsMHg4NiwweDQ3LDB4NTcsMHg1NCwKKyAgMHg4MywweDliLDB4ZmYsMHg2NSwweDE4LDB4M2YsMHg1YiwweDIwLDB4YTgsMHhmOSwweDZmLDB4Y2UsMHg5ZSwweDllLDB4ODcsMHg3YiwKKyAgMHg3NiwweDdjLDB4YmUsMHgyOSwweDk4LDB4ZWUsMHg3MSwweGZlLDB4YzUsMHhmOCwweDAzLDB4OGIsMHhmZiwweGI1LDB4NmQsMHgxZiwKKyAgMHhkMywweGE1LDB4Y2YsMHhjZiwweGE4LDB4YjcsMHg2ZiwweDdhLDB4NDcsMHgzMiwweGU3LDB4MDYsMHgzMCwweDdlLDB4MGUsMHgwNSwKKyAgMHgxNywweGZmLDB4MWEsMHhkOSwweDAwLDB4YWIsMHg2MywweGY3LDB4MDYsMHgxNywweGZmLDB4NjIsMHhmYywweDQxLDB4Y2QsMHg3ZiwKKyAgMHgyMiwweDZkLDB4MGQsMHhjMywweGJhLDB4ZWIsMHhkOSwweGEwLDB4ZTIsMHhjNywweGFjLDB4MzksMHgyYywweDdmLDB4OWEsMHhmMywKKyAgMHg0ZSwweDMwLDB4ZmQsMHgyYiwweGVhLDB4ODEsMHgzNywweDlkLDB4MGQsMHg5ZiwweGNlLDB4MDQsMHg5NiwweGZmLDB4ZGQsMHhmMSwKKyAgMHhkZiwweGZjLDB4Y2IsMHgwNCwweDc3LDB4NDcsMHg0YSwweDY2LDB4ZTYsMHg5NCwweDkzLDB4NTksMHgzMSwweDFkLDB4NTgsMHhmZSwKKyAgMHhhOSwweGNkLDB4YjMsMHhmYywweDM5LDB4MWYsMHhkNCwweGZjLDB4MmYsMHhlYiwweGZmLDB4ZjUsMHg5YSwweGQzLDB4ZmIsMHhlMywKKyAgMHhlMywweDczLDB4YzEsMHg3NCwweDhmLDB4ZjMsMHgyZiwweGM2LDB4MWYsMHhkOCwweGZjLDB4ZjcsMHhiZiwweGY2LDB4OGUsMHhmZCwKKyAgMHhkMCwweDhhLDB4OTMsMHhiMSwweGRiLDB4MzcsMHhiZCwweDIzLDB4OTksMHhiNSwweDM5LDB4OTYsMHgzZiwweDAzLDB4OGIsMHhmZiwKKyAgMHg2OCwweGU3LDB4YTksMHg2NywweGVkLDB4ZWMsMHg1NywweDNmLDB4NTksMHhjMSwweDc0LDB4OGYsMHhmMywweDJmLDB4YzYsMHgxZiwKKyAgMHhkOCwweGZjLDB4YWYsMHhkZSwweGYxLDB4MDUsMHgxOCwweDZkLDB4NmYsMHgwNywweDk3LDB4N2YsMHg2YSwweDJjLDB4N2YsMHgwNiwKKyAgMHgxNywweGZmLDB4MmIsMHgyMywweDY5LDB4ZGEsMHg3ZiwweDMyLDB4ZjEsMHg3ZCwweDMwLDB4ZGQsMHhiMywweDFmLDB4MzksMHhlMSwKKyAgMHhlMywweDBmLDB4NjYsMHhmZSwweDRkLDB4ZjYsMHg3YywweDFjLDB4YmMsMHhkOCwweDZhLDB4ODIsMHhjZCwweDllLDB4NWEsMHgwOSwKKyAgMHg5YiwweDQwLDB4ZmYsMHhmNSwweGZmLDB4MTMsMHhkYywweGY3LDB4NDYsMHg0YywweGE4LDB4MTIsMHhhZiwweGNmLDB4MmIsMHg3YiwKKyAgMHg2ZSwweDZjLDB4ZjcsMHgzNywweGVhLDB4ZTcsMHhiYSwweDhmLDB4ZjAsMHgzMywweDAxLDB4MDAsCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvaGg0MDUvaGg0MDUuYyBiL2JvYXJkL2VzZC9oaDQwNS9oaDQwNS5jCmluZGV4IDMxNTg4MDMuLjk5ZmQ1NTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9oaDQwNS9oaDQwNS5jCisrKyBiL2JvYXJkL2VzZC9oaDQwNS9oaDQwNS5jCkBAIC01LDYgKzUsOSBAQAogICogKEMpIENvcHlyaWdodCAyMDA1CiAgKiBTdGVmYW4gUm9lc2UsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHNyQGRlbnguZGUuCiAgKgorICogKEMpIENvcHlyaWdodCAyMDA2CisgKiBNYXR0aGlhcyBGdWNocywgZXNkIEdtYkgsIG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20KKyAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KICAqCkBAIC0zMSw3ICszNCw2IEBACiAjaW5jbHVkZSA8cGNpLmg+CiAjaW5jbHVkZSA8c201MDEuaD4KIAotCiAjaWZkZWYgQ09ORklHX1ZJREVPX1NNNTAxCiAKICNkZWZpbmUgU1dBUDMyKHgpCSAoKCgoeCkgJiAweDAwMDAwMGZmKSA8PCAyNCkgfCAoKCh4KSAmIDB4MDAwMGZmMDApIDw8IDgpfFwKQEAgLTY2LDEwICs2OCwxMiBAQAogCXsweDAwMDQwLCBTV0FQMzIoMHgwMDAyMTgwNyl9LAogCXsweDAwMDQ0LCBTV0FQMzIoMHgyMjFhMGEwMSl9LAogCXsweDAwMDU0LCBTV0FQMzIoMHgwMDAwMDAwMCl9LAorCS8qIEdQSU8gKi8KKwl7MHgxMDAwYywgU1dBUDMyKDB4ZmZmZmZmZjApfSwgLyogR1BJTzMyLi42MyBkaXJlY3Rpb24gKi8KIAkvKiBwYW5lbCBjb250cm9sIHJlZ3MuLi4gKi8KIAl7MHg4MDAwMCwgU1dBUDMyKDB4MGYwMTMxMDUpfSwgLyogcGFuZWwgZGlzcGxheSBjb250cm9sOiAxNi1iaXQgUkdCIDU6Njo1IG1vZGUgKi8KIAl7MHg4MDAwNCwgU1dBUDMyKDB4YzQyOGJiMTcpfSwgLyogcGFuZWwgcGFubmluZyBjb250cm9sID8/PyAqLwotCXsweDgwMDBDLCBTV0FQMzIoMHgwMDAwMDAwMCl9LCAvKiBwYW5lbCBmYiBhZGRyZXNzICovCisJezB4ODAwMEMsIFNXQVAzMigweDAwMDEwMDAwKX0sIC8qIHBhbmVsIGZiIGFkZHJlc3MgKi8KIAl7MHg4MDAxMCwgU1dBUDMyKDB4MDY0MDA2NDApfSwgLyogcGFuZWwgZmIgb2Zmc2V0L3dpbmRvdyB3aWR0aCAqLwogCXsweDgwMDE0LCBTV0FQMzIoMHgwMzIwMDAwMCl9LCAvKiBwYW5lbCBmYiB3aWR0aCAoMHgzMjA9ODAwKSAqLwogCXsweDgwMDE4LCBTV0FQMzIoMHgwMjU4MDAwMCl9LCAvKiBwYW5lbCBmYiBoZWlnaHQgKDB4MjU4PTYwMCkgKi8KQEAgLTEwMCwxMCArMTA0LDEyIEBACiAJezB4MDAwNDAsIFNXQVAzMigweDAwMDIxODA3KX0sCiAJezB4MDAwNDQsIFNXQVAzMigweDAxMWEwYTAxKX0sCiAJezB4MDAwNTQsIFNXQVAzMigweDAwMDAwMDAwKX0sCisJLyogR1BJTyAqLworCXsweDEwMDBjLCBTV0FQMzIoMHhmZmZmZmZmMCl9LCAvKiBHUElPMzIuLjYzIGRpcmVjdGlvbiAqLwogCS8qIHBhbmVsIGNvbnRyb2wgcmVncy4uLiAqLwogCXsweDgwMDAwLCBTV0FQMzIoMHgwZjAxMzEwNSl9LCAvKiBwYW5lbCBkaXNwbGF5IGNvbnRyb2w6IDE2LWJpdCBSR0IgNTo2OjUgbW9kZSAqLwogCXsweDgwMDA0LCBTV0FQMzIoMHhjNDI4YmIxNyl9LCAvKiBwYW5lbCBwYW5uaW5nIGNvbnRyb2wgPz8/ICovCi0JezB4ODAwMEMsIFNXQVAzMigweDAwMDAwMDAwKX0sIC8qIHBhbmVsIGZiIGFkZHJlc3MgKi8KKwl7MHg4MDAwQywgU1dBUDMyKDB4MDAwMTAwMDApfSwgLyogcGFuZWwgZmIgYWRkcmVzcyAqLwogCXsweDgwMDEwLCBTV0FQMzIoMHgwODAwMDgwMCl9LCAvKiBwYW5lbCBmYiBvZmZzZXQvd2luZG93IHdpZHRoICovCiAJezB4ODAwMTQsIFNXQVAzMigweDA0MDAwMDAwKX0sIC8qIHBhbmVsIGZiIHdpZHRoICgweDQwMD0xMDI0KSAqLwogCXsweDgwMDE4LCBTV0FQMzIoMHgwMzAwMDAwMCl9LCAvKiBwYW5lbCBmYiBoZWlnaHQgKDB4MzAwPTc2OCkgKi8KQEAgLTE0NCwxMCArMTUwLDEyIEBACiAJezB4MDAwNDAsIFNXQVAzMigweDAwMDIxODA3KX0sCiAJezB4MDAwNDQsIFNXQVAzMigweDIyMWEwYTAxKX0sCiAJezB4MDAwNTQsIFNXQVAzMigweDAwMDAwMDAwKX0sCisJLyogR1BJTyAqLworCXsweDEwMDBjLCBTV0FQMzIoMHhmZmZmZmZmMCl9LCAvKiBHUElPMzIuLjYzIGRpcmVjdGlvbiAqLwogCS8qIHBhbmVsIGNvbnRyb2wgcmVncy4uLiAqLwogCXsweDgwMDAwLCBTV0FQMzIoMHgwZjAxMzEwNil9LCAvKiBwYW5lbCBkaXNwbGF5IGNvbnRyb2w6IDMyLWJpdCBSR0IgODo4OjggbW9kZSAqLwogCXsweDgwMDA0LCBTV0FQMzIoMHhjNDI4YmIxNyl9LCAvKiBwYW5lbCBwYW5uaW5nIGNvbnRyb2wgPz8/ICovCi0JezB4ODAwMEMsIFNXQVAzMigweDAwMDAwMDAwKX0sIC8qIHBhbmVsIGZiIGFkZHJlc3MgKi8KKwl7MHg4MDAwQywgU1dBUDMyKDB4MDAwMTAwMDApfSwgLyogcGFuZWwgZmIgYWRkcmVzcyAqLwogCXsweDgwMDEwLCBTV0FQMzIoMHgwYzgwMGM4MCl9LCAvKiBwYW5lbCBmYiBvZmZzZXQvd2luZG93IHdpZHRoICovCiAJezB4ODAwMTQsIFNXQVAzMigweDAzMjAwMDAwKX0sIC8qIHBhbmVsIGZiIHdpZHRoICgweDMyMD04MDApICovCiAJezB4ODAwMTgsIFNXQVAzMigweDAyNTgwMDAwKX0sIC8qIHBhbmVsIGZiIGhlaWdodCAoMHgyNTg9NjAwKSAqLwpAQCAtMTc4LDEwICsxODYsMTIgQEAKIAl7MHgwMDA0MCwgU1dBUDMyKDB4MDAwMjE4MDcpfSwKIAl7MHgwMDA0NCwgU1dBUDMyKDB4MDExYTBhMDEpfSwKIAl7MHgwMDA1NCwgU1dBUDMyKDB4MDAwMDAwMDApfSwKKwkvKiBHUElPICovCisJezB4MTAwMGMsIFNXQVAzMigweGZmZmZmZmYwKX0sIC8qIEdQSU8zMi4uNjMgZGlyZWN0aW9uICovCiAJLyogcGFuZWwgY29udHJvbCByZWdzLi4uICovCiAJezB4ODAwMDAsIFNXQVAzMigweDBmMDEzMTA2KX0sIC8qIHBhbmVsIGRpc3BsYXkgY29udHJvbDogMzItYml0IFJHQiA4Ojg6OCBtb2RlICovCiAJezB4ODAwMDQsIFNXQVAzMigweGM0MjhiYjE3KX0sIC8qIHBhbmVsIHBhbm5pbmcgY29udHJvbCA/Pz8gKi8KLQl7MHg4MDAwQywgU1dBUDMyKDB4MDAwMDAwMDApfSwgLyogcGFuZWwgZmIgYWRkcmVzcyAqLworCXsweDgwMDBDLCBTV0FQMzIoMHgwMDAxMDAwMCl9LCAvKiBwYW5lbCBmYiBhZGRyZXNzICovCiAJezB4ODAwMTAsIFNXQVAzMigweDEwMDAxMDAwKX0sIC8qIHBhbmVsIGZiIG9mZnNldC93aW5kb3cgd2lkdGggKi8KIAl7MHg4MDAxNCwgU1dBUDMyKDB4MDQwMDAwMDApfSwgLyogcGFuZWwgZmIgd2lkdGggKDB4NDAwPTEwMjQpICovCiAJezB4ODAwMTgsIFNXQVAzMigweDAzMDAwMDAwKX0sIC8qIHBhbmVsIGZiIGhlaWdodCAoMHgzMDA9NzY4KSAqLwpAQCAtMjcyLDYgKzI4Miw5IEBACiBpbnQgTl9BVV9JTUFHRVMgPSAoc2l6ZW9mKGF1X2ltYWdlKSAvIHNpemVvZihhdV9pbWFnZVswXSkpOwogCiAKKy8qCisgKiBHZXQgdmVyc2lvbiBvZiBISDQwNSBib2FyZCBmcm9tIEdQSU8ncworICovCiBpbnQgYm9hcmRfcmV2aXNpb24odm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIG9zcmhfcmVnOwpAQCAtMjgwLDEwICsyOTMsNiBAQAogCXVuc2lnbmVkIGxvbmcgdmFsdWU7CiAKIAkvKgotCSAqIEdldCB2ZXJzaW9uIG9mIEhINDA1IGJvYXJkIGZyb20gR1BJTydzCi0JICovCi0KLQkvKgogCSAqIFNldHVwIEdQSU8gcGlucyAoQkxBU1QvR1BJTzAgYW5kIEdQSU85IGFzIEdQSU8pCiAJICovCiAJb3NyaF9yZWcgPSBpbjMyKEdQSU8wX09TUkgpOwpAQCAtMzA1LDE1ICszMTQsMTMgQEAKIAogCWlmICh2YWx1ZSAmIDB4ODAwMDAwMDApIHsKIAkJLyogUmV2aXNpb24gMS4wIG9yIDEuMSBkZXRlY3RlZCAqLwotCQlyZXR1cm4gMHgwMTAxOworCQlyZXR1cm4gMTsKIAl9IGVsc2UgewogCQlpZiAodmFsdWUgJiAweDAwNDAwMDAwKSB7CiAJCQkvKiB1bnVzZWQgKi8KLQkJCXJldHVybiAweDAxMDM7CisJCQlyZXR1cm4gMzsKIAkJfSBlbHNlIHsKLQkJCS8qIFJldmlzaW9uID49IDIuMCBkZXRlY3RlZCAqLwotCQkJLyogcmV2LiAyLnggdXNlcyBmb3VyIFNNNTAxIEdQSU9zIGZvciByZXZpc2lvbiBjb2RpbmcgKi8KLQkJCXJldHVybiAweDAyMDA7CisJCQlyZXR1cm4gMjsKIAkJfQogCX0KIH0KQEAgLTM0OSw2ICszNTYsMzggQEAKIAlyZXR1cm4gMDsKIH0KIAoraW50IGNmX2VuYWJsZSh2b2lkKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJaW50IGk7CisKKwl2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqZnBnYV9jdHJsID0KKwkJKHVuc2lnbmVkIHNob3J0ICopKCh1bG9uZylDRkdfRlBHQV9CQVNFX0FERFIgKyBDRkdfRlBHQV9DVFJMKTsKKwl2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqZnBnYV9zdGF0dXMgPQorCQkodW5zaWduZWQgc2hvcnQgKikoKHVsb25nKUNGR19GUEdBX0JBU0VfQUREUiArIENGR19GUEdBX0NUUkwgKyAyKTsKKworCWlmIChnZC0+Ym9hcmRfdHlwZSA+PSAyKSB7CisJCWlmICgqZnBnYV9zdGF0dXMgJiBDRkdfRlBHQV9TVEFUVVNfQ0ZfREVURUNUKSB7CisJCQlpZiAoISgqZnBnYV9jdHJsICYgQ0ZHX0ZQR0FfQ1RSTF9DRl9CVVNfRU4pKSB7CisJCQkJKmZwZ2FfY3RybCAmPSB+Q0ZHX0ZQR0FfQ1RSTF9DRl9QV1JOOworCisJCQkJZm9yIChpPTA7IGk8MzAwOyBpKyspCisJCQkJCXVkZWxheSgxMDAwKTsKKworCQkJCSpmcGdhX2N0cmwgfD0gQ0ZHX0ZQR0FfQ1RSTF9DRl9CVVNfRU47CisKKwkJCQlmb3IgKGk9MDsgaTwyMDsgaSsrKQorCQkJCQl1ZGVsYXkoMTAwMCk7CisJCQl9CisJCX0gZWxzZSB7CisJCQkqZnBnYV9jdHJsICY9IH5DRkdfRlBHQV9DVFJMX0NGX0JVU19FTjsKKwkJCSpmcGdhX2N0cmwgfD0gQ0ZHX0ZQR0FfQ1RSTF9DRl9QV1JOOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CiAKIGludCBtaXNjX2luaXRfciAodm9pZCkKIHsKQEAgLTQzMyw5ICs0NzIsNiBAQAogCSAqIFdyaXRlIEJvYXJkIHJldmlzaW9uIGludG8gRlBHQQogCSAqLwogCSpmcGdhX2N0cmwgfD0gZ2QtPmJvYXJkX3R5cGUgJiAweDAwMDM7Ci0JaWYgKGdkLT5ib2FyZF90eXBlID49IDB4MDIwMCkgewotCQkqZnBnYV9jdHJsIHw9IENGR19GUEdBX0NUUkxfQ0ZfQlVTX0VOOwotCX0KIAogIAkvKgogCSAqIFNldHVwIGFuZCBlbmFibGUgRUVQUk9NIHdyaXRlIHByb3RlY3Rpb24KQEAgLTQ3MSw3ICs1MDcsNyBAQAogCQljb250cmFzdDAgPSBzaW1wbGVfc3RydG9sKHN0ciwgTlVMTCwgMTYpOwogCQlpZiAoY29udHJhc3QwID4gMjU1KSB7CiAJCQlwcmludGYoIkVSUk9SOiBjb250cmFzdDAgdmFsdWUgdG9vIGhpZ2ggKDB4JWx4KSFcbiIsIGNvbnRyYXN0MCk7Ci0JCQljb250cmFzdDAgPSAwOworCQkJY29udHJhc3QwID0gMHhmZmZmZmZmZjsKIAkJfQogCX0KIApAQCAtNTQ0LDkgKzU4MCw5IEBACiAJCSAqLwogCQkqZnBnYV9jdHJsIHw9IENGR19GUEdBX0NUUkxfVkdBMF9CTCB8IENGR19GUEdBX0NUUkxfVkdBMF9CTF9NT0RFOwogCQkvKgotCQkgKiBTZXQgbGNkIGNsb2NrIChzbWFsbCBlcHNvbikKKwkJICogU2V0IGxjZCBjbG9jayAoc21hbGwgZXBzb24pLCBlbmFibGUgMS13aXJlIGludGVyZmFjZQogCQkgKi8KLQkJKmZwZ2FfY3RybCB8PSBMQ0RfQ0xLXzA4MzMwOworCQkqZnBnYV9jdHJsIHw9IExDRF9DTEtfMDgzMzAgfCBDRkdfRlBHQV9DVFJMX09XX0VOQUJMRTsKIAogCQlsY2Rfc2V0dXAoMCwgMSk7CiAJCWxjZF9pbml0KCh1Y2hhciAqKUNGR19MQ0RfU01BTExfUkVHLCAodWNoYXIgKilDRkdfTENEX1NNQUxMX01FTSwKQEAgLTU2NSw4ICs2MDEsMTAgQEAKIAkJCXB1dHMoIlZHQTogICBTTTUwMSB3aXRoIDggTUIgIik7CiAJCQlpZiAoc3RyY21wKHN0ciwgInBwYzIyMSIpID09IDApIHsKIAkJCQlwcmludGYoIig4MDAqNjAwLCAlZGJwcClcbiIsIEJQUCk7CisJCQkJKmxjZF9iYWNrbGlnaHQgPSAweDAwMmQ7IC8qIG1heC4gYWxsb3dlZCBicmlnaHRuZXNzICovCiAJCQl9IGVsc2UgaWYgKHN0cmNtcChzdHIsICJwcGMyMzEiKSA9PSAwKSB7CiAJCQkJcHJpbnRmKCIoMTAyNCo3NjgsICVkYnBwKVxuIiwgQlBQKTsKKwkJCQkqbGNkX2JhY2tsaWdodCA9IDB4MDAwMDsKIAkJCX0gZWxzZSB7CiAJCQkJcHJpbnRmKCJVbnN1cHBvcnRlZCBiZF90eXBlIGRlZmluZWQgKCVzKSAtPiBObyBkaXNwbGF5IGNvbmZpZ3VyZWQhXG4iLCBzdHIpOwogCQkJCXJldHVybiAwOwpAQCAtNTc4LDYgKzYxNiw4IEBACiAjZW5kaWYgLyogQ09ORklHX1ZJREVPX1NNNTAxICovCiAJfQogCisJY2ZfZW5hYmxlKCk7CisKIAlyZXR1cm4gKDApOwogfQogCkBAIC01OTAsNyArNjMwLDcgQEAKIHsKIAlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIAotCXVuc2lnbmVkIGNoYXIgc3RyWzY0XTsKKwljaGFyIHN0cls2NF07CiAJaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKIAogCXB1dHMgKCJCb2FyZDogIik7CkBAIC02MDgsMTQgKzY0OCw3IEBACiAJfQogCiAJZ2QtPmJvYXJkX3R5cGUgPSBib2FyZF9yZXZpc2lvbigpOwotCXByaW50ZigiLCBSZXYgJWxkLiVsZClcbiIsCi0JICAgICAgIChnZC0+Ym9hcmRfdHlwZSA+PiA4KSAmIDB4ZmYsCi0JICAgICAgIGdkLT5ib2FyZF90eXBlICYgMHhmZik7Ci0KLQkvKgotCSAqIERpc2FibGUgc2xlZXAgbW9kZSBpbiBMWFQ5NzEKLQkgKi8KLQlseHQ5NzFfbm9fc2xlZXAoKTsKKwlwcmludGYoIiwgUmV2ICVsZC54KVxuIiwgZ2QtPmJvYXJkX3R5cGUpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC02MzcsMzUgKzY3MCwzNCBAQAogfQogCiAKLWludCB0ZXN0ZHJhbSAodm9pZCkKLXsKLQkvKiBUT0RPOiBYWFggWFhYIFhYWCAqLwotCXByaW50ZiAoInRlc3Q6IDE2IE1CIC0gb2tcbiIpOwotCi0JcmV0dXJuICgwKTsKLX0KLQotCiAjaWZkZWYgQ09ORklHX0lERV9SRVNFVAogdm9pZCBpZGVfc2V0X3Jlc2V0KGludCBvbikKIHsKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKwogCXZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICpmcGdhX21vZGUgPQogCQkodW5zaWduZWQgc2hvcnQgKikoKHVsb25nKUNGR19GUEdBX0JBU0VfQUREUiArIENGR19GUEdBX0NUUkwpOworCXZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICpmcGdhX3N0YXR1cyA9CisJCSh1bnNpZ25lZCBzaG9ydCAqKSgodWxvbmcpQ0ZHX0ZQR0FfQkFTRV9BRERSICsgQ0ZHX0ZQR0FfQ1RSTCArIDIpOwogCi0JLyoKLQkgKiBBc3NlcnQgb3IgZGVhc3NlcnQgQ29tcGFjdEZsYXNoIFJlc2V0IFBpbgotCSAqLwotCWlmIChvbikgewkJLyogYXNzZXJ0IFJFU0VUICovCi0JCSpmcGdhX21vZGUgJj0gfihDRkdfRlBHQV9DVFJMX0NGX1JFU0VUKTsKLQl9IGVsc2UgewkJLyogcmVsZWFzZSBSRVNFVCAqLwotCQkqZnBnYV9tb2RlIHw9IENGR19GUEdBX0NUUkxfQ0ZfUkVTRVQ7CisJaWYgKCgoZ2QtPmJvYXJkX3R5cGUgPj0gMikgJiYgKCpmcGdhX3N0YXR1cyAmIENGR19GUEdBX1NUQVRVU19DRl9ERVRFQ1QpKSB8fAorCSAgICAoZ2QtPmJvYXJkX3R5cGUgPCAyKSkgeworCQkvKgorCQkgKiBBc3NlcnQgb3IgZGVhc3NlcnQgQ29tcGFjdEZsYXNoIFJlc2V0IFBpbgorCQkgKi8KKwkJaWYgKG9uKSB7CQkvKiBhc3NlcnQgUkVTRVQgKi8KKwkJCWNmX2VuYWJsZSgpOworCQkJKmZwZ2FfbW9kZSAmPSB+KENGR19GUEdBX0NUUkxfQ0ZfUkVTRVQpOworCQl9IGVsc2UgewkJLyogcmVsZWFzZSBSRVNFVCAqLworCQkJKmZwZ2FfbW9kZSB8PSBDRkdfRlBHQV9DVFJMX0NGX1JFU0VUOworCQl9CiAJfQogfQogI2VuZGlmIC8qIENPTkZJR19JREVfUkVTRVQgKi8KIAogCiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKLSNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgogZXh0ZXJuIHN0cnVjdCBuYW5kX2NoaXAgbmFuZF9kZXZfZGVzY1tDRkdfTUFYX05BTkRfREVWSUNFXTsKIAogdm9pZCBuYW5kX2luaXQodm9pZCkKQEAgLTc3OCw4ICs4MTAsNyBAQAogCQkJc3RyY2F0KHN0ciwgIiAoTWlzc2luZyBiZF90eXBlISIpOwogCQl9CiAKLQkJc3ByaW50ZihzdHIyLCAiLCBSZXYgJWxkLiVsZCkiLAotCQkgICAgICAgKGdkLT5ib2FyZF90eXBlID4+IDgpICYgMHhmZiwgZ2QtPmJvYXJkX3R5cGUgJiAweGZmKTsKKwkJc3ByaW50ZihzdHIyLCAiLCBSZXYgJWxkLngpIiwgZ2QtPmJvYXJkX3R5cGUpOwogCQlzdHJjYXQoc3RyLCBzdHIyKTsKIAkJc3RyY3B5KGluZm8sIHN0cik7CiAJfSBlbHNlIHsKQEAgLTgyMiw3ICs4NTMsMTEgQEAKIAlkZXZidXNmbiA9IHBjaV9maW5kX2RldmljZShQQ0lfVkVORE9SX1NNLCBQQ0lfREVWSUNFX1NNNTAxLCAwKTsKIAlpZiAoZGV2YnVzZm4gIT0gLTEpIHsKIAkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldmJ1c2ZuLCBQQ0lfQkFTRV9BRERSRVNTXzAsICh1MzIgKikmYWRkcik7Ci0JCXJldHVybiAoYWRkciAmIDB4ZmZmZmZmZmUpOworCQlhZGRyICY9IDB4ZmZmZmZmZmU7CisjaWZkZWYgQ09ORklHX1ZJREVPX1NNNTAxX0ZCTUVNX09GRlNFVAorCQlhZGRyICs9IENPTkZJR19WSURFT19TTTUwMV9GQk1FTV9PRkZTRVQ7CisjZW5kaWYKKwkJcmV0dXJuIGFkZHI7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC04NzUsMyArOTEwLDE1IEBACiB9CiAKICNlbmRpZiAvKiBDT05GSUdfVklERU9fU001MDEgKi8KKworCit2b2lkIHJlc2V0X3BoeSh2b2lkKQoreworI2lmZGVmIENPTkZJR19MWFQ5NzFfTk9fU0xFRVAKKworCS8qCisJICogRGlzYWJsZSBzbGVlcCBtb2RlIGluIExYVDk3MQorCSAqLworCWx4dDk3MV9ub19zbGVlcCgpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvaHViNDA1L2NvbmZpZy5tayBiL2JvYXJkL2VzZC9odWI0MDUvY29uZmlnLm1rCmluZGV4IGE2ZDMxYWEuLjRjNjBjMzUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9odWI0MDUvY29uZmlnLm1rCisrKyBiL2JvYXJkL2VzZC9odWI0MDUvY29uZmlnLm1rCkBAIC0yNiwzICsyNiw2IEBACiAjCiAKIFRFWFRfQkFTRSA9IDB4RkZGQzAwMDAKKworIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQorQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvaHViNDA1L2h1YjQwNS5jIGIvYm9hcmQvZXNkL2h1YjQwNS9odWI0MDUuYwppbmRleCBlNzdkYmE4Li4wYzY3NzFmIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvaHViNDA1L2h1YjQwNS5jCisrKyBiL2JvYXJkL2VzZC9odWI0MDUvaHViNDA1LmMKQEAgLTI2NSw3ICsyNjUsNyBAQAogCiAKICNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQotI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL25hbmRfbGVnYWN5Lmg+CiBleHRlcm4gc3RydWN0IG5hbmRfY2hpcCBuYW5kX2Rldl9kZXNjW0NGR19NQVhfTkFORF9ERVZJQ0VdOwogCiB2b2lkIG5hbmRfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3BsdTQwNS9jb25maWcubWsgYi9ib2FyZC9lc2QvcGx1NDA1L2NvbmZpZy5tawppbmRleCAyNWIyMTA1Li45MTZiMjg1IDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvcGx1NDA1L2NvbmZpZy5taworKysgYi9ib2FyZC9lc2QvcGx1NDA1L2NvbmZpZy5tawpAQCAtMjcsMyArMjcsNiBAQAogCiBURVhUX0JBU0UgPSAweEZGRkMwMDAwCiAjVEVYVF9CQVNFID0gMHgwMEZDMDAwMAorCisjIENvbXBpbGUgdGhlIGxlZ2FjeSBOQU5EIGNvZGUgKENGR19OQU5EX0xFR0FDWSBtdXN0IGJlIGRlZmluZWQpCitCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9wbHU0MDUvcGx1NDA1LmMgYi9ib2FyZC9lc2QvcGx1NDA1L3BsdTQwNS5jCmluZGV4IDViOWQwNjMuLjM3YjkyZmIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9wbHU0MDUvcGx1NDA1LmMKKysrIGIvYm9hcmQvZXNkL3BsdTQwNS9wbHU0MDUuYwpAQCAtMjY5LDcgKzI2OSw3IEBACiAKIAogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCi0jaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZF9sZWdhY3kuaD4KIGV4dGVybiBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbQ0ZHX01BWF9OQU5EX0RFVklDRV07CiAKIHZvaWQgbmFuZF9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvcG1jNDA1L01ha2VmaWxlIGIvYm9hcmQvZXNkL3BtYzQwNS9NYWtlZmlsZQppbmRleCAxMjgxYmU3Li43NDFlNGFhIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvcG1jNDA1L01ha2VmaWxlCisrKyBiL2JvYXJkL2VzZC9wbWM0MDUvTWFrZWZpbGUKQEAgLTMwLDcgKzMwLDcgQEAKIAkgIC4uL2NvbW1vbi94aWxpbnhfanRhZy9taWNyby5vIFwKIAkgIC4uL2NvbW1vbi94aWxpbnhfanRhZy9wb3J0cy5vCiAKLU9CSlMJPSAkKEJPQVJEKS5vIC4uL2NvbW1vbi9taXNjLm8gJChDUExEKQorT0JKUwk9ICQoQk9BUkQpLm8gLi4vY29tbW9uL21pc2MubyAuLi9jb21tb24vY21kX2xvYWRwY2kubyAkKENQTEQpCiAKICQoTElCKToJJChPQkpTKSAkKFNPQkpTKQogCSQoQVIpIGNydiAkQCAkKE9CSlMpCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvcG1jNDA1L3BtYzQwNS5jIGIvYm9hcmQvZXNkL3BtYzQwNS9wbWM0MDUuYwppbmRleCAzM2I1Zjc3Li5mOWU0ZDQzIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvcG1jNDA1L3BtYzQwNS5jCisrKyBiL2JvYXJkL2VzZC9wbWM0MDUvcG1jNDA1LmMKQEAgLTEsNiArMSw5IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDAxLTIwMDMKLSAqIFN0ZWZhbiBSb2VzZSwgZXNkIGdtYmggZ2VybWFueSwgc3RlZmFuLnJvZXNlQGVzZC1lbGVjdHJvbmljcy5jb20KKyAqIFN0ZWZhbiBSb2VzZSwgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgc3JAZGVueC5kZS4KKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDUKKyAqIE1hdHRoaWFzIEZ1Y2hzLCBlc2QgZ21iaCBnZXJtYW55LCBtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tCiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC02NiwxNiArNjksMjcgQEAKIAltdGViYyAoZXBjciwgMHhhODQwMDAwMCk7CiAKIAkvKgotCSAqIFNldHVwIEdQSU8gcGlucyAoQ1M2K0NTNyBhcyBHUElPKQorCSAqIFNldHVwIEdQSU8gcGlucwogCSAqLwotCW10ZGNyKGNudHJsMCwgbWZkY3IoY250cmwwKSB8IDB4MDAzMDAwMDApOwogCi0JLyoKLQkgKiBDb25maWd1cmUgR1BJTyBwaW5zCisJbXRkY3IoY250cmwwLCBtZmRjcihjbnRybDApIHwgKChDRkdfRlBHQV9JTklUIHwgXAorCQkJCQlDRkdfRlBHQV9ET05FIHwgXAorCQkJCQlDRkdfWEVSRUFEWSB8IFwKKwkJCQkJQ0ZHX05PTk1PTkFSQ0ggfCBcCisJCQkJCUNGR19SRVYxXzIpIDw8IDUpKTsKKworCWlmICghKGluMzIoR1BJTzBfSVIpICYgQ0ZHX1JFVjFfMikpIHsKKwkJLyogcmV2IDEuMiBib2FyZHMgKi8KKwkJbXRkY3IoY250cmwwLCBtZmRjcihjbnRybDApIHwgKChDRkdfSU5UQV9GQUtFIHwgXAorCQkJCQkJQ0ZHX1NFTEZfUlNUKSA8PCA1KSk7CisJfQorCisJb3V0MzIoR1BJTzBfT1IsIDApOworCW91dDMyKEdQSU8wX1RDUiwgQ0ZHX0ZQR0FfUFJHIHwgQ0ZHX0ZQR0FfQ0xLIHwgQ0ZHX0ZQR0FfREFUQSB8IENGR19YRVJFQURZKTsgLyogc2V0dXAgZm9yIG91dHB1dCAqLworCisJLyogLSBjaGVjayBpZiByZXYxXzIgaXMgbG93LCB0aGVuOgorCSAqIC0gc2V0L3Jlc2V0IENGR19JTlRBX0ZBS0UvQ0ZHX1NFTEZfUlNUIGluIFRDUiB0byBhc3NlcnQgSU5UQSMgb3IgU0VMRlJTVCMKIAkgKi8KLQlvdXQzMihHUElPMF9PRFIsIDB4MDAwMDAwMDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gb3BlbiBkcmFpbiBwaW5zICovCi0Jb3V0MzIoR1BJTzBfVENSLCBDRkdfRlBHQV9QUkcgfCBDRkdfRlBHQV9DTEsgfCBDRkdfRlBHQV9EQVRBKTsgLyogc2V0dXAgZm9yIG91dHB1dCAqLwotCW91dDMyKEdQSU8wX09SLCAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dHMgLT4gbG93ICAgKi8KIAogCXJldHVybiAwOwogfQpAQCAtODMsMTEgKzk3LDYgQEAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1pbnQgbWlzY19pbml0X2YgKHZvaWQpCi17Ci0JcmV0dXJuIDA7ICAvKiBkdW1teSBpbXBsZW1lbnRhdGlvbiAqLwotfQotCiAKIGludCBtaXNjX2luaXRfciAodm9pZCkKIHsKQEAgLTk3LDE2ICsxMDYsMzAgQEAKIAlnZC0+YmQtPmJpX2ZsYXNoc3RhcnQgPSAwIC0gZ2QtPmJkLT5iaV9mbGFzaHNpemU7CiAJZ2QtPmJkLT5iaV9mbGFzaG9mZnNldCA9IDA7CiAKKwlvdXQzMihHUElPMF9PUiwgaW4zMihHUElPMF9PUikgfCBDRkdfWEVSRUFEWSk7IC8qIGRlYXNzZXJ0IEVSRUFEWSMgKi8KIAlyZXR1cm4gKDApOwogfQogCit1c2hvcnQgcG1jNDA1X3BjaV9zdWJzeXNfZGV2aWNlaWQodm9pZCkKK3sKKwl1bG9uZyB2YWw7CisJdmFsID0gaW4zMihHUElPMF9JUik7CisJaWYgKCEodmFsICYgQ0ZHX1JFVjFfMikpIHsgLyogbG93PXJldjEuMiAqLworCQlpZiAodmFsICYgQ0ZHX05PTk1PTkFSQ0gpIHsgLyogbW9uYXJjaCMgc2lnbmFsICovCisJCQlyZXR1cm4gQ0ZHX1BDSV9TVUJTWVNfREVWSUNFSURfTk9OTU9OQVJDSDsKKwkJfQorCQlyZXR1cm4gQ0ZHX1BDSV9TVUJTWVNfREVWSUNFSURfTU9OQVJDSDsKKwl9CisJcmV0dXJuIENGR19QQ0lfU1VCU1lTX0RFVklDRUlEX05PTk1PTkFSQ0g7Cit9CiAKIC8qCiAgKiBDaGVjayBCb2FyZCBJZGVudGl0eToKICAqLwotCiBpbnQgY2hlY2tib2FyZCAodm9pZCkKIHsKKwl1bG9uZyB2YWw7CisKIAljaGFyIHN0cls2NF07CiAJaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKIApAQCAtMTE4LDEyICsxNDEsMTggQEAKIAkJcHV0cyhzdHIpOwogCX0KIAotCXB1dGMgKCdcbicpOworCXZhbCA9IGluMzIoR1BJTzBfSVIpOworCWlmICghKHZhbCAmIENGR19SRVYxXzIpKSB7IC8qIGxvdz1yZXYxLjIgKi8KKwkJcHV0cygiIHJldjEuMiAoIik7CisJCWlmICh2YWwgJiBDRkdfTk9OTU9OQVJDSCkgeyAvKiBtb25hcmNoIyBzaWduYWwgKi8KKwkJCXB1dHMoIm5vbi0iKTsKKwkJfQorCQlwdXRzKCJtb25hcmNoKSIpOworCX0gZWxzZSB7CisJCXB1dHMoIiA8PXJldjEuMSIpOworCX0KIAotCS8qCi0JICogRGlzYWJsZSBzbGVlcCBtb2RlIGluIExYVDk3MQotCSAqLwotCWx4dDk3MV9ub19zbGVlcCgpOworCXB1dGMgKCdcbicpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNDUsMTcgKzE3NCwxOSBAQAogCXJldHVybiAoNCoxMDI0KjEwMjQgPDwgKCh2YWwgJiAweDAwMGUwMDAwKSA+PiAxNykpOwogfQogCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLWludCB0ZXN0ZHJhbSAodm9pZCkKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KK3ZvaWQgcmVzZXRfcGh5KHZvaWQpCiB7Ci0JLyogVE9ETzogWFhYIFhYWCBYWFggKi8KLQlwcmludGYgKCJ0ZXN0OiAxNiBNQiAtIG9rXG4iKTsKKyNpZmRlZiBDT05GSUdfTFhUOTcxX05PX1NMRUVQCiAKLQlyZXR1cm4gKDApOworCS8qCisJICogRGlzYWJsZSBzbGVlcCBtb2RlIGluIExYVDk3MQorCSAqLworCWx4dDk3MV9ub19zbGVlcCgpOworI2VuZGlmCiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogaW50IGRvX2NhbnRlc3QoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2Qvdm9oNDA1L2NvbmZpZy5tayBiL2JvYXJkL2VzZC92b2g0MDUvY29uZmlnLm1rCmluZGV4IDIxOWE0ZWIuLjcyZTgxMDMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC92b2g0MDUvY29uZmlnLm1rCisrKyBiL2JvYXJkL2VzZC92b2g0MDUvY29uZmlnLm1rCkBAIC0yNiwzICsyNiw2IEBACiAjCiAKIFRFWFRfQkFTRSA9IDB4RkZGODAwMDAKKworIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQorQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCmRpZmYgLS1naXQgYS9ib2FyZC9lc2Qvdm9oNDA1L3ZvaDQwNS5jIGIvYm9hcmQvZXNkL3ZvaDQwNS92b2g0MDUuYwppbmRleCBlZGEzZmQ5Li4yMjk5NWI1IDEwMDY0NAotLS0gYS9ib2FyZC9lc2Qvdm9oNDA1L3ZvaDQwNS5jCisrKyBiL2JvYXJkL2VzZC92b2g0MDUvdm9oNDA1LmMKQEAgLTM0Myw3ICszNDMsNyBAQAogCiAKICNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQotI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL25hbmRfbGVnYWN5Lmg+CiBleHRlcm4gc3RydWN0IG5hbmRfY2hpcCBuYW5kX2Rldl9kZXNjW0NGR19NQVhfTkFORF9ERVZJQ0VdOwogCiB2b2lkIG5hbmRfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3ZvbTQwNS92b200MDUuYyBiL2JvYXJkL2VzZC92b200MDUvdm9tNDA1LmMKaW5kZXggNDQ1YjhmYy4uYmM1ZmE3YyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3ZvbTQwNS92b200MDUuYworKysgYi9ib2FyZC9lc2Qvdm9tNDA1L3ZvbTQwNS5jCkBAIC05Nyw3ICs5Nyw3IEBACiAKIGludCBjaGVja2JvYXJkICh2b2lkKQogewotCXVuc2lnbmVkIGNoYXIgc3RyWzY0XTsKKwljaGFyIHN0cls2NF07CiAJaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKIAlpbnQgZmxhc2hjbnQ7CiAJaW50IGRlbGF5OwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3d1aDQwNS9jb25maWcubWsgYi9ib2FyZC9lc2Qvd3VoNDA1L2NvbmZpZy5tawppbmRleCAxZDc0M2E5Li4zY2Y1ZGQ4IDEwMDY0NAotLS0gYS9ib2FyZC9lc2Qvd3VoNDA1L2NvbmZpZy5taworKysgYi9ib2FyZC9lc2Qvd3VoNDA1L2NvbmZpZy5tawpAQCAtMjYsMyArMjYsNiBAQAogIwogCiBURVhUX0JBU0UgPSAweEZGRkMwMDAwCisKKyMgQ29tcGlsZSB0aGUgbGVnYWN5IE5BTkQgY29kZSAoQ0ZHX05BTkRfTEVHQUNZIG11c3QgYmUgZGVmaW5lZCkKK0JPQVJETElCUyA9IGRyaXZlcnMvbmFuZF9sZWdhY3kvbGlibmFuZF9sZWdhY3kuYQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3d1aDQwNS93dWg0MDUuYyBiL2JvYXJkL2VzZC93dWg0MDUvd3VoNDA1LmMKaW5kZXggZGIyNDEyMi4uNWExYTNmMyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3d1aDQwNS93dWg0MDUuYworKysgYi9ib2FyZC9lc2Qvd3VoNDA1L3d1aDQwNS5jCkBAIC0yMzksNyArMjM5LDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCi0jaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZF9sZWdhY3kuaD4KIGV4dGVybiBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbQ0ZHX01BWF9OQU5EX0RFVklDRV07CiAKIHZvaWQgbmFuZF9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9ib2FyZC9lemtpdDUzMy9NYWtlZmlsZSBiL2JvYXJkL2V6a2l0NTMzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YjNjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9lemtpdDUzMy9NYWtlZmlsZQpAQCAtMCwwICsxLDQ0IEBACisjCisjIFUtYm9vdCAtIE1ha2VmaWxlCisjCisjIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworIworIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCitpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKKworTElCCT0gbGliJChCT0FSRCkuYQorCitPQkpTCT0gJChCT0FSRCkubyBmbGFzaC5vIGV6a2l0NTMzLm8KKworJChMSUIpOgkuZGVwZW5kICQoT0JKUykKKwkkKEFSKSBjcnYgJEAgJChPQkpTKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKy5kZXBlbmQ6CU1ha2VmaWxlICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykKKwkJJChDQykgLU0gJChDRkxBR1MpICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykgPiAkQAorCitzaW5jbHVkZSAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2JvYXJkL2V6a2l0NTMzL2NvbmZpZy5tayBiL2JvYXJkL2V6a2l0NTMzL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmM5Zjk5Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZXpraXQ1MzMvY29uZmlnLm1rCkBAIC0wLDAgKzEsMjUgQEAKKyMKKyMgKEMpIENvcHlyaWdodCAyMDAxCisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK1RFWFRfQkFTRSA9IDB4MDFGQzAwMDAKK1BMQVRGT1JNX0NQUEZMQUdTICs9IC1JJChUT1BESVIpCmRpZmYgLS1naXQgYS9ib2FyZC9lemtpdDUzMy9lemtpdDUzMy5jIGIvYm9hcmQvZXpraXQ1MzMvZXpraXQ1MzMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGVlOTAwCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZXpraXQ1MzMvZXpraXQ1MzMuYwpAQCAtMCwwICsxLDcxIEBACisvKgorICogVS1ib290IC0gZXpraXQ1MzMuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpZiBkZWZpbmVkKENPTkZJR19NSVNDX0lOSVRfUikKKyNpbmNsdWRlICJwc2Q0MjU2LmgiCisjZW5kaWYKKworaW50IGNoZWNrYm9hcmQodm9pZCkKK3sKKwlwcmludGYoIkNQVTogICBBRFNQIEJGNTMzIFJldi46IDAuJWRcbiIsICpwQ0hJUElEID4+IDI4KTsKKwlwcmludGYoIkJvYXJkOiBBREkgQkY1MzMgRVotS2l0IExpdGUgYm9hcmRcbiIpOworCXByaW50ZigiICAgICAgIFN1cHBvcnQ6IGh0dHA6Ly9ibGFja2Zpbi51Y2xpbnV4Lm9yZy9cbiIpOworCXByaW50ZigiICAgICAgIFJpY2hhcmQgS2xpbmdsZXIgPHJpY2hhcmRAdWNsaW51eC5uZXQ+XG4iKTsKKwlyZXR1cm4gMDsKK30KKworbG9uZyBpbnQgaW5pdGRyYW0oaW50IGJvYXJkX3R5cGUpCit7CisJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisjaWZkZWYgREVCVUcKKwlpbnQgYnJhdGU7CisJY2hhciAqdG1wID0gZ2V0ZW52KCJiYXVkcmF0ZSIpOworCWJyYXRlID0gc2ltcGxlX3N0cnRvdWwodG1wLCBOVUxMLCAxNik7CisJcHJpbnRmKCJTZXJpYWwgUG9ydCBpbml0aWFsaXplZCB3aXRoIEJhdWQgcmF0ZSA9ICV4XG4iLGJyYXRlKTsKKwlwcmludGYoIlNEUkFNIGF0dHJpYnV0ZXM6XG4iKTsKKwlwcmludGYoInRSQ0QgJWQgU0NMSyBDeWNsZXMsdFJQICVkIFNDTEsgQ3ljbGVzLHRSQVMgJWQgU0NMSyBDeWNsZXMiCisJICAgICAgICJ0V1IgJWQgU0NMSyBDeWNsZXMsQ0FTIExhdGVuY3kgJWQgU0NMSyBjeWNsZXMgXG4iLAorCSAgICAgICAzLCAzLCA2LCAyLCAzKTsKKwlwcmludGYoIlNEUkFNIEJlZ2luOiAweCV4XG4iLCBDRkdfU0RSQU1fQkFTRSk7CisJcHJpbnRmKCJCYW5rIHNpemUgPSAlZCBNQlxuIiwgQ0ZHX01BWF9SQU1fU0laRSA+PiAyMCk7CisjZW5kaWYKKwlnZC0+YmQtPmJpX21lbXN0YXJ0ID0gQ0ZHX1NEUkFNX0JBU0U7CisJZ2QtPmJkLT5iaV9tZW1zaXplID0gQ0ZHX01BWF9SQU1fU0laRTsKKwlyZXR1cm4gQ0ZHX01BWF9SQU1fU0laRTsKK30KKworI2lmIGRlZmluZWQoQ09ORklHX01JU0NfSU5JVF9SKQorLyogbWlzY2VsbGFuZW91cyBwbGF0Zm9ybSBkZXBlbmRlbnQgaW5pdGlhbGlzYXRpb25zICovCitpbnQgbWlzY19pbml0X3Iodm9pZCkKK3sKKwkvKiBTZXQgZGlyZWN0aW9uIGJpdHMgZm9yIFZpZGVvIGVuL2RlY29kZXIgcmVzZXQgYXMgb3V0cHV0CSovCisJKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopKENGR19GTEFTSDFfQkFTRSArIFBTRF9QT1JUQV9ESVIpID0gUFNEQV9WREVDX1JTVCB8IFBTREFfVkVOQ19SU1Q7CisJLyogRGVhY3RpdmF0ZSBWaWRlbyBlbi9kZWNvZGVyIHJlc2V0IGxpbmVzCQkJKi8KKwkqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikoQ0ZHX0ZMQVNIMV9CQVNFICsgUFNEX1BPUlRBX0RPVVQpID0gUFNEQV9WREVDX1JTVCB8IFBTREFfVkVOQ19SU1Q7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL2V6a2l0NTMzL2ZsYXNoLWRlZmluZXMuaCBiL2JvYXJkL2V6a2l0NTMzL2ZsYXNoLWRlZmluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjlkZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZXpraXQ1MzMvZmxhc2gtZGVmaW5lcy5oCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogVS1ib290IC0gZmxhc2gtZGVmaW5lcy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0ZMQVNIREVGSU5FU19IX18KKyNkZWZpbmUgX19GTEFTSERFRklORVNfSF9fCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2RlZmluZSBWX1VMT05HKGEpCQkoKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKCBhICkpCisjZGVmaW5lIFZfQllURShhKQkJKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSggYSApKQorI2RlZmluZSBUUlVFCQkJMHgxCisjZGVmaW5lIEZBTFNFCQkJMHgwCisjZGVmaW5lIEJVRkZFUl9TSVpFCQkweDgwMDAwCisjZGVmaW5lIE5PX0NPTU1BTkQJCTAKKyNkZWZpbmUgR0VUX0NPREVTCQkxCisjZGVmaW5lIFJFU0VUCQkJMgorI2RlZmluZSBXUklURQkJCTMKKyNkZWZpbmUgRklMTAkJCTQKKyNkZWZpbmUgRVJBU0VfQUxMCQk1CisjZGVmaW5lIEVSQVNFX1NFQ1QJCTYKKyNkZWZpbmUgUkVBRAkJCTcKKyNkZWZpbmUgR0VUX1NFQ1ROVU0JCTgKKyNkZWZpbmUgRkxBU0hfU1RBUlRfTCAJCTB4MDAwMAorI2RlZmluZSBGTEFTSF9TVEFSVF9IIAkJMHgyMDAwCisjZGVmaW5lIEZMQVNIX1RPVF9TRUNUCQk0MAorI2RlZmluZSBGTEFTSF9TSVpFIAkJMHgyMjAwMDAKKyNkZWZpbmUgRkxBU0hfTUFOX1NUIAkJMgorI2RlZmluZSBDRkdfRkxBU0gwX0JBU0UJCTB4MjAwMDAwMDAKKyNkZWZpbmUgUkVTRVRfVkFMCQkweEYwCisKKworYXNtKCIjZGVmaW5lIEZMQVNIX1NUQVJUX0wgMHgwMDAwIik7Cithc20oIiNkZWZpbmUgRkxBU0hfU1RBUlRfSCAweDIwMDAiKTsKKworZmxhc2hfaW5mb190IGZsYXNoX2luZm9bQ0ZHX01BWF9GTEFTSF9CQU5LU107CisKK2ludCBnZXRfY29kZXModm9pZCk7CitpbnQgcG9sbF90b2dnbGVfYml0KGxvbmcgbE9mZnNldCk7Cit2b2lkIHJlc2V0X2ZsYXNoKHZvaWQpOworaW50IGVyYXNlX2ZsYXNoKHZvaWQpOworaW50IGVyYXNlX2Jsb2NrX2ZsYXNoKGludCx1bnNpZ25lZCBsb25nKTsKK3ZvaWQgdW5sb2NrX2ZsYXNoKGxvbmcgbE9mZnNldCk7CitpbnQgd3JpdGVfZGF0YShsb25nIGxTdGFydCwgbG9uZyBsQ291bnQsIGxvbmcgbFN0cmlkZSwgaW50ICpwbkRhdGEpOworaW50IEZpbGxEYXRhKGxvbmcgbFN0YXJ0LCBsb25nIGxDb3VudCwgbG9uZyBsU3RyaWRlLCBpbnQgKnBuRGF0YSk7CitpbnQgcmVhZF9kYXRhKGxvbmcgbFN0YXJ0LCBsb25nIGxDb3VudCwgbG9uZyBsU3RyaWRlLCBpbnQgKnBuRGF0YSk7CitpbnQgcmVhZF9mbGFzaChsb25nIG5PZmZzZXQsIGludCAqcG5WYWx1ZSk7CitpbnQgd3JpdGVfZmxhc2gobG9uZyBuT2Zmc2V0LCBpbnQgblZhbHVlKTsKK3ZvaWQgZ2V0X3NlY3Rvcl9udW1iZXIobG9uZyBsT2Zmc2V0LCBpbnQgKnBuU2VjdG9yKTsKK2ludCBHZXRTZWN0b3JQcm90ZWN0aW9uU3RhdHVzKGZsYXNoX2luZm9fdCAqIGluZm8sIGludCBuU2VjdG9yKTsKK2ludCBHZXRPZmZzZXQoaW50IG5CbG9jayk7CitpbnQgQUZQX051bVNlY3RvcnMgPSA0MDsKK2xvbmcgQUZQX1NlY3RvclNpemUxID0gMHgxMDAwMDsKK2ludCBBRlBfU2VjdG9yU2l6ZTIgPSAweDQwMDA7CisKKyNkZWZpbmUgV1JJVEVTRVExCQkweDBBQUEKKyNkZWZpbmUgV1JJVEVTRVEyCQkweDA1NTQKKyNkZWZpbmUgV1JJVEVTRVEzCQkweDBBQUEKKyNkZWZpbmUgV1JJVEVTRVE0CQkweDBBQUEKKyNkZWZpbmUgV1JJVEVTRVE1CQkweDA1NTQKKyNkZWZpbmUgV1JJVEVTRVE2CQkweDBBQUEKKyNkZWZpbmUgV1JJVEVEQVRBMQkJMHhhYQorI2RlZmluZSBXUklURURBVEEyCQkweDU1CisjZGVmaW5lIFdSSVRFREFUQTMJCTB4ODAKKyNkZWZpbmUgV1JJVEVEQVRBNAkJMHhhYQorI2RlZmluZSBXUklURURBVEE1CQkweDU1CisjZGVmaW5lIFdSSVRFREFUQTYJCTB4MTAKKyNkZWZpbmUgUHJpRmxhc2hBQmVnaW4JCTAKKyNkZWZpbmUgU2VjRmxhc2hBQmVnaW4JCTMyCisjZGVmaW5lIFNlY0ZsYXNoQkJlZ2luCQkzNgorI2RlZmluZSBQcmlGbGFzaEFPZmYJCTB4MAorI2RlZmluZSBQcmlGbGFzaEJPZmYJCTB4MTAwMDAwCisjZGVmaW5lIFNlY0ZsYXNoQU9mZgkJMHgyMDAwMDAKKyNkZWZpbmUgU2VjRmxhc2hCT2ZmCQkweDI4MDAwMAorI2RlZmluZSBJTlZBTElETE9DTlNUQVJUCTB4MjAyNzAwMDAKKyNkZWZpbmUgSU5WQUxJRExPQ05FTkQJCTB4MjAyODAwMDAKKyNkZWZpbmUgQmxvY2tFcmFzZVZhbAkJMHgzMAorI2RlZmluZSBVTkxPQ0tEQVRBMQkJMHhhYQorI2RlZmluZSBVTkxPQ0tEQVRBMgkJMHg1NQorI2RlZmluZSBVTkxPQ0tEQVRBMwkJMHhhMAorI2RlZmluZSBHRVRDT0RFREFUQTEJCTB4YWEKKyNkZWZpbmUgR0VUQ09ERURBVEEyCQkweDU1CisjZGVmaW5lIEdFVENPREVEQVRBMwkJMHg5MAorI2RlZmluZSBTZWNGbGFzaEFTZWMxT2ZmCTB4MjAwMDAwCisjZGVmaW5lIFNlY0ZsYXNoQVNlYzJPZmYJMHgyMDQwMDAKKyNkZWZpbmUgU2VjRmxhc2hBU2VjM09mZgkweDIwNjAwMAorI2RlZmluZSBTZWNGbGFzaEFTZWM0T2ZmCTB4MjA4MDAwCisjZGVmaW5lIFNlY0ZsYXNoQUVuZE9mZgkJMHgyMTAwMDAKKyNkZWZpbmUgU2VjRmxhc2hCU2VjMU9mZgkweDI4MDAwMAorI2RlZmluZSBTZWNGbGFzaEJTZWMyT2ZmCTB4Mjg0MDAwCisjZGVmaW5lIFNlY0ZsYXNoQlNlYzNPZmYJMHgyODYwMDAKKyNkZWZpbmUgU2VjRmxhc2hCU2VjNE9mZgkweDI4ODAwMAorI2RlZmluZSBTZWNGbGFzaEJFbmRPZmYJCTB4MjkwMDAwCisKKyNkZWZpbmUgU0VDVDMyCQkJMzIKKyNkZWZpbmUgU0VDVDMzCQkJMzMKKyNkZWZpbmUgU0VDVDM0CQkJMzQKKyNkZWZpbmUgU0VDVDM1CQkJMzUKKyNkZWZpbmUgU0VDVDM2CQkJMzYKKyNkZWZpbmUgU0VDVDM3CQkJMzcKKyNkZWZpbmUgU0VDVDM4CQkJMzgKKyNkZWZpbmUgU0VDVDM5CQkJMzkKKworI2RlZmluZSBGTEFTSF9TVUNDRVNTCTAKKyNkZWZpbmUgRkxBU0hfRkFJTAktMQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL2V6a2l0NTMzL2ZsYXNoLmMgYi9ib2FyZC9lemtpdDUzMy9mbGFzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYTA3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9lemtpdDUzMy9mbGFzaC5jCkBAIC0wLDAgKzEsNDc2IEBACisvKgorICogVS1ib290IC0gZmxhc2guYyBGbGFzaCBkcml2ZXIgZm9yIFBTRDQyNTZHVgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICogVGhpcyBmaWxlIGlzIGJhc2VkIG9uIEJGNTMzRXpGbGFzaC5jIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBBbmFsb2cgRGV2aWNlcywgSW5jLgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlICJmbGFzaC1kZWZpbmVzLmgiCisKK3ZvaWQgZmxhc2hfcmVzZXQodm9pZCkKK3sKKwlyZXNldF9mbGFzaCgpOworfQorCit1bnNpZ25lZCBsb25nIGZsYXNoX2dldF9zaXplKHVsb25nIGJhc2VhZGRyLCBmbGFzaF9pbmZvX3QgKiBpbmZvLAorCQkJICAgICBpbnQgYmFua19mbGFnKQoreworCWludCBpZCA9IDAsIGkgPSAwOworCXN0YXRpYyBpbnQgRmxhZ0RldiA9IDE7CisKKwlpZCA9IGdldF9jb2RlcygpOworCWlmKEZsYWdEZXYpCXsKKyNpZmRlZiBERUJVRworCQlwcmludGYoIkRldmljZSBJRCBvZiB0aGUgRmxhc2ggaXMgJXhcbiIsIGlkKTsKKyNlbmRpZgorCQlGbGFnRGV2ID0gMDsKKwl9CisJaW5mby0+Zmxhc2hfaWQgPSBpZDsKKworCXN3aXRjaCAoYmFua19mbGFnKSB7CisJY2FzZSAwOgorCQlmb3IgKGkgPSBQcmlGbGFzaEFCZWdpbjsgaSA8IFNlY0ZsYXNoQUJlZ2luOyBpKyspCisJCQlpbmZvLT5zdGFydFtpXSA9IChiYXNlYWRkciArIChpICogQUZQX1NlY3RvclNpemUxKSk7CisJCWluZm8tPnNpemUgPSAweDIwMDAwMDsKKwkJaW5mby0+c2VjdG9yX2NvdW50ID0gMzI7CisJCWJyZWFrOworCWNhc2UgMToKKwkJaW5mby0+c3RhcnRbMF0gPSBiYXNlYWRkciArIFNlY0ZsYXNoQVNlYzFPZmY7CisJCWluZm8tPnN0YXJ0WzFdID0gYmFzZWFkZHIgKyBTZWNGbGFzaEFTZWMyT2ZmOworCQlpbmZvLT5zdGFydFsyXSA9IGJhc2VhZGRyICsgU2VjRmxhc2hBU2VjM09mZjsKKwkJaW5mby0+c3RhcnRbM10gPSBiYXNlYWRkciArIFNlY0ZsYXNoQVNlYzRPZmY7CisJCWluZm8tPnNpemUgPSAweDEwMDAwOworCQlpbmZvLT5zZWN0b3JfY291bnQgPSA0OworCQlicmVhazsKKwljYXNlIDI6CisJCWluZm8tPnN0YXJ0WzBdID0gYmFzZWFkZHIgKyBTZWNGbGFzaEJTZWMxT2ZmOworCQlpbmZvLT5zdGFydFsxXSA9IGJhc2VhZGRyICsgU2VjRmxhc2hCU2VjMk9mZjsKKwkJaW5mby0+c3RhcnRbMl0gPSBiYXNlYWRkciArIFNlY0ZsYXNoQlNlYzNPZmY7CisJCWluZm8tPnN0YXJ0WzNdID0gYmFzZWFkZHIgKyBTZWNGbGFzaEJTZWM0T2ZmOworCQlpbmZvLT5zaXplID0gMHgxMDAwMDsKKwkJaW5mby0+c2VjdG9yX2NvdW50ID0gNDsKKwkJYnJlYWs7CisJfQorCXJldHVybiAoaW5mby0+c2l6ZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgZmxhc2hfaW5pdCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgc2l6ZV9iMCwgc2l6ZV9iMSwgc2l6ZV9iMjsKKwlpbnQgaTsKKworCXNpemVfYjAgPSBzaXplX2IxID0gc2l6ZV9iMiA9IDA7CisjaWZkZWYgREVCVUcKKwlwcmludGYoIkZsYXNoIE1lbW9yeSBTdGFydCAweCV4XG4iLCBDRkdfRkxBU0hfQkFTRSk7CisJcHJpbnRmKCJNZW1vcnkgTWFwIGZvciB0aGUgRmxhc2hcbiIpOworCXByaW50ZigiMHgyMDAwMDAwMCAtIDB4MjAwRkZGRkYgRmxhc2ggQSBQcmltYXJ5ICgxTUIpXG4iKTsKKwlwcmludGYoIjB4MjAxMDAwMDAgLSAweDIwMUZGRkZGIEZsYXNoIEIgUHJpbWFyeSAoMU1CKVxuIik7CisJcHJpbnRmKCIweDIwMjAwMDAwIC0gMHgyMDIwRkZGRiBGbGFzaCBBIFNlY29uZGFyeSAoNjRLQilcbiIpOworCXByaW50ZigiMHgyMDI4MDAwMCAtIDB4MjAyOEZGRkYgRmxhc2ggQiBTZWNvbmRhcnkgKDY0S0IpXG4iKTsKKwlwcmludGYoIlBsZWFzZSB0eXBlIGNvbW1hbmQgZmxpbmZvIGZvciBpbmZvcm1hdGlvbiBvbiBTZWN0b3JzIFxuIik7CisjZW5kaWYKKwlmb3IgKGkgPSAwOyBpIDwgQ0ZHX01BWF9GTEFTSF9CQU5LUzsgKytpKSB7CisJCWZsYXNoX2luZm9baV0uZmxhc2hfaWQgPSBGTEFTSF9VTktOT1dOOworCX0KKworCXNpemVfYjAgPSBmbGFzaF9nZXRfc2l6ZShDRkdfRkxBU0gwX0JBU0UsICZmbGFzaF9pbmZvWzBdLCAwKTsKKwlzaXplX2IxID0gZmxhc2hfZ2V0X3NpemUoQ0ZHX0ZMQVNIMF9CQVNFLCAmZmxhc2hfaW5mb1sxXSwgMSk7CisJc2l6ZV9iMiA9IGZsYXNoX2dldF9zaXplKENGR19GTEFTSDBfQkFTRSwgJmZsYXNoX2luZm9bMl0sIDIpOworCisJaWYgKGZsYXNoX2luZm9bMF0uZmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTiB8fCBzaXplX2IwID09IDApIHsKKwkJcHJpbnRmKCIjIyBVbmtub3duIEZMQVNIIG9uIEJhbmsgMCAtIFNpemUgPSAweCUwOGx4ID0gJWxkIE1CXG4iLAorCQkJc2l6ZV9iMCwgc2l6ZV9iMCA+PiAyMCk7CisJfQorCisJKHZvaWQpZmxhc2hfcHJvdGVjdChGTEFHX1BST1RFQ1RfU0VULENGR19GTEFTSDBfQkFTRSwoZmxhc2hfaW5mb1swXS5zdGFydFsyXSAtIDEpLCZmbGFzaF9pbmZvWzBdKTsKKworCXJldHVybiAoc2l6ZV9iMCArIHNpemVfYjEgKyBzaXplX2IyKTsKK30KKwordm9pZCBmbGFzaF9wcmludF9pbmZvKGZsYXNoX2luZm9fdCAqIGluZm8pCit7CisJaW50IGk7CisKKwlpZiAoaW5mby0+Zmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTikgeworCQlwcmludGYoIm1pc3Npbmcgb3IgdW5rbm93biBGTEFTSCB0eXBlXG4iKTsKKwkJcmV0dXJuOworCX0KKworCXN3aXRjaCAoaW5mby0+Zmxhc2hfaWQpIHsKKwljYXNlIEZMQVNIX1BTRDQyNTZHVjoKKwkJcHJpbnRmKCJTVCBNaWNyb2VsZWN0cm9uaWNzICIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGYoIlVua25vd24gVmVuZG9yICIpOworCQlicmVhazsKKwl9CisJZm9yIChpID0gMDsgaSA8IGluZm8tPnNlY3Rvcl9jb3VudDsgKytpKSB7CisJCWlmICgoaSAlIDUpID09IDApCisJCQlwcmludGYoIlxuICAgIik7CisJCXByaW50ZigiICUwOGxYJXMiLAorCQkJaW5mby0+c3RhcnRbaV0sCisJCQlpbmZvLT5wcm90ZWN0W2ldID8gIiAoUk8pIiA6ICIgICAgICIpOworCX0KKwlwcmludGYoIlxuIik7CisJcmV0dXJuOworfQorCitpbnQgZmxhc2hfZXJhc2UoZmxhc2hfaW5mb190ICogaW5mbywgaW50IHNfZmlyc3QsIGludCBzX2xhc3QpCit7CisJaW50IGNudCA9IDAsaTsKKwlpbnQgcHJvdCxzZWN0OworCisJcHJvdCA9IDA7CisJZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdCA8PSBzX2xhc3Q7ICsrc2VjdCkgeworCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSkKKwkJCXByb3QrKzsKKwl9CisKKwlpZiAocHJvdCkKKwkJcHJpbnRmICgiLSBXYXJuaW5nOiAlZCBwcm90ZWN0ZWQgc2VjdG9ycyB3aWxsIG5vdCBiZSBlcmFzZWQhXG4iLCBwcm90KTsKKwllbHNlCisJCXByaW50ZiAoIlxuIik7CisKKwljbnQgPSBzX2xhc3QgLSBzX2ZpcnN0ICsgMTsKKworCWlmIChjbnQgPT0gRkxBU0hfVE9UX1NFQ1QpIHsKKwkJcHJpbnRmKCJFcmFzaW5nIGZsYXNoLCBQbGVhc2UgV2FpdCBcbiIpOworCQlpZihlcmFzZV9mbGFzaCgpIDwgMCkgeworCQkJcHJpbnRmKCJFcmFzaW5nIGZsYXNoIGZhaWxlZCBcbiIpOworCQkJcmV0dXJuIEZMQVNIX0ZBSUw7CisJCX0KKwl9IGVsc2UgeworCQlwcmludGYoIkVyYXNpbmcgRmxhc2ggbG9jYXRpb25zLCBQbGVhc2UgV2FpdFxuIik7CisJCWZvciAoaSA9IHNfZmlyc3Q7IGkgPD0gc19sYXN0OyBpKyspIHsKKwkJCWlmIChpbmZvLT5wcm90ZWN0W2ldID09IDApIHsJLyogbm90IHByb3RlY3RlZCAqLworCQkJCWlmKGVyYXNlX2Jsb2NrX2ZsYXNoKGksIGluZm8tPnN0YXJ0W2ldKSA8IDApIHsKKwkJCQkJcHJpbnRmKCJFcnJvciBTZWN0b3IgZXJhc2luZyBcbiIpOworCQkJCQlyZXR1cm4gRkxBU0hfRkFJTDsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIEZMQVNIX1NVQ0NFU1M7Cit9CisKK2ludCB3cml0ZV9idWZmKGZsYXNoX2luZm9fdCAqIGluZm8sIHVjaGFyICogc3JjLCB1bG9uZyBhZGRyLCB1bG9uZyBjbnQpCit7CisJaW50IHJldDsKKworCXJldCA9IHdyaXRlX2RhdGEoYWRkciwgY250LCAxLCAoaW50ICopIHNyYyk7CisJaWYocmV0ID09IEZMQVNIX0ZBSUwpCisJCXJldHVybiBFUlJfTk9UX0VSQVNFRDsKKwlyZXR1cm4gRkxBU0hfU1VDQ0VTUzsKK30KKworCitpbnQgd3JpdGVfZGF0YShsb25nIGxTdGFydCwgbG9uZyBsQ291bnQsIGxvbmcgbFN0cmlkZSwgaW50ICpwbkRhdGEpCit7CisJbG9uZyBpID0gMDsKKwlpbnQgaiA9IDA7CisJdW5zaWduZWQgbG9uZyB1bE9mZnNldCA9IGxTdGFydCAtIENGR19GTEFTSF9CQVNFOworCWludCBkOworCWludCBpU2hpZnQgPSAwOworCWludCBpTnVtV29yZHMgPSAyOworCWludCBuTGVmdG92ZXIgPSBsQ291bnQgJSA0OworCWludCBuU2VjdG9yID0gMDsKKworCWZvciAoaSA9IDA7IChpIDwgbENvdW50IC8gNCkgJiYgKGkgPCBCVUZGRVJfU0laRSk7IGkrKykgeworCQlmb3IgKGlTaGlmdCA9IDAsIGogPSAwOyAoaiA8IGlOdW1Xb3Jkcyk7CisJCQlqKyssIHVsT2Zmc2V0ICs9IChsU3RyaWRlICogMikpIHsKKwkJCWlmICgodWxPZmZzZXQgPj0gSU5WQUxJRExPQ05TVEFSVCkKKwkJCSYmICh1bE9mZnNldCA8IElOVkFMSURMT0NORU5EKSkgeworCQkJCXByaW50ZigiSW52YWxpZCBsb2NhdGlvbnMsIFRyeSB3cml0aW5nIHRvIGFub3RoZXIgbG9jYXRpb24gXG4iKTsKKwkJCQlyZXR1cm4gRkxBU0hfRkFJTDsKKwkJCX0KKwkJCWdldF9zZWN0b3JfbnVtYmVyKHVsT2Zmc2V0LCAmblNlY3Rvcik7CisJCQlyZWFkX2ZsYXNoKHVsT2Zmc2V0LCZkKTsKKwkJCWlmKGQgIT0gMHhmZmZmKSB7CisJCQkJcHJpbnRmKCJGbGFzaCBub3QgZXJhc2VkIGF0IG9mZnNldCAweCV4IFBsZWFzZSBlcmFzZSB0byByZXByb2dyYW0gXG4iLHVsT2Zmc2V0KTsKKwkJCQlyZXR1cm4gRkxBU0hfRkFJTDsKKwkJCX0KKwkJCXVubG9ja19mbGFzaCh1bE9mZnNldCk7CisJCQlpZih3cml0ZV9mbGFzaCh1bE9mZnNldCwgKHBuRGF0YVtpXSA+PiBpU2hpZnQpKSA8IDApIHsKKwkJCQlwcmludGYoIkVycm9yIHByb2dyYW1taW5nIHRoZSBmbGFzaCBcbiIpOworCQkJCXJldHVybiBGTEFTSF9GQUlMOworCQkJfQorCQkJaVNoaWZ0ICs9IDE2OworCQl9CisJfQorCWlmIChuTGVmdG92ZXIgPiAwKSB7CisJCWlmICgodWxPZmZzZXQgPj0gSU5WQUxJRExPQ05TVEFSVCkKKwkJCSYmICh1bE9mZnNldCA8IElOVkFMSURMT0NORU5EKSkKKwkJCQlyZXR1cm4gRkxBU0hfRkFJTDsKKwkJZ2V0X3NlY3Rvcl9udW1iZXIodWxPZmZzZXQsICZuU2VjdG9yKTsKKwkJcmVhZF9mbGFzaCh1bE9mZnNldCwmZCk7CisJCWlmKGQgIT0gMHhmZmZmKSB7CisJCQlwcmludGYoIkZsYXNoIGFscmVhZHkgcHJvZ3JhbW1lZC4gUGxlYXNlIGVyYXNlIHRvIHJlcHJvZ3JhbSBcbiIpOworCQkJcHJpbnRmKCJ1bG9mZnNldCA9IDB4JXggXHQgZCA9IDB4JXhcbiIsdWxPZmZzZXQsZCk7CisJCQlyZXR1cm4gRkxBU0hfRkFJTDsKKwkJfQorCQl1bmxvY2tfZmxhc2godWxPZmZzZXQpOworCQlpZih3cml0ZV9mbGFzaCh1bE9mZnNldCwgcG5EYXRhW2ldKSA8IDApIHsKKwkJCXByaW50ZigiRXJyb3IgcHJvZ3JhbW1pbmcgdGhlIGZsYXNoIFxuIik7CisJCQlyZXR1cm4gRkxBU0hfRkFJTDsKKwkJfQorCX0KKwlyZXR1cm4gRkxBU0hfU1VDQ0VTUzsKK30KKworaW50IHJlYWRfZGF0YShsb25nIHVsU3RhcnQsIGxvbmcgbENvdW50LCBsb25nIGxTdHJpZGUsIGludCAqcG5EYXRhKQoreworCWxvbmcgaSA9IDA7CisJaW50IGogPSAwOworCWxvbmcgdWxPZmZzZXQgPSB1bFN0YXJ0OworCWludCBpU2hpZnQgPSAwOworCWludCBpTnVtV29yZHMgPSAyOworCWludCBuTGVmdG92ZXIgPSBsQ291bnQgJSA0OworCWludCBuSGksIG5Mb3c7CisJaW50IG5TZWN0b3IgPSAwOworCisJZm9yIChpID0gMDsgKGkgPCBsQ291bnQgLyA0KSAmJiAoaSA8IEJVRkZFUl9TSVpFKTsgaSsrKSB7CisJCWZvciAoaVNoaWZ0ID0gMCwgaiA9IDA7IGogPCBpTnVtV29yZHM7IGogKz0gMikgeworCQkJaWYgKCh1bE9mZnNldCA+PSBJTlZBTElETE9DTlNUQVJUKQorCQkJCSYmICh1bE9mZnNldCA8IElOVkFMSURMT0NORU5EKSkKKwkJCQkJcmV0dXJuIEZMQVNIX0ZBSUw7CisKKwkJCWdldF9zZWN0b3JfbnVtYmVyKHVsT2Zmc2V0LCAmblNlY3Rvcik7CisJCQlyZWFkX2ZsYXNoKHVsT2Zmc2V0LCAmbkxvdyk7CisJCQl1bE9mZnNldCArPSAobFN0cmlkZSAqIDIpOworCQkJcmVhZF9mbGFzaCh1bE9mZnNldCwgJm5IaSk7CisJCQl1bE9mZnNldCArPSAobFN0cmlkZSAqIDIpOworCQkJcG5EYXRhW2ldID0gKG5IaSA8PCAxNikgfCBuTG93OworCQl9CisJfQorCWlmIChuTGVmdG92ZXIgPiAwKSB7CisJCWlmICgodWxPZmZzZXQgPj0gSU5WQUxJRExPQ05TVEFSVCkKKwkJCSYmICh1bE9mZnNldCA8IElOVkFMSURMT0NORU5EKSkKKwkJCQlyZXR1cm4gRkxBU0hfRkFJTDsKKworCQlnZXRfc2VjdG9yX251bWJlcih1bE9mZnNldCwgJm5TZWN0b3IpOworCQlyZWFkX2ZsYXNoKHVsT2Zmc2V0LCAmcG5EYXRhW2ldKTsKKwl9CisJcmV0dXJuIEZMQVNIX1NVQ0NFU1M7Cit9CisKK2ludCB3cml0ZV9mbGFzaChsb25nIG5PZmZzZXQsIGludCBuVmFsdWUpCit7CisJbG9uZyBhZGRyOworCisJYWRkciA9IChDRkdfRkxBU0hfQkFTRSArIG5PZmZzZXQpOworCWFzbSgic3N5bmM7Iik7CisJKih1bnNpZ25lZCB2b2xhdGlsZSBzaG9ydCAqKSBhZGRyID0gblZhbHVlOworCWFzbSgic3N5bmM7Iik7CisJaWYocG9sbF90b2dnbGVfYml0KG5PZmZzZXQpIDwgMCkKKwkJcmV0dXJuIEZMQVNIX0ZBSUw7CisJcmV0dXJuIEZMQVNIX1NVQ0NFU1M7Cit9CisKK2ludCByZWFkX2ZsYXNoKGxvbmcgbk9mZnNldCwgaW50ICpwblZhbHVlKQoreworCWludCBuVmFsdWUgPSAweDA7CisJbG9uZyBhZGRyID0gKENGR19GTEFTSF9CQVNFICsgbk9mZnNldCk7CisKKwlpZiAobk9mZnNldCAhPSAweDIpCisJCXJlc2V0X2ZsYXNoKCk7CisJYXNtKCJzc3luYzsiKTsKKwluVmFsdWUgPSAqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopIGFkZHI7CisJYXNtKCJzc3luYzsiKTsKKwkqcG5WYWx1ZSA9IG5WYWx1ZTsKKwlyZXR1cm4gVFJVRTsKK30KKworaW50IHBvbGxfdG9nZ2xlX2JpdChsb25nIGxPZmZzZXQpCit7CisJdW5zaWduZWQgaW50IHUxLHUyOworCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IDB4RkZGRkZGRkY7CisJdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqRkIgPSAodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSgweDIwMDAwMDAwICsgbE9mZnNldCk7CisJd2hpbGUoMSkgeworCQlpZih0aW1lb3V0IDwgMCkKKwkJCWJyZWFrOworCQl1MSA9ICoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilGQjsKKwkJdTIgPSAqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRkI7CisJCWlmKCh1MSAmIDB4MDA0MCkgPT0gKHUyICYgMHgwMDQwKSkKKwkJCXJldHVybiBGTEFTSF9TVUNDRVNTOworCQlpZigodTIgJiAweDAwMjApID09IDB4MDAwMCkKKwkJCWNvbnRpbnVlOworCQl1MSA9ICoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilGQjsKKwkJaWYoKHUyICYgMHgwMDQwKSA9PSAodTEgJiAweDAwNDApKQorCQkJcmV0dXJuIEZMQVNIX1NVQ0NFU1M7CisJCWVsc2UgeworCQkJcmVzZXRfZmxhc2goKTsKKwkJCXJldHVybiBGTEFTSF9GQUlMOworCQl9CisJCXRpbWVvdXQtLTsKKwl9CisJcHJpbnRmKCJUaW1lIG91dCBvY2N1cmVkIFxuIik7CisJaWYodGltZW91dCA8MCkJcmV0dXJuIEZMQVNIX0ZBSUw7Cit9CisKK3ZvaWQgcmVzZXRfZmxhc2godm9pZCkKK3sKKwl3cml0ZV9mbGFzaChXUklURVNFUTEsIFJFU0VUX1ZBTCk7CisJLyogV2FpdCBmb3IgMTAgbWljcm8gc2Vjb25kcyAqLworCXVkZWxheSgxMCk7Cit9CisKK2ludCBlcmFzZV9mbGFzaCh2b2lkKQoreworCXdyaXRlX2ZsYXNoKFdSSVRFU0VRMSwgV1JJVEVEQVRBMSk7CisJd3JpdGVfZmxhc2goV1JJVEVTRVEyLCBXUklURURBVEEyKTsKKwl3cml0ZV9mbGFzaChXUklURVNFUTMsIFdSSVRFREFUQTMpOworCXdyaXRlX2ZsYXNoKFdSSVRFU0VRNCwgV1JJVEVEQVRBNCk7CisJd3JpdGVfZmxhc2goV1JJVEVTRVE1LCBXUklURURBVEE1KTsKKwl3cml0ZV9mbGFzaChXUklURVNFUTYsIFdSSVRFREFUQTYpOworCisJaWYocG9sbF90b2dnbGVfYml0KDB4MDAwMCkgPCAwKQorCQlyZXR1cm4gRkxBU0hfRkFJTDsKKworCXdyaXRlX2ZsYXNoKFNlY0ZsYXNoQU9mZiArIFdSSVRFU0VRMSwgV1JJVEVEQVRBMSk7CisJd3JpdGVfZmxhc2goU2VjRmxhc2hBT2ZmICsgV1JJVEVTRVEyLCBXUklURURBVEEyKTsKKwl3cml0ZV9mbGFzaChTZWNGbGFzaEFPZmYgKyBXUklURVNFUTMsIFdSSVRFREFUQTMpOworCXdyaXRlX2ZsYXNoKFNlY0ZsYXNoQU9mZiArIFdSSVRFU0VRNCwgV1JJVEVEQVRBNCk7CisJd3JpdGVfZmxhc2goU2VjRmxhc2hBT2ZmICsgV1JJVEVTRVE1LCBXUklURURBVEE1KTsKKwl3cml0ZV9mbGFzaChTZWNGbGFzaEFPZmYgKyBXUklURVNFUTYsIFdSSVRFREFUQTYpOworCisJaWYocG9sbF90b2dnbGVfYml0KFNlY0ZsYXNoQVNlYzFPZmYpIDwgMCkKKwkJcmV0dXJuIEZMQVNIX0ZBSUw7CisKKwl3cml0ZV9mbGFzaChQcmlGbGFzaEJPZmYgKyBXUklURVNFUTEsIFdSSVRFREFUQTEpOworCXdyaXRlX2ZsYXNoKFByaUZsYXNoQk9mZiArIFdSSVRFU0VRMiwgV1JJVEVEQVRBMik7CisJd3JpdGVfZmxhc2goUHJpRmxhc2hCT2ZmICsgV1JJVEVTRVEzLCBXUklURURBVEEzKTsKKwl3cml0ZV9mbGFzaChQcmlGbGFzaEJPZmYgKyBXUklURVNFUTQsIFdSSVRFREFUQTQpOworCXdyaXRlX2ZsYXNoKFByaUZsYXNoQk9mZiArIFdSSVRFU0VRNSwgV1JJVEVEQVRBNSk7CisJd3JpdGVfZmxhc2goUHJpRmxhc2hCT2ZmICsgV1JJVEVTRVE2LCBXUklURURBVEE2KTsKKworCWlmKHBvbGxfdG9nZ2xlX2JpdChQcmlGbGFzaEJPZmYpIDwwKQorCQlyZXR1cm4gRkxBU0hfRkFJTDsKKworCXdyaXRlX2ZsYXNoKFNlY0ZsYXNoQk9mZiArIFdSSVRFU0VRMSwgV1JJVEVEQVRBMSk7CisJd3JpdGVfZmxhc2goU2VjRmxhc2hCT2ZmICsgV1JJVEVTRVEyLCBXUklURURBVEEyKTsKKwl3cml0ZV9mbGFzaChTZWNGbGFzaEJPZmYgKyBXUklURVNFUTMsIFdSSVRFREFUQTMpOworCXdyaXRlX2ZsYXNoKFNlY0ZsYXNoQk9mZiArIFdSSVRFU0VRNCwgV1JJVEVEQVRBNCk7CisJd3JpdGVfZmxhc2goU2VjRmxhc2hCT2ZmICsgV1JJVEVTRVE1LCBXUklURURBVEE1KTsKKwl3cml0ZV9mbGFzaChTZWNGbGFzaEJPZmYgKyBXUklURVNFUTYsIFdSSVRFREFUQTYpOworCisJaWYocG9sbF90b2dnbGVfYml0KFNlY0ZsYXNoQk9mZikgPCAwKQorCQlyZXR1cm4gRkxBU0hfRkFJTDsKKworCXJldHVybiBGTEFTSF9TVUNDRVNTOworfQorCitpbnQgZXJhc2VfYmxvY2tfZmxhc2goaW50IG5CbG9jaywgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQoreworCWxvbmcgdWxTZWN0b3JPZmYgPSAweDA7CisKKwlpZiAoKG5CbG9jayA8IDApIHx8IChuQmxvY2sgPiBBRlBfTnVtU2VjdG9ycykpCisJCXJldHVybiBGQUxTRTsKKworCXVsU2VjdG9yT2ZmID0gKGFkZHJlc3MgLSBDRkdfRkxBU0hfQkFTRSk7CisKKwl3cml0ZV9mbGFzaCgoV1JJVEVTRVExIHwgdWxTZWN0b3JPZmYpLCBXUklURURBVEExKTsKKwl3cml0ZV9mbGFzaCgoV1JJVEVTRVEyIHwgdWxTZWN0b3JPZmYpLCBXUklURURBVEEyKTsKKwl3cml0ZV9mbGFzaCgoV1JJVEVTRVEzIHwgdWxTZWN0b3JPZmYpLCBXUklURURBVEEzKTsKKwl3cml0ZV9mbGFzaCgoV1JJVEVTRVE0IHwgdWxTZWN0b3JPZmYpLCBXUklURURBVEE0KTsKKwl3cml0ZV9mbGFzaCgoV1JJVEVTRVE1IHwgdWxTZWN0b3JPZmYpLCBXUklURURBVEE1KTsKKworCXdyaXRlX2ZsYXNoKHVsU2VjdG9yT2ZmLCBCbG9ja0VyYXNlVmFsKTsKKworCWlmKHBvbGxfdG9nZ2xlX2JpdCh1bFNlY3Rvck9mZikgPCAwKQorCQlyZXR1cm4gRkxBU0hfRkFJTDsKKworCXJldHVybiBGTEFTSF9TVUNDRVNTOworfQorCit2b2lkIHVubG9ja19mbGFzaChsb25nIHVsT2Zmc2V0KQoreworCXVuc2lnbmVkIGxvbmcgdWxPZmZzZXRBZGRyID0gdWxPZmZzZXQ7CisJdWxPZmZzZXRBZGRyICY9IDB4RkZGRjAwMDA7CisKKwl3cml0ZV9mbGFzaCgoV1JJVEVTRVExIHwgdWxPZmZzZXRBZGRyKSwgVU5MT0NLREFUQTEpOworCXdyaXRlX2ZsYXNoKChXUklURVNFUTIgfCB1bE9mZnNldEFkZHIpLCBVTkxPQ0tEQVRBMik7CisJd3JpdGVfZmxhc2goKFdSSVRFU0VRMyB8IHVsT2Zmc2V0QWRkciksIFVOTE9DS0RBVEEzKTsKK30KKworaW50IGdldF9jb2RlcygpCit7CisJaW50IGRldl9pZCA9IDA7CisKKwl3cml0ZV9mbGFzaChXUklURVNFUTEsIEdFVENPREVEQVRBMSk7CisJd3JpdGVfZmxhc2goV1JJVEVTRVEyLCBHRVRDT0RFREFUQTIpOworCXdyaXRlX2ZsYXNoKFdSSVRFU0VRMywgR0VUQ09ERURBVEEzKTsKKworCXJlYWRfZmxhc2goMHgwMDAyLCAmZGV2X2lkKTsKKwlkZXZfaWQgJj0gMHgwMEZGOworCisJcmVzZXRfZmxhc2goKTsKKworCXJldHVybiBkZXZfaWQ7Cit9CisKK3ZvaWQgZ2V0X3NlY3Rvcl9udW1iZXIobG9uZyB1bE9mZnNldCwgaW50ICpwblNlY3RvcikKK3sKKwlpbnQgblNlY3RvciA9IDA7CisKKwlpZiAodWxPZmZzZXQgPj0gU2VjRmxhc2hBT2ZmKSB7CisJCWlmICgodWxPZmZzZXQgPCBTZWNGbGFzaEFTZWMxT2ZmKQorCQkJJiYgKHVsT2Zmc2V0IDwgU2VjRmxhc2hBU2VjMk9mZikpIHsKKwkJCQluU2VjdG9yID0gU0VDVDMyOworCQl9IGVsc2UgaWYgKCh1bE9mZnNldCA+PSBTZWNGbGFzaEFTZWMyT2ZmKQorCQkJJiYgKHVsT2Zmc2V0IDwgU2VjRmxhc2hBU2VjM09mZikpIHsKKwkJCQluU2VjdG9yID0gU0VDVDMzOworCQl9IGVsc2UgaWYgKCh1bE9mZnNldCA+PSBTZWNGbGFzaEFTZWMzT2ZmKQorCQkJJiYgKHVsT2Zmc2V0IDwgU2VjRmxhc2hBU2VjNE9mZikpIHsKKwkJCQluU2VjdG9yID0gU0VDVDM0OworCQl9IGVsc2UgaWYgKCh1bE9mZnNldCA+PSBTZWNGbGFzaEFTZWM0T2ZmKQorCQkJJiYgKHVsT2Zmc2V0IDwgU2VjRmxhc2hBRW5kT2ZmKSkgeworCQkJCW5TZWN0b3IgPSBTRUNUMzU7CisJCX0KKwl9IGVsc2UgaWYgKHVsT2Zmc2V0ID49IFNlY0ZsYXNoQk9mZikgeworCQlpZiAoKHVsT2Zmc2V0IDwgU2VjRmxhc2hCU2VjMU9mZikKKwkJCSYmICh1bE9mZnNldCA8IFNlY0ZsYXNoQlNlYzJPZmYpKSB7CisJCQkJblNlY3RvciA9IFNFQ1QzNjsKKwkJfQorCQlpZiAoKHVsT2Zmc2V0IDwgU2VjRmxhc2hCU2VjMk9mZikKKwkJCSYmICh1bE9mZnNldCA8IFNlY0ZsYXNoQlNlYzNPZmYpKSB7CisJCQkJblNlY3RvciA9IFNFQ1QzNzsKKwkJfQorCQlpZiAoKHVsT2Zmc2V0IDwgU2VjRmxhc2hCU2VjM09mZikKKwkJCSYmICh1bE9mZnNldCA8IFNlY0ZsYXNoQlNlYzRPZmYpKSB7CisJCQkJblNlY3RvciA9IFNFQ1QzODsKKwkJfQorCQlpZiAoKHVsT2Zmc2V0IDwgU2VjRmxhc2hCU2VjNE9mZikKKwkJCSYmICh1bE9mZnNldCA8IFNlY0ZsYXNoQkVuZE9mZikpIHsKKwkJCQluU2VjdG9yID0gU0VDVDM5OworCQl9CisJfSBlbHNlIGlmICgodWxPZmZzZXQgPj0gUHJpRmxhc2hBT2ZmKSAmJiAodWxPZmZzZXQgPCBTZWNGbGFzaEFPZmYpKSB7CisJCW5TZWN0b3IgPSB1bE9mZnNldCAmIDB4ZmZmZjAwMDA7CisJCW5TZWN0b3IgPSB1bE9mZnNldCA+PiAxNjsKKwkJblNlY3RvciA9IG5TZWN0b3IgJiAweDAwMGZmOworCX0KKworCWlmICgoblNlY3RvciA+PSAwKSAmJiAoblNlY3RvciA8IEFGUF9OdW1TZWN0b3JzKSkgeworCQkqcG5TZWN0b3IgPSBuU2VjdG9yOworCX0KK30KZGlmZiAtLWdpdCBhL2JvYXJkL2V6a2l0NTMzL3BzZDQyNTYuaCBiL2JvYXJkL2V6a2l0NTMzL3BzZDQyNTYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWY2NTY2Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZXpraXQ1MzMvcHNkNDI1Ni5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBVLWJvb3QgLSBwc2Q0MjU2LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKgorICogRmxhc2ggQS9CIFBvcnQgQSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4KKyAqIEFkZHJlc3NlcyBhcmUgb2Zmc2V0IHZhbHVlcyB0byBDRkdfRkxBU0gxX0JBU0UKKyAqIGZvciBGbGFzaCBBIGFuZCBDRkdfRkxBU0gyX0JBU0UgZm9yIEZsYXNoIEIuCisgKi8KKworI2RlZmluZQlQU0RfUE9SVEFfRElOCTB4MDcwMDAwCisjZGVmaW5lCVBTRF9QT1JUQV9ET1VUCTB4MDcwMDA0CisjZGVmaW5lCVBTRF9QT1JUQV9ESVIJMHgwNzAwMDYKKworLyoKKyAqIEZsYXNoIEEvQiBQb3J0IEIgY29uZmlndXJhdGlvbiByZWdpc3RlcnMKKyAqIEFkZHJlc3NlcyBhcmUgb2Zmc2V0IHZhbHVlcyB0byBDRkdfRkxBU0gxX0JBU0UKKyAqIGZvciBGbGFzaCBBIGFuZCBDRkdfRkxBU0gyX0JBU0UgZm9yIEZsYXNoIEIuCisgKi8KKworI2RlZmluZQlQU0RfUE9SVEJfRElOCTB4MDcwMDAxCisjZGVmaW5lCVBTRF9QT1JUQl9ET1VUCTB4MDcwMDA1CisjZGVmaW5lCVBTRF9QT1JUQl9ESVIJMHgwNzAwMDcKKworLyoKKyAqIEZsYXNoIEEgUG9ydCBBIEJpdCBkZWZpbml0aW9ucworICovCisKKyNkZWZpbmUJUFNEQV9QUElDTEsxCTB4MjAJCS8qIFBQSSBDbG9jayBzZWxlY3QgYml0IDEJCSovCisjZGVmaW5lCVBTREFfUFBJQ0xLMAkweDEwCQkvKiBQUEkgQ2xvY2sgc2VsZWN0IGJpdCAwCQkqLworI2RlZmluZQlQU0RBX1ZERUNfUlNUCTB4MDgJCS8qIFZpZGVvIGRlY29kZXIgcmVzZXQsIDAgPSBSRVNFVAkqLworI2RlZmluZQlQU0RBX1ZFTkNfUlNUCTB4MDQJCS8qIFZpZGVvIGVuY29kZXIgcmVzZXQsIDAgPSBSRVNFVAkqLworI2RlZmluZQlQU0RBX0NPREVDX1JTVAkweDAxCQkvKiBDb2RlYyByZXNldCwgMCA9IFJFU0VUCQkqLworCisvKgorICogRmxhc2ggQSBQb3J0IEIgQml0IGRlZmluaXRpb25zCisgKi8KKworI2RlZmluZQlQU0RBX0xFRDkJMHgyMAkJLyogTEVEIDksIDEgPSBMRUQgT04JCQkqLworI2RlZmluZQlQU0RBX0xFRDgJMHgxMAkJLyogTEVEIDgsIDEgPSBMRUQgT04JCQkqLworI2RlZmluZQlQU0RBX0xFRDcJMHgwOAkJLyogTEVEIDcsIDEgPSBMRUQgT04JCQkqLworI2RlZmluZQlQU0RBX0xFRDYJMHgwNAkJLyogTEVEIDYsIDEgPSBMRUQgT04JCQkqLworI2RlZmluZQlQU0RBX0xFRDUJMHgwMgkJLyogTEVEIDUsIDEgPSBMRUQgT04JCQkqLworI2RlZmluZQlQU0RBX0xFRDQJMHgwMQkJLyogTEVEIDQsIDEgPSBMRUQgT04JCQkqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXpraXQ1MzMvdS1ib290LmxkcyBiL2JvYXJkL2V6a2l0NTMzL3UtYm9vdC5sZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyMDNmZgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2V6a2l0NTMzL3UtYm9vdC5sZHMKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBVLWJvb3QgLSB1LWJvb3QubGRzCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworT1VUUFVUX0FSQ0goYmZpbikKK1NFQVJDSF9ESVIoL2xpYik7IFNFQVJDSF9ESVIoL3Vzci9saWIpOyBTRUFSQ0hfRElSKC91c3IvbG9jYWwvbGliKTsKKy8qIERvIHdlIG5lZWQgYW55IG9mIHRoZXNlIGZvciBlbGY/CisgICBfX0RZTkFNSUMgPSAwOyAgICAqLworU0VDVElPTlMKK3sKKyAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCisgIC4gPSArIFNJWkVPRl9IRUFERVJTOworICAuaW50ZXJwIDogeyAqKC5pbnRlcnApIH0KKyAgLmhhc2ggICAgICAgICAgOiB7ICooLmhhc2gpCQl9CisgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CisgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CisgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KKyAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CisgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KKyAgLnJlbGEuY3RvcnMgICAgOiB7ICooLnJlbGEuY3RvcnMpCX0KKyAgLnJlbC5kdG9ycyAgICAgOiB7ICooLnJlbC5kdG9ycykJfQorICAucmVsYS5kdG9ycyAgICA6IHsgKigucmVsYS5kdG9ycykJfQorICAucmVsLmJzcyAgICAgICA6IHsgKigucmVsLmJzcykJfQorICAucmVsYS5ic3MgICAgICA6IHsgKigucmVsYS5ic3MpCX0KKyAgLnJlbC5wbHQgICAgICAgOiB7ICooLnJlbC5wbHQpCX0KKyAgLnJlbGEucGx0ICAgICAgOiB7ICooLnJlbGEucGx0KQl9CisgIC5pbml0ICAgICAgICAgIDogeyAqKC5pbml0KQkJfQorICAucGx0IDogeyAqKC5wbHQpIH0KKyAgLnRleHQgICAgICA6CisgIHsKKyAgICAvKiBXQVJOSU5HIC0gdGhlIGZvbGxvd2luZyBpcyBoYW5kLW9wdGltaXplZCB0byBmaXQgd2l0aGluCSovCisgICAgLyogdGhlIHNlY3RvciBiZWZvcmUgdGhlIGVudmlyb25tZW50IHNlY3Rvci4gSWYgaXQgdGhyb3dzIAkqLworICAgIC8qIGFuIGVycm9yIGR1cmluZyBjb21waWxhdGlvbiByZW1vdmUgYW4gb2JqZWN0IGhlcmUgdG8gZ2V0CSovCisgICAgLyogaXQgbGlua2VkIGFmdGVyIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rvci4JCSovCisKKyAgICBjcHUvYmY1MzMvc3RhcnQubwkJKC50ZXh0KQorICAgIGNwdS9iZjUzMy9zdGFydDEubwkJKC50ZXh0KQorICAgIGNwdS9iZjUzMy90cmFwcy5vCQkoLnRleHQpCisgICAgY3B1L2JmNTMzL2ludGVycnVwdC5vCSgudGV4dCkKKyAgICBjcHUvYmY1MzMvc2VyaWFsLm8JCSgudGV4dCkKKyAgICBjb21tb24vZGxtYWxsb2MubwkJKC50ZXh0KQorICAgIGxpYl9nZW5lcmljL3ZzcHJpbnRmLm8JKC50ZXh0KQorICAgIGxpYl9nZW5lcmljL2NyYzMyLm8JCSgudGV4dCkKKyAgICBsaWJfZ2VuZXJpYy96bGliLm8JCSgudGV4dCkKKyAgICBib2FyZC9lemtpdDUzMy9lemtpdDUzMy5vCQkoLnRleHQpCisKKyAgICAuID0gREVGSU5FRChlbnZfb2Zmc2V0KSA/IGVudl9vZmZzZXQgOiAuOworICAgIGNvbW1vbi9lbnZpcm9ubWVudC5vCSgudGV4dCkKKworICAgICooLnRleHQpCisgICAgKiguZml4dXApCisgICAgKiguZ290MSkKKyAgfQorICBfZXRleHQgPSAuOworICBQUk9WSURFIChldGV4dCA9IC4pOworICAucm9kYXRhICAgIDoKKyAgeworICAgICooLnJvZGF0YSkKKyAgICAqKC5yb2RhdGExKQorICAgICooLnJvZGF0YS5zdHIxLjQpCisgIH0KKyAgLmZpbmkgICAgICA6IHsgKiguZmluaSkgICAgfSA9MAorICAuY3RvcnMgICAgIDogeyAqKC5jdG9ycykgICB9CisgIC5kdG9ycyAgICAgOiB7ICooLmR0b3JzKSAgIH0KKworICAvKiBSZWFkLXdyaXRlIHNlY3Rpb24sIG1lcmdlZCBpbnRvIGRhdGEgc2VnbWVudDogKi8KKyAgLiA9ICguICsgMHgwMEZGKSAmIDB4RkZGRkZGMDA7CisgIF9lcm90ZXh0ID0gLjsKKyAgUFJPVklERSAoZXJvdGV4dCA9IC4pOworICAucmVsb2MgICA6CisgIHsKKyAgICAqKC5nb3QpCisgICAgX0dPVDJfVEFCTEVfID0gLjsKKyAgICAqKC5nb3QyKQorICAgIF9GSVhVUF9UQUJMRV8gPSAuOworICAgICooLmZpeHVwKQorICB9CisgIF9fZ290Ml9lbnRyaWVzID0gKF9GSVhVUF9UQUJMRV8gLSBfR09UMl9UQUJMRV8pID4+MjsKKyAgX19maXh1cF9lbnRyaWVzID0gKC4gLSBfRklYVVBfVEFCTEVfKT4+MjsKKworICAuZGF0YSAgICA6CisgIHsKKyAgICAqKC5kYXRhKQorICAgICooLmRhdGExKQorICAgICooLnNkYXRhKQorICAgICooLnNkYXRhMikKKyAgICAqKC5keW5hbWljKQorICAgIENPTlNUUlVDVE9SUworICB9CisgIF9lZGF0YSAgPSAgLjsKKyAgUFJPVklERSAoZWRhdGEgPSAuKTsKKworICBfX3VfYm9vdF9jbWRfc3RhcnQgPSAuOworICAudV9ib290X2NtZCA6IHsgKigudV9ib290X2NtZCkgfQorICBfX3VfYm9vdF9jbWRfZW5kID0gLjsKKworCisgIF9fc3RhcnRfX19leF90YWJsZSA9IC47CisgIF9fZXhfdGFibGUgOiB7ICooX19leF90YWJsZSkgfQorICBfX3N0b3BfX19leF90YWJsZSA9IC47CisKKyAgLiA9IEFMSUdOKDI1Nik7CisgIF9faW5pdF9iZWdpbiA9IC47CisgIC50ZXh0LmluaXQgOiB7ICooLnRleHQuaW5pdCkgfQorICAuZGF0YS5pbml0IDogeyAqKC5kYXRhLmluaXQpIH0KKyAgLiA9IEFMSUdOKDI1Nik7CisgIF9faW5pdF9lbmQgPSAuOworCisgIF9fYnNzX3N0YXJ0ID0gLjsKKyAgLmJzcyAgICAgICA6CisgIHsKKyAgICooLnNic3MpICooLnNjb21tb24pCisgICAqKC5keW5ic3MpCisgICAqKC5ic3MpCisgICAqKENPTU1PTikKKyAgfQorICBfZW5kID0gLiA7CisgIFBST1ZJREUgKGVuZCA9IC4pOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZmFkcy9mYWRzLmMgYi9ib2FyZC9mYWRzL2ZhZHMuYwppbmRleCAwMTNiM2NiLi43YjA0YWY1IDEwMDY0NAotLS0gYS9ib2FyZC9mYWRzL2ZhZHMuYworKysgYi9ib2FyZC9mYWRzL2ZhZHMuYwpAQCAtNzI2LDI0ICs3MjYsMjMgQEAKIAogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7Ci0JLyogZ2V0IHJldmlzaW9uIGZyb20gQkNTUiAzICovCisjaWYgICBkZWZpbmVkKENPTkZJR19NUEM4NnhBRFMpCisJcHV0cyAoIkJvYXJkOiBNUEM4NnhBRFNcbiIpOworI2VsaWYgZGVmaW5lZChDT05GSUdfTVBDODg1QURTKQorCXB1dHMgKCJCb2FyZDogTVBDODg1QURTXG4iKTsKKyNlbHNlIC8qIE9ubHkgb2xkIEFEUy9GQURTIGhhdmUgZ290IHJldmlzaW9uIElEIGluIEJDU1IzICovCiAJdWludCByID0gICgoKCooKHVpbnQgKikgQkNTUjMpID4+IDIzKSAmIDEpIDw8IDMpCiAJCXwgKCgoKigodWludCAqKSBCQ1NSMykgPj4gMTkpICYgMSkgPDwgMikKIAkJfCAoKCgqKCh1aW50ICopIEJDU1IzKSA+PiAxNikgJiAzKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwotCi0jaWYgZGVmaW5lZChDT05GSUdfTVBDODZ4QURTKQotCXB1dHMgKCJNUEM4NnhBRFMiKTsKLSNlbGlmIGRlZmluZWQoQ09ORklHX01QQzg4NUFEUykKLQlwdXRzICgiTVBDODg1QURTIik7Ci0JciA9IDA7IC8qIEkndmUgZ290IE5SIChObyBSZXZpc2lvbikgYm9hcmQgKi8KLSNlbGlmIGRlZmluZWQoQ09ORklHX0ZBRFMpCisjaWYgZGVmaW5lZChDT05GSUdfRkFEUykKIAlwdXRzICgiRkFEUyIpOwogCWNoZWNrZGJvYXJkICgpOwogI2Vsc2UKIAlwdXRzICgiQURTIik7CiAjZW5kaWYKKwogCXB1dHMgKCIgcmV2ICIpOwogCiAJc3dpdGNoIChyKSB7CkBAIC03NTgsMTMgKzc1Nyw5IEBACiAJCXB1dHMgKCJBIC0gd2FybmluZywgcmVhZCBlcnJhdGEgXG4iKTsKIAkJYnJlYWs7CiAJY2FzZSAweDAzOgotCQlwdXRzICgiQiBcbiIpOworCQlwdXRzICgiQlxuIik7CiAJCWJyZWFrOwotI2VsaWYgZGVmaW5lZChDT05GSUdfTVBDODg1QURTKQotCWNhc2UgMHgwMDoKLQkJcHV0cyAoIk5SXG4iKTsKLQkJYnJlYWs7Ci0jZWxzZSAgLyogRkFEUyBhbmQgbmV3ZXIgKi8KKyNlbHNlICAvKiBGQURTICovCiAJY2FzZSAweDAwOgogCQlwdXRzICgiRU5HXG4iKTsKIAkJYnJlYWs7CkBAIC03NzYsNiArNzcxLDcgQEAKIAkJcHJpbnRmICgidW5rbm93biAoMHgleClcbiIsIHIpOwogCQlyZXR1cm4gLTE7CiAJfQorI2VuZGlmIC8qIENPTkZJR19NUEM4NnhBRFMgKi8KIAogCXJldHVybiAwOwogfQpAQCAtODQ4LDcgKzg0NCw3IEBACiAJc3dpdGNoICgocGNtcC0+cGNtY19waXByID4+IDE0KSAmIDMpCiAjZW5kaWYKIAl7Ci0JY2FzZSAweDAwIDoKKwljYXNlIDB4MDMgOgogCQlwcmludGYoIjVWIik7CiAJCXYgPSA1OwogCQlicmVhazsKQEAgLTg2MCw3ICs4NTYsNyBAQAogCQl2ID0gNTsKICNlbmRpZgogCQlicmVhazsKLQljYXNlIDB4MDMgOgorCWNhc2UgMHgwMCA6CiAJCXByaW50ZigiNVYsIDNWIGFuZCB4LnhWIik7CiAjaWZkZWYgQ09ORklHX0ZBRFMKIAkJdiA9IDM7IC8qIFVzZXIgbG93ZXIgdm9sdGFnZSBpZiBzdXBwb3J0ZWQhICovCmRpZmYgLS1naXQgYS9ib2FyZC9mYWRzL2ZhZHMuaCBiL2JvYXJkL2ZhZHMvZmFkcy5oCmluZGV4IDExMjdjN2YuLmU5ODFiZTAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZhZHMvZmFkcy5oCisrKyBiL2JvYXJkL2ZhZHMvZmFkcy5oCkBAIC01NSwxOCArNTUsMjYgQEAKICNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQk1CS8qIGF1dG9ib290IGFmdGVyIDUgc2Vjb25kcwkqLwogI2VuZGlmCiAKLSN1bmRlZglDT05GSUdfQk9PVEFSR1MKLSNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECQkJCQkJCVwKKyNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKKworI2RlZmluZSBDT05GSUdfTkZTQk9PVENPTU1BTkQJCQkJCQkJXAogICAgICJkaGNwOyIJCQkJCQkJCQlcCi0gICAgInNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3IG5mc3Jvb3Q9JHtzZXJ2ZXJpcH06JHtyb290cGF0aH0gIgkJXAotICAgICJpcD0ke2lwYWRkcn06JHtzZXJ2ZXJpcH06JHtnYXRld2F5aXB9OiR7bmV0bWFza306JHtob3N0bmFtZX06Om9mZjsiCVwKKyAgICAic2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgcncgbmZzcm9vdD0kcm9vdHBhdGggIgkJCVwKKyAgICAiaXA9JGlwYWRkcjokc2VydmVyaXA6JGdhdGV3YXlpcDokbmV0bWFzazokaG9zdG5hbWU6ZXRoMDpvZmY7IgkJXAogICAgICJib290bSIKIAorI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJCQkJCQkJXAorICAgICJzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L210ZGJsb2NrMiBydyBtdGRwYXJ0cz1waHlzOjEyODBLKFJPTSlybywtKHJvb3QpICJcCisgICAgImlwPSRpcGFkZHI6JHNlcnZlcmlwOiRnYXRld2F5aXA6JG5ldG1hc2s6JGhvc3RuYW1lOmV0aDA6b2ZmOyIJCVwKKyAgICAiYm9vdG0gZmUwODAwMDAiCisKKyN1bmRlZiBDT05GSUdfQk9PVEFSR1MKKwogI3VuZGVmCUNPTkZJR19XQVRDSERPRwkJCS8qIHdhdGNoZG9nIGRpc2FibGVkCQkqLwogI2RlZmluZSBDT05GSUdfQlpJUDIJIC8qIGluY2x1ZGUgc3VwcG9ydCBmb3IgYnppcDIgY29tcHJlc3NlZCBpbWFnZXMgKi8KIAogLyoKLSAqIE5ldyBNUEM4NnhBRFMgYW5kIER1ZXQgcHJvdmlkZSB0d28gRXRoZXJuZXQgY29ubmVjdGl2aXR5IG9wdGlvbnM6CisgKiBOZXcgTVBDODZ4QURTIGFuZCBNUEM4ODVBRFMgcHJvdmlkZSB0d28gRXRoZXJuZXQgY29ubmVjdGl2aXR5IG9wdGlvbnM6CiAgKiAxME1iaXQvcyBvbiBTQ0MgYW5kIDEwME1iaXQvcyBvbiBGRUMuIEZBRFMgcHJvdmlkZXMgU0NDIEV0aGVybmV0IG9uCiAgKiBtb3RoZXJib2FyZCBhbmQgRkVDIEV0aGVybmV0IG9uIGRhdWdodGVyYm9hcmQuIEFsbCBuZXcgUFExIGNoaXBzIGhhdmUKICAqIGdvdCBGRUMgc28gRkVDIGlzIHRoZSBkZWZhdWx0LgpAQCAtODksNyArOTcsOSBAQAogCiAjaWZuZGVmIENPTkZJR19DT01NQU5EUwogI2RlZmluZSBDT05GSUdfQ09NTUFORFMJKENPTkZJR19DTURfREZMICAgXAorCQkJIHwgQ0ZHX0NNRF9BU0tFTlYgXAogCQkJIHwgQ0ZHX0NNRF9ESENQICAgXAorCQkJIHwgQ0ZHX0NNRF9FQ0hPICAgXAogCQkJIHwgQ0ZHX0NNRF9JTU1BUCAgXAogCQkJIHwgQ0ZHX0NNRF9KRkZTMiAgXAogCQkJIHwgQ0ZHX0NNRF9NSUkgICAgXApAQCAtMTA0LDE2ICsxMTQsMTggQEAKIC8qCiAgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCiAgKi8KLSN1bmRlZglDRkdfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KLSNkZWZpbmUJQ0ZHX1BST01QVAkJIj0+IgkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0CSovCisjZGVmaW5lCUNGR19QUk9NUFQJCSI9PiIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KKyNkZWZpbmUgQ0ZHX0hVU0hfUEFSU0VSCisjZGVmaW5lIENGR19QUk9NUFRfSFVTSF9QUzIJIj4gIgorI2RlZmluZQlDRkdfTE9OR0hFTFAJCQkJLyogI3VuZGVmIHRvIHNhdmUgbWVtb3J5CSovCiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfS0dEQikKLSNkZWZpbmUJQ0ZHX0NCU0laRQkxMDI0CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLworI2RlZmluZQlDRkdfQ0JTSVpFCQkxMDI0CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwogI2Vsc2UKLSNkZWZpbmUJQ0ZHX0NCU0laRQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCisjZGVmaW5lCUNGR19DQlNJWkUJCTI1NgkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUJKi8KICNlbmRpZgotI2RlZmluZQlDRkdfUEJTSVpFIChDRkdfQ0JTSVpFK3NpemVvZihDRkdfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KLSNkZWZpbmUJQ0ZHX01BWEFSR1MJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCi0jZGVmaW5lIENGR19CQVJHU0laRQlDRkdfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUJKi8KKyNkZWZpbmUJQ0ZHX1BCU0laRSAoQ0ZHX0NCU0laRSArIHNpemVvZihDRkdfUFJPTVBUKSArIDE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZQkqLworI2RlZmluZQlDRkdfTUFYQVJHUwkJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCisjZGVmaW5lIENGR19CQVJHU0laRQkJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCiAKICNkZWZpbmUgQ0ZHX0xPQURfQUREUgkgCTB4MDAxMDAwMDAKIApAQCAtMTI2LDYgKzEzOCw3IEBACiAgKiAoYWRkcmVzcyBtYXBwaW5ncywgcmVnaXN0ZXIgaW5pdGlhbCB2YWx1ZXMsIGV0Yy4pCiAgKiBZb3Ugc2hvdWxkIGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nIGlmIHlvdSBtYWtlIGNoYW5nZXMgaGVyZS4KICAqLworCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJbnRlcm5hbCBNZW1vcnkgTWFwcGVkIFJlZ2lzdGVyCiAgKi8KQEAgLTE0OCw2ICsxNjEsMTQgQEAKICNkZWZpbmUJQ0ZHX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKICNpZiBkZWZpbmVkKENPTkZJR19NUEM4NnhBRFMpIHx8IGRlZmluZWQoQ09ORklHX01QQzg4NUFEUykgLyogTmV3IEFEUyBvciBEdWV0ICovCiAjZGVmaW5lCUNGR19TRFJBTV9TSVpFCQkweDAwODAwMDAwICAgICAgCS8qIDggTWJ5dGUgKi8KKy8qCisgKiAyMDQ4CVNEUkFNIHJvd3MKKyAqIDEwMDAJZmFjdG9yIHMgLT4gbXMKKyAqIDY0CVBUUCAocHJlLWRpdmlkZXIgZnJvbSBNUFRQUikgZnJvbSBTRFJBTSBleGFtcGxlIGNvbmZpZ3VyYXRpb24KKyAqIDQJTnVtYmVyIG9mIHJlZnJlc2ggY3ljbGVzIHBlciBwZXJpb2QKKyAqIDY0CVJlZnJlc2ggY3ljbGUgaW4gbXMgcGVyIG51bWJlciBvZiByb3dzCisgKi8KKyNkZWZpbmUgQ0ZHX1BUQV9QRVJfQ0xLCQkoKDIwNDggKiA2NCAqIDEwMDApIC8gKDQgKiA2NCkpCiAjZWxpZiBkZWZpbmVkKENPTkZJR19GQURTKQkJCQkvKiBPbGQvbmV3IEZBRFMgKi8KICNkZWZpbmUJQ0ZHX1NEUkFNX1NJWkUJCTB4MDA0MDAwMDAJCS8qIDQgTWJ5dGUgKi8KICNlbHNlCQkJCQkJCS8qIE9sZCBBRFMgKi8KQEAgLTIyMyw5ICsyNDQsNyBAQAogICogQ2FjaGUgQ29uZmlndXJhdGlvbgogICovCiAjZGVmaW5lIENGR19DQUNIRUxJTkVfU0laRQkxNgkvKiBGb3IgYWxsIE1QQzh4eCBDUFVzCQkJKi8KLSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQogI2RlZmluZSBDRkdfQ0FDSEVMSU5FX1NISUZUCTQJLyogbG9nIGJhc2UgMiBvZiB0aGUgYWJvdmUgdmFsdWUJKi8KLSNlbmRpZgogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJMkMgY29uZmlndXJhdGlvbgpAQCAtMjc3LDMxICsyOTYsMjEgQEAKICAqIHBvd2VyIG1hbmFnZW1lbnQgYW5kIHNvbWUgb3RoZXIgaW50ZXJuYWwgY2xvY2tzCiAgKi8KICNkZWZpbmUgU0NDUl9NQVNLCVNDQ1JfRUJERjExCi0jZGVmaW5lIENGR19TQ0NSCShTQ0NSX1RCU3xTQ0NSX0NPTTAwfFNDQ1JfREZTWU5DMDB8U0NDUl9ERkJSRzAwfFNDQ1JfREZOTDAwMHxTQ0NSX0RGTkgwMDB8U0NDUl9ERkxDRDAwMHxTQ0NSX0RGQUxDRDAwKQorI2RlZmluZSBDRkdfU0NDUglTQ0NSX1RCUwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBQTFBSQ1IgLSBQTEwsIExvdy1Qb3dlciwgYW5kIFJlc2V0IENvbnRyb2wgUmVnaXN0ZXIJCTE0LTIyCisgKiBERVIgLSBEZWJ1ZyBFbmFibGUgUmVnaXN0ZXIKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIHNldCB0aGUgUExMLCB0aGUgbG93LXBvd2VyIG1vZGVzIGFuZCB0aGUgcmVzZXQgY29udHJvbAotICovCi0jaWZuZGVmIENGR19QTFBSQ1IKLSNkZWZpbmUgQ0ZHX1BMUFJDUglQTFBSQ1JfVEVYUFMKLSNlbmRpZgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoKKyAqIFNldCB0byB6ZXJvIHRvIHByZXZlbnQgdGhlIHByb2Nlc3NvciBmcm9tIGVudGVyaW5nIGRlYnVnIG1vZGUKICAqLwogI2RlZmluZSBDRkdfREVSCQkgMAogCi0vKiBCZWNhdXNlIG9mIHRoZSB3YXkgdGhlIDg2MCBzdGFydHMgdXAgYW5kIGFzc2lnbnMgQ1MwIHRoZQotKiBlbnRpcmUgYWRkcmVzcyBzcGFjZSwgd2UgaGF2ZSB0byBzZXQgdGhlIG1lbW9yeSBjb250cm9sbGVyCi0qIGRpZmZlcmVudGx5LiAgTm9ybWFsbHksIHlvdSB3cml0ZSB0aGUgb3B0aW9uIHJlZ2lzdGVyCi0qIGZpcnN0LCBhbmQgdGhlbiBlbmFibGUgdGhlIGNoaXAgc2VsZWN0IGJ5IHdyaXRpbmcgdGhlCi0qIGJhc2UgcmVnaXN0ZXIuICBGb3IgQ1MwLCB5b3UgbXVzdCB3cml0ZSB0aGUgYmFzZSByZWdpc3RlcgotKiBmaXJzdCwgZm9sbG93ZWQgYnkgdGhlIG9wdGlvbiByZWdpc3Rlci4KLSovCisvKiBCZWNhdXNlIG9mIHRoZSB3YXkgdGhlIDg2MCBzdGFydHMgdXAgYW5kIGFzc2lnbnMgQ1MwIHRoZSBlbnRpcmUKKyAqIGFkZHJlc3Mgc3BhY2UsIHdlIGhhdmUgdG8gc2V0IHRoZSBtZW1vcnkgY29udHJvbGxlciBkaWZmZXJlbnRseS4KKyAqIE5vcm1hbGx5LCB5b3Ugd3JpdGUgdGhlIG9wdGlvbiByZWdpc3RlciBmaXJzdCwgYW5kIHRoZW4gZW5hYmxlIHRoZQorICogY2hpcCBzZWxlY3QgYnkgd3JpdGluZyB0aGUgYmFzZSByZWdpc3Rlci4gIEZvciBDUzAsIHlvdSBtdXN0IHdyaXRlCisgKiB0aGUgYmFzZSByZWdpc3RlciBmaXJzdCwgZm9sbG93ZWQgYnkgdGhlIG9wdGlvbiByZWdpc3Rlci4KKyAqLwogCiAvKgogICogSW5pdCBNZW1vcnkgQ29udHJvbGxlcjoKQEAgLTMzNSw5ICszNDQsNiBAQAogCiAvKiB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBtYW51YWwgKi8KIAotI2RlZmluZSBQQ01DSUFfTUVNX0FERFIJCSgodWludCkweEZGMDIwMDAwKQotI2RlZmluZSBQQ01DSUFfTUVNX1NJWkUJCSgodWludCkoNjQgKiAxMDI0KSkKLQogI2RlZmluZQlCQ1NSMAkJCSgodWludCkgKEJDU1JfQUREUiArIDB4MDApKQogI2RlZmluZQlCQ1NSMQkJCSgodWludCkgKEJDU1JfQUREUiArIDB4MDQpKQogI2RlZmluZQlCQ1NSMgkJCSgodWludCkgKEJDU1JfQUREUiArIDB4MDgpKQpAQCAtMzk2LDU5ICs0MDIsMjggQEAKICNkZWZpbmUgQkNTUjRfVEZQTERMICAgICAgICAgICAgICgodWludCkweDQwMDAwMDAwKQogI2RlZmluZSBCQ1NSNF9UUFNRRUwgICAgICAgICAgICAgKCh1aW50KTB4MjAwMDAwMDApCiAjZGVmaW5lIEJDU1I0X1NJR05BTF9MQU1QICAgICAgICAoKHVpbnQpMHgxMDAwMDAwMCkKLSNkZWZpbmUgQkNTUjRfRkVUSF9FTiAgICAgICAgICAgICgodWludCkweDA4MDAwMDAwKQotI2RlZmluZSBCQ1NSNF9GRVRIQ0ZHMCAgICAgICAgICAgKCh1aW50KTB4MDQwMDAwMDApCi0jZGVmaW5lIEJDU1I0X0ZFVEhGREUgICAgICAgICAgICAoKHVpbnQpMHgwMjAwMDAwMCkKLSNkZWZpbmUgQkNTUjRfRkVUSENGRzEgICAgICAgICAgICgodWludCkweDAwNDAwMDAwKQotI2RlZmluZSBCQ1NSNF9GRVRIUlNUICAgICAgICAgICAgKCh1aW50KTB4MDAyMDAwMDApCi0KLSNpZmRlZiBDT05GSUdfTVBDODIzCisjaWYgZGVmaW5lZChDT05GSUdfTVBDODIzKQogI2RlZmluZSBCQ1NSNF9VU0JfRU4gICAgICAgICAgICAgKCh1aW50KTB4MDgwMDAwMDApCi0jZW5kaWYgLyogQ09ORklHX01QQzgyMyAqLwotI2lmZGVmIENPTkZJR19NUEM4NjBTQVIKLSNkZWZpbmUgQkNTUjRfVVRPUElBX0VOICAgICAgICAgICgodWludCkweDA4MDAwMDAwKQotI2VuZGlmIC8qIENPTkZJR19NUEM4NjBTQVIgKi8KLSNpZmRlZiBDT05GSUdfTVBDODYwVAotI2RlZmluZSBCQ1NSNF9GRVRIX0VOICAgICAgICAgICAgKCh1aW50KTB4MDgwMDAwMDApCi0jZW5kaWYgLyogQ09ORklHX01QQzg2MFQgKi8KLSNpZmRlZiBDT05GSUdfTVBDODIzCiAjZGVmaW5lIEJDU1I0X1VTQl9TUEVFRCAgICAgICAgICAoKHVpbnQpMHgwNDAwMDAwMCkKLSNlbmRpZiAvKiBDT05GSUdfTVBDODIzICovCi0jaWZkZWYgQ09ORklHX01QQzg2MFQKLSNkZWZpbmUgQkNTUjRfRkVUSENGRzAgICAgICAgICAgICgodWludCkweDA0MDAwMDAwKQotI2VuZGlmIC8qIENPTkZJR19NUEM4NjBUICovCi0jaWZkZWYgQ09ORklHX01QQzgyMwogI2RlZmluZSBCQ1NSNF9WQ0NPICAgICAgICAgICAgICAgKCh1aW50KTB4MDIwMDAwMDApCi0jZW5kaWYgLyogQ09ORklHX01QQzgyMyAqLwotI2lmZGVmIENPTkZJR19NUEM4NjBUCi0jZGVmaW5lIEJDU1I0X0ZFVEhGREUgICAgICAgICAgICAoKHVpbnQpMHgwMjAwMDAwMCkKLSNlbmRpZiAvKiBDT05GSUdfTVBDODYwVCAqLwotI2lmZGVmIENPTkZJR19NUEM4MjMKICNkZWZpbmUgQkNTUjRfVklERU9fT04gICAgICAgICAgICgodWludCkweDAwODAwMDAwKQotI2VuZGlmIC8qIENPTkZJR19NUEM4MjMgKi8KLSNpZmRlZiBDT05GSUdfTVBDODIzCiAjZGVmaW5lIEJDU1I0X1ZET19FS1RfQ0xLX0VOICAgICAoKHVpbnQpMHgwMDQwMDAwMCkKLSNlbmRpZiAvKiBDT05GSUdfTVBDODIzICovCi0jaWZkZWYgQ09ORklHX01QQzg2MFQKLSNkZWZpbmUgQkNTUjRfRkVUSENGRzEgICAgICAgICAgICgodWludCkweDAwNDAwMDAwKQotI2VuZGlmIC8qIENPTkZJR19NUEM4NjBUICovCi0jaWZkZWYgQ09ORklHX01QQzgyMwogI2RlZmluZSBCQ1NSNF9WSURFT19SU1QgICAgICAgICAgKCh1aW50KTB4MDAyMDAwMDApCi0jZW5kaWYgLyogQ09ORklHX01QQzgyMyAqLwotI2lmZGVmIENPTkZJR19NUEM4NjBUCi0jZGVmaW5lIEJDU1I0X0ZFVEhSU1QgICAgICAgICAgICAoKHVpbnQpMHgwMDIwMDAwMCkKLSNlbmRpZiAvKiBDT05GSUdfTVBDODYwVCAqLwotI2lmZGVmIENPTkZJR19NUEM4MjMKICNkZWZpbmUgQkNTUjRfTU9ERU1fRU4gICAgICAgICAgICgodWludCkweDAwMTAwMDAwKQotI2VuZGlmIC8qIENPTkZJR19NUEM4MjMgKi8KLSNpZmRlZiBDT05GSUdfTVBDODIzCiAjZGVmaW5lIEJDU1I0X0RBVEFfVk9JQ0UgICAgICAgICAoKHVpbnQpMHgwMDA4MDAwMCkKLSNlbmRpZiAvKiBDT05GSUdfTVBDODIzICovCi0jaWZkZWYgQ09ORklHX01QQzg1MAorI2VsaWYgZGVmaW5lZChDT05GSUdfTVBDODUwKQogI2RlZmluZSBCQ1NSNF9EQVRBX1ZPSUNFICAgICAgICAgKCh1aW50KTB4MDAwODAwMDApCi0jZW5kaWYgLyogQ09ORklHX01QQzg1MCAqLworI2VsaWYgZGVmaW5lZChDT05GSUdfTVBDODYwU0FSKQorI2RlZmluZSBCQ1NSNF9VVE9QSUFfRU4gICAgICAgICAgKCh1aW50KTB4MDgwMDAwMDApCisjZWxzZSAvKiBNUEM4NjBUIGFuZCBvdGhlciBjaGlwcyB3aXRoIEZFQyAqLworI2RlZmluZSBCQ1NSNF9GRVRIX0VOICAgICAgICAgICAgKCh1aW50KTB4MDgwMDAwMDApCisjZGVmaW5lIEJDU1I0X0ZFVEhDRkcwICAgICAgICAgICAoKHVpbnQpMHgwNDAwMDAwMCkKKyNkZWZpbmUgQkNTUjRfRkVUSEZERSAgICAgICAgICAgICgodWludCkweDAyMDAwMDAwKQorI2RlZmluZSBCQ1NSNF9GRVRIQ0ZHMSAgICAgICAgICAgKCh1aW50KTB4MDA0MDAwMDApCisjZGVmaW5lIEJDU1I0X0ZFVEhSU1QgICAgICAgICAgICAoKHVpbnQpMHgwMDIwMDAwMCkKKyNlbmRpZgogCi0vKiBCU0NSNSBleGlzdHMgb24gTVBDODZ4QURTIGFuZCBEdWV0IEFEUyBvbmx5ICovCisvKiBCU0NSNSBleGlzdHMgb24gTVBDODZ4QURTIGFuZCBNUEM4ODVBRFMgb25seSAqLwogCiAjZGVmaW5lIENGR19QSFlERVZfQUREUgkJKEJDU1JfQUREUiArIDB4MjAwMDApCiAKQEAgLTUxMSw0ICs0ODYsNCBAQAogI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQJMHgwMDAwCiAKICNkZWZpbmUgQ09ORklHX0RJU0tfU1BJTlVQX1RJTUUgMTAwMDAwMAotI3VuZGVmIENPTkZJR19ESVNLX1NQSU5VUF9USU1FCS8qIHVzaW60IENvbXBhY3QgRmxhc2ggKi8KKy8qICN1bmRlZiBDT05GSUdfRElTS19TUElOVVBfVElNRSAqLwkvKiB1c2luICBDb21wYWN0IEZsYXNoICovCmRpZmYgLS1naXQgYS9ib2FyZC9nMjAwMC9nMjAwMC5jIGIvYm9hcmQvZzIwMDAvZzIwMDAuYwppbmRleCAzZjc4NzUzLi4zOWI1YzcwMSAxMDA2NDQKLS0tIGEvYm9hcmQvZzIwMDAvZzIwMDAuYworKysgYi9ib2FyZC9nMjAwMC9nMjAwMC5jCkBAIC0xODUsNyArMTg1LDcgQEAKIAogCiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKLSNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgogZXh0ZXJuIHN0cnVjdCBuYW5kX2NoaXAgbmFuZF9kZXZfZGVzY1tDRkdfTUFYX05BTkRfREVWSUNFXTsKIAogdm9pZCBuYW5kX2luaXQodm9pZCkKZGlmZiAtLWdpdCBhL2JvYXJkL2xhcnQvZmxhc2guYyBiL2JvYXJkL2xhcnQvZmxhc2guYwppbmRleCA1MjMyZWQyLi4yOGM0NTMxIDEwMDY0NAotLS0gYS9ib2FyZC9sYXJ0L2ZsYXNoLmMKKysrIGIvYm9hcmQvbGFydC9mbGFzaC5jCkBAIC0zNDgsNyArMzQ4LDcgQEAKICAqIENvcHkgbWVtb3J5IHRvIGZsYXNoCiAgKi8KIAotdm9sYXRpbGUgc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKmluZm8sIHVsb25nIGRlc3QsIHVsb25nIGRhdGEpCitzdGF0aWMgaW50IHdyaXRlX3dvcmQgKGZsYXNoX2luZm9fdCAqaW5mbywgdWxvbmcgZGVzdCwgdWxvbmcgZGF0YSkKIHsKICAgICB2dV9sb25nICphZGRyID0gKHZ1X2xvbmcgKilkZXN0OwogICAgIHVsb25nIHJlc3VsdDsKZGlmZiAtLWdpdCBhL2JvYXJkL2xwZDdhNDB4L2ZsYXNoLmMgYi9ib2FyZC9scGQ3YTQweC9mbGFzaC5jCmluZGV4IDJkZmUzNzYuLmQxODcyMGUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2xwZDdhNDB4L2ZsYXNoLmMKKysrIGIvYm9hcmQvbHBkN2E0MHgvZmxhc2guYwpAQCAtMzUxLDggKzM1MSw3IEBACiAgKiBDb3B5IG1lbW9yeSB0byBmbGFzaAogICovCiAKLXZvbGF0aWxlIHN0YXRpYyBpbnQgd3JpdGVfd29yZCAoZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgZGVzdCwKLQkJCQkJCQkJdWxvbmcgZGF0YSkKK3N0YXRpYyBpbnQgd3JpdGVfd29yZCAoZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgZGVzdCwgdWxvbmcgZGF0YSkKIHsKIAl2dV9sb25nICphZGRyID0gKHZ1X2xvbmcgKikgZGVzdDsKIAl1bG9uZyByZXN1bHQ7CmRpZmYgLS1naXQgYS9ib2FyZC9tNTI3MmMzL2ZsYXNoLmMgYi9ib2FyZC9tNTI3MmMzL2ZsYXNoLmMKaW5kZXggZmI5MTg0My4uZjE1NjM0MiAxMDA2NDQKLS0tIGEvYm9hcmQvbTUyNzJjMy9mbGFzaC5jCisrKyBiL2JvYXJkL201MjcyYzMvZmxhc2guYwpAQCAtMjU2LDggKzI1Niw3IEBACiAJcmV0dXJuIHJjOwogfQogCi0KLXZvbGF0aWxlIHN0YXRpYyBpbnQgd3JpdGVfd29yZCAoZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgZGVzdCwgdWxvbmcgZGF0YSkKK3N0YXRpYyBpbnQgd3JpdGVfd29yZCAoZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgZGVzdCwgdWxvbmcgZGF0YSkKIHsKIAl2b2xhdGlsZSB1MTYgKmFkZHIgPSAodm9sYXRpbGUgdTE2ICopIGRlc3Q7CiAJdWxvbmcgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvYm9hcmQvbTUyODJldmIvZmxhc2guYyBiL2JvYXJkL201MjgyZXZiL2ZsYXNoLmMKaW5kZXggZmY3MDc4My4uOTVmMzVhZCAxMDA2NDQKLS0tIGEvYm9hcmQvbTUyODJldmIvZmxhc2guYworKysgYi9ib2FyZC9tNTI4MmV2Yi9mbGFzaC5jCkBAIC0yNTYsOCArMjU2LDcgQEAKIAlyZXR1cm4gcmM7CiB9CiAKLQotdm9sYXRpbGUgc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1bG9uZyBkYXRhKQorc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1bG9uZyBkYXRhKQogewogCXZvbGF0aWxlIHUxNiAqYWRkciA9ICh2b2xhdGlsZSB1MTYgKikgZGVzdDsKIAl1bG9uZyByZXN1bHQ7CmRpZmYgLS1naXQgYS9ib2FyZC9tY2MyMDAvTWFrZWZpbGUgYi9ib2FyZC9tY2MyMDAvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZkYzA4OAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL21jYzIwMC9NYWtlZmlsZQpAQCAtMCwwICsxLDQ2IEBACisjCisjIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA2CisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSBsaWIkKEJPQVJEKS5hCisKK09CSlMJOj0gJChCT0FSRCkubworCiskKExJQik6CSQoT0JKUykgJChTT0JKUykKKwkkKEFSKSBjcnYgJEAgJChPQkpTKQorCitjbGVhbjoKKwlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisKK2Rpc3RjbGVhbjoJY2xlYW4KKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworLmRlcGVuZDoJTWFrZWZpbGUgJChTT0JKUzoubz0uUykgJChPQkpTOi5vPS5jKQorCQkkKENDKSAtTSAkKENQUEZMQUdTKSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKKworLWluY2x1ZGUgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC9tY2MyMDAvY29uZmlnLm1rIGIvYm9hcmQvbWNjMjAwL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTU1NjczCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbWNjMjAwL2NvbmZpZy5tawpAQCAtMCwwICsxLDQzIEBACisjCisjIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA2CisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKKyMKKyMgTUNDMjAwIGJvYXJkOgorIworIwlWYWxpZCB2YWx1ZXMgZm9yIFRFWFRfQkFTRSBhcmU6CisjCisjCTB4RkZGMDAwMDAgICBib290IGhpZ2ggKHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24pCisjCTB4RkUwMDAwMDAgICBib290IGxvdworIwkweDAwMTAwMDAwICAgYm9vdCBmcm9tIFJBTSAoZm9yIHRlc3Rpbmcgb25seSkKKyMKKworc2luY2x1ZGUgJChUT1BESVIpL2JvYXJkLyQoQk9BUkRESVIpL2NvbmZpZy50bXAKKworaWZuZGVmIFRFWFRfQkFTRQorIyMgU3RhbmRhcmQ6IGJvb3QgaGlnaAorVEVYVF9CQVNFID0gMHhGRkYwMDAwMAorIyMgRm9yIHRlc3Rpbmc6IGJvb3QgZnJvbSBSQU0KKyMgVEVYVF9CQVNFID0gMHgwMDEwMDAwMAorZW5kaWYKKworUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURURVhUX0JBU0U9JChURVhUX0JBU0UpIC1JJChUT1BESVIpL2JvYXJkCmRpZmYgLS1naXQgYS9ib2FyZC9tY2MyMDAvbWNjMjAwLmMgYi9ib2FyZC9tY2MyMDAvbWNjMjAwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjOTlmZAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL21jYzIwMC9tY2MyMDAuYwpAQCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA2CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNAorICogTWFyayBKb25hcywgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIG1hcmsuam9uYXNAbW90b3JvbGEuY29tLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxtcGM1eHh4Lmg+CisjaW5jbHVkZSA8cGNpLmg+CisKKyNpbmNsdWRlICJtdDQ4bGM4bTMyYjItNi03LmgiCisKK2V4dGVybiBmbGFzaF9pbmZvX3QgZmxhc2hfaW5mb1tdOwkvKiBGTEFTSCBjaGlwcyBpbmZvICovCisKK3Vsb25nIGZsYXNoX2dldF9zaXplICh1bG9uZyBiYXNlLCBpbnQgYmFua251bSk7CisKKyNpZm5kZWYgQ0ZHX1JBTUJPT1QKK3N0YXRpYyB2b2lkIHNkcmFtX3N0YXJ0IChpbnQgaGlfYWRkcikKK3sKKwlsb25nIGhpX2FkZHJfYml0ID0gaGlfYWRkciA/IDB4MDEwMDAwMDAgOiAwOworCisJLyogdW5sb2NrIG1vZGUgcmVnaXN0ZXIgKi8KKwkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX0NUUkwgPSBTRFJBTV9DT05UUk9MIHwgMHg4MDAwMDAwMCB8IGhpX2FkZHJfYml0OworCV9fYXNtX18gdm9sYXRpbGUgKCJzeW5jIik7CisKKwkvKiBwcmVjaGFyZ2UgYWxsIGJhbmtzICovCisJKih2dV9sb25nICopTVBDNVhYWF9TRFJBTV9DVFJMID0gU0RSQU1fQ09OVFJPTCB8IDB4ODAwMDAwMDIgfCBoaV9hZGRyX2JpdDsKKwlfX2FzbV9fIHZvbGF0aWxlICgic3luYyIpOworCisjaWYgU0RSQU1fRERSCisJLyogc2V0IG1vZGUgcmVnaXN0ZXI6IGV4dGVuZGVkIG1vZGUgKi8KKwkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX01PREUgPSBTRFJBTV9FTU9ERTsKKwlfX2FzbV9fIHZvbGF0aWxlICgic3luYyIpOworCisJLyogc2V0IG1vZGUgcmVnaXN0ZXI6IHJlc2V0IERMTCAqLworCSoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fTU9ERSA9IFNEUkFNX01PREUgfCAweDA0MDAwMDAwOworCV9fYXNtX18gdm9sYXRpbGUgKCJzeW5jIik7CisjZW5kaWYKKworCS8qIHByZWNoYXJnZSBhbGwgYmFua3MgKi8KKwkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX0NUUkwgPSBTRFJBTV9DT05UUk9MIHwgMHg4MDAwMDAwMiB8IGhpX2FkZHJfYml0OworCV9fYXNtX18gdm9sYXRpbGUgKCJzeW5jIik7CisKKwkvKiBhdXRvIHJlZnJlc2ggKi8KKwkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX0NUUkwgPSBTRFJBTV9DT05UUk9MIHwgMHg4MDAwMDAwNCB8IGhpX2FkZHJfYml0OworCV9fYXNtX18gdm9sYXRpbGUgKCJzeW5jIik7CisKKwkvKiBzZXQgbW9kZSByZWdpc3RlciAqLworCSoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fTU9ERSA9IFNEUkFNX01PREU7CisJX19hc21fXyB2b2xhdGlsZSAoInN5bmMiKTsKKworCS8qIG5vcm1hbCBvcGVyYXRpb24gKi8KKwkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX0NUUkwgPSBTRFJBTV9DT05UUk9MIHwgaGlfYWRkcl9iaXQ7CisJX19hc21fXyB2b2xhdGlsZSAoInN5bmMiKTsKK30KKyNlbmRpZgorCisvKgorICogQVRURU5USU9OOiBBbHRob3VnaCBwYXJ0aWFsbHkgcmVmZXJlbmNlZCBpbml0ZHJhbSBkb2VzIE5PVCBtYWtlIHJlYWwgdXNlCisgKiAgICAgICAgICAgIHVzZSBvZiBDRkdfU0RSQU1fQkFTRS4gVGhlIGNvZGUgZG9lcyBub3Qgd29yayBpZiBDRkdfU0RSQU1fQkFTRQorICogICAgICAgICAgICBpcyBzb21ldGhpbmcgZWxzZSB0aGFuIDB4MDAwMDAwMDAuCisgKi8KKworbG9uZyBpbnQgaW5pdGRyYW0gKGludCBib2FyZF90eXBlKQoreworCXVsb25nIGRyYW1zaXplID0gMDsKKwl1bG9uZyBkcmFtc2l6ZTIgPSAwOworI2lmbmRlZiBDRkdfUkFNQk9PVAorCXVsb25nIHRlc3QxLCB0ZXN0MjsKKworCS8qIHNldHVwIFNEUkFNIGNoaXAgc2VsZWN0cyAqLworCSoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fQ1MwQ0ZHID0gMHgwMDAwMDAxZTsvKiAyRyBhdCAweDAgKi8KKwkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX0NTMUNGRyA9IDB4ODAwMDAwMDA7LyogZGlzYWJsZWQgKi8KKwlfX2FzbV9fIHZvbGF0aWxlICgic3luYyIpOworCisJLyogc2V0dXAgY29uZmlnIHJlZ2lzdGVycyAqLworCSoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fQ09ORklHMSA9IFNEUkFNX0NPTkZJRzE7CisJKih2dV9sb25nICopTVBDNVhYWF9TRFJBTV9DT05GSUcyID0gU0RSQU1fQ09ORklHMjsKKwlfX2FzbV9fIHZvbGF0aWxlICgic3luYyIpOworCisjaWYgU0RSQU1fRERSCisJLyogc2V0IHRhcCBkZWxheSAqLworCSoodnVfbG9uZyAqKU1QQzVYWFhfQ0RNX1BPUkNGRyA9IFNEUkFNX1RBUERFTEFZOworCV9fYXNtX18gdm9sYXRpbGUgKCJzeW5jIik7CisjZW5kaWYKKworCS8qIGZpbmQgUkFNIHNpemUgdXNpbmcgU0RSQU0gQ1MwIG9ubHkgKi8KKwlzZHJhbV9zdGFydCgwKTsKKwl0ZXN0MSA9IGdldF9yYW1fc2l6ZSgobG9uZyAqKUNGR19TRFJBTV9CQVNFLCAweDgwMDAwMDAwKTsKKwlzZHJhbV9zdGFydCgxKTsKKwl0ZXN0MiA9IGdldF9yYW1fc2l6ZSgobG9uZyAqKUNGR19TRFJBTV9CQVNFLCAweDgwMDAwMDAwKTsKKwlpZiAodGVzdDEgPiB0ZXN0MikgeworCQlzZHJhbV9zdGFydCgwKTsKKwkJZHJhbXNpemUgPSB0ZXN0MTsKKwl9IGVsc2UgeworCQlkcmFtc2l6ZSA9IHRlc3QyOworCX0KKworCS8qIG1lbW9yeSBzbWFsbGVyIHRoYW4gMU1CIGlzIGltcG9zc2libGUgKi8KKwlpZiAoZHJhbXNpemUgPCAoMSA8PCAyMCkpIHsKKwkJZHJhbXNpemUgPSAwOworCX0KKworCS8qIHNldCBTRFJBTSBDUzAgc2l6ZSBhY2NvcmRpbmcgdG8gdGhlIGFtb3VudCBvZiBSQU0gZm91bmQgKi8KKwlpZiAoZHJhbXNpemUgPiAwKSB7CisJCSoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fQ1MwQ0ZHID0gMHgxMyArIF9fYnVpbHRpbl9mZnMoZHJhbXNpemUgPj4gMjApIC0gMTsKKwl9IGVsc2UgeworCQkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX0NTMENGRyA9IDA7IC8qIGRpc2FibGVkICovCisJfQorCisJLyogbGV0IFNEUkFNIENTMSBzdGFydCByaWdodCBhZnRlciBDUzAgKi8KKwkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX0NTMUNGRyA9IGRyYW1zaXplICsgMHgwMDAwMDAxZTsvKiAyRyAqLworCisJLyogZmluZCBSQU0gc2l6ZSB1c2luZyBTRFJBTSBDUzEgb25seSAqLworCWlmICghZHJhbXNpemUpCisJCXNkcmFtX3N0YXJ0KDApOworCXRlc3QyID0gdGVzdDEgPSBnZXRfcmFtX3NpemUoKGxvbmcgKikoQ0ZHX1NEUkFNX0JBU0UgKyBkcmFtc2l6ZSksIDB4ODAwMDAwMDApOworCWlmICghZHJhbXNpemUpIHsKKwkJc2RyYW1fc3RhcnQoMSk7CisJCXRlc3QyID0gZ2V0X3JhbV9zaXplKChsb25nICopKENGR19TRFJBTV9CQVNFICsgZHJhbXNpemUpLCAweDgwMDAwMDAwKTsKKwl9CisJaWYgKHRlc3QxID4gdGVzdDIpIHsKKwkJc2RyYW1fc3RhcnQoMCk7CisJCWRyYW1zaXplMiA9IHRlc3QxOworCX0gZWxzZSB7CisJCWRyYW1zaXplMiA9IHRlc3QyOworCX0KKworCS8qIG1lbW9yeSBzbWFsbGVyIHRoYW4gMU1CIGlzIGltcG9zc2libGUgKi8KKwlpZiAoZHJhbXNpemUyIDwgKDEgPDwgMjApKSB7CisJCWRyYW1zaXplMiA9IDA7CisJfQorCisJLyogc2V0IFNEUkFNIENTMSBzaXplIGFjY29yZGluZyB0byB0aGUgYW1vdW50IG9mIFJBTSBmb3VuZCAqLworCWlmIChkcmFtc2l6ZTIgPiAwKSB7CisJCSoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fQ1MxQ0ZHID0gZHJhbXNpemUKKwkJCXwgKDB4MTMgKyBfX2J1aWx0aW5fZmZzKGRyYW1zaXplMiA+PiAyMCkgLSAxKTsKKwl9IGVsc2UgeworCQkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX0NTMUNGRyA9IGRyYW1zaXplOyAvKiBkaXNhYmxlZCAqLworCX0KKworI2Vsc2UgLyogQ0ZHX1JBTUJPT1QgKi8KKworCS8qIHJldHJpZXZlIHNpemUgb2YgbWVtb3J5IGNvbm5lY3RlZCB0byBTRFJBTSBDUzAgKi8KKwlkcmFtc2l6ZSA9ICoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fQ1MwQ0ZHICYgMHhGRjsKKwlpZiAoZHJhbXNpemUgPj0gMHgxMykgeworCQlkcmFtc2l6ZSA9ICgxIDw8IChkcmFtc2l6ZSAtIDB4MTMpKSA8PCAyMDsKKwl9IGVsc2UgeworCQlkcmFtc2l6ZSA9IDA7CisJfQorCisJLyogcmV0cmlldmUgc2l6ZSBvZiBtZW1vcnkgY29ubmVjdGVkIHRvIFNEUkFNIENTMSAqLworCWRyYW1zaXplMiA9ICoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fQ1MxQ0ZHICYgMHhGRjsKKwlpZiAoZHJhbXNpemUyID49IDB4MTMpIHsKKwkJZHJhbXNpemUyID0gKDEgPDwgKGRyYW1zaXplMiAtIDB4MTMpKSA8PCAyMDsKKwl9IGVsc2UgeworCQlkcmFtc2l6ZTIgPSAwOworCX0KKworI2VuZGlmIC8qIENGR19SQU1CT09UICovCisKKwlyZXR1cm4gZHJhbXNpemUgKyBkcmFtc2l6ZTI7Cit9CisKK2ludCBjaGVja2JvYXJkICh2b2lkKQoreworCXB1dHMgKCJCb2FyZDogTUNDMjAwXG4iKTsKKwlyZXR1cm4gMDsKK30KKworaW50IG1pc2NfaW5pdF9yICh2b2lkKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJLyoKKwkgKiBBZGp1c3QgZmxhc2ggc3RhcnQgYW5kIG9mZnNldCB0byBkZXRlY3RlZCB2YWx1ZXMKKwkgKi8KKwlnZC0+YmQtPmJpX2ZsYXNoc3RhcnQgPSAwIC0gZ2QtPmJkLT5iaV9mbGFzaHNpemU7CisJZ2QtPmJkLT5iaV9mbGFzaG9mZnNldCA9IDA7CisKKwkvKgorCSAqIENoZWNrIGlmIGJvb3QgRkxBU0ggaXNuJ3QgbWF4IHNpemUKKwkgKi8KKwlpZiAoZ2QtPmJkLT5iaV9mbGFzaHNpemUgPCAoMCAtIENGR19GTEFTSF9CQVNFKSkgeworCQkvKiBhZGp1c3QgbWFwcGluZyAqLworCQkqKHZ1X2xvbmcgKilNUEM1WFhYX0JPT1RDU19TVEFSVCA9ICoodnVfbG9uZyAqKU1QQzVYWFhfQ1MwX1NUQVJUID0KKwkJCVNUQVJUX1JFRyhnZC0+YmQtPmJpX2ZsYXNoc3RhcnQpOworCQkqKHZ1X2xvbmcgKilNUEM1WFhYX0JPT1RDU19TVE9QID0gKih2dV9sb25nICopTVBDNVhYWF9DUzBfU1RPUCA9CisJCQlTVE9QX1JFRyhnZC0+YmQtPmJpX2ZsYXNoc3RhcnQsIGdkLT5iZC0+YmlfZmxhc2hzaXplKTsKKworCQkvKgorCQkgKiBSZS1jaGVjayB0byBnZXQgY29ycmVjdCBiYXNlIGFkZHJlc3MKKwkJICovCisJCWZsYXNoX2dldF9zaXplKGdkLT5iZC0+YmlfZmxhc2hzdGFydCwgQ0ZHX01BWF9GTEFTSF9CQU5LUyAtIDEpOworCisJCS8qCisJCSAqIFJlLWRvIGZsYXNoIHByb3RlY3Rpb24gdXBvbiBuZXcgYWRkcmVzc2VzCisJCSAqLworCQlmbGFzaF9wcm90ZWN0IChGTEFHX1BST1RFQ1RfQ0xFQVIsCisJCQkgICAgICAgZ2QtPmJkLT5iaV9mbGFzaHN0YXJ0LCAweGZmZmZmZmZmLAorCQkJICAgICAgICZmbGFzaF9pbmZvW0NGR19NQVhfRkxBU0hfQkFOS1MgLSAxXSk7CisKKwkJLyogTW9uaXRvciBwcm90ZWN0aW9uIE9OIGJ5IGRlZmF1bHQgKi8KKwkJZmxhc2hfcHJvdGVjdCAoRkxBR19QUk9URUNUX1NFVCwKKwkJCSAgICAgICBDRkdfTU9OSVRPUl9CQVNFLCBDRkdfTU9OSVRPUl9CQVNFICsgbW9uaXRvcl9mbGFzaF9sZW4gLSAxLAorCQkJICAgICAgICZmbGFzaF9pbmZvW0NGR19NQVhfRkxBU0hfQkFOS1MgLSAxXSk7CisKKwkJLyogRW52aXJvbm1lbnQgcHJvdGVjdGlvbiBPTiBieSBkZWZhdWx0ICovCisJCWZsYXNoX3Byb3RlY3QgKEZMQUdfUFJPVEVDVF9TRVQsCisJCQkgICAgICAgQ0ZHX0VOVl9BRERSLAorCQkJICAgICAgIENGR19FTlZfQUREUiArIENGR19FTlZfU0VDVF9TSVpFIC0gMSwKKwkJCSAgICAgICAmZmxhc2hfaW5mb1tDRkdfTUFYX0ZMQVNIX0JBTktTIC0gMV0pOworCisJCS8qIFJlZHVuZGFudCBlbnZpcm9ubWVudCBwcm90ZWN0aW9uIE9OIGJ5IGRlZmF1bHQgKi8KKwkJZmxhc2hfcHJvdGVjdCAoRkxBR19QUk9URUNUX1NFVCwKKwkJCSAgICAgICBDRkdfRU5WX0FERFJfUkVEVU5ELAorCQkJICAgICAgIENGR19FTlZfQUREUl9SRURVTkQgKyBDRkdfRU5WX1NJWkVfUkVEVU5EIC0gMSwKKwkJCSAgICAgICAmZmxhc2hfaW5mb1tDRkdfTUFYX0ZMQVNIX0JBTktTIC0gMV0pOworCX0KKworCXJldHVybiAoMCk7Cit9CisKKyNpZmRlZglDT05GSUdfUENJCitzdGF0aWMgc3RydWN0IHBjaV9jb250cm9sbGVyIGhvc2U7CisKK2V4dGVybiB2b2lkIHBjaV9tcGM1eHh4X2luaXQoc3RydWN0IHBjaV9jb250cm9sbGVyICopOworCit2b2lkIHBjaV9pbml0X2JvYXJkKHZvaWQpCit7CisJcGNpX21wYzV4eHhfaW5pdCgmaG9zZSk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQgKENGR19DTURfSURFKSAmJiBkZWZpbmVkIChDT05GSUdfSURFX1JFU0VUKQorCit2b2lkIGluaXRfaWRlX3Jlc2V0ICh2b2lkKQoreworCWRlYnVnICgiaW5pdF9pZGVfcmVzZXRcbiIpOworCit9CisKK3ZvaWQgaWRlX3NldF9yZXNldCAoaW50IGlkZXJlc2V0KQoreworCWRlYnVnICgiaWRlX3Jlc2V0KCVkKVxuIiwgaWRlcmVzZXQpOworCit9CisjZW5kaWYgLyogZGVmaW5lZCAoQ0ZHX0NNRF9JREUpICYmIGRlZmluZWQgKENPTkZJR19JREVfUkVTRVQpICovCisKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9ET0MpCitleHRlcm4gdm9pZCBkb2NfcHJvYmUgKHVsb25nIHBoeXNhZHIpOwordm9pZCBkb2NfaW5pdCAodm9pZCkKK3sKKwlkb2NfcHJvYmUgKENGR19ET0NfQkFTRSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL21jYzIwMC9tdDQ2djE2bTE2LTc1LmggYi9ib2FyZC9tY2MyMDAvbXQ0NnYxNm0xNi03NS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NTBmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9tY2MyMDAvbXQ0NnYxNm0xNi03NS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDQKKyAqIE1hcmsgSm9uYXMsIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBtYXJrLmpvbmFzQG1vdG9yb2xhLmNvbS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjZGVmaW5lIFNEUkFNX0REUgkxCQkvKiBpcyBERFIgKi8KKworI2lmIGRlZmluZWQoQ09ORklHX01QQzUyMDApCisvKiBTZXR0aW5ncyBmb3IgWExCID0gMTMyIE1IeiAqLworI2RlZmluZSBTRFJBTV9NT0RFCTB4MDE4RDAwMDAKKyNkZWZpbmUgU0RSQU1fRU1PREUJMHg0MDA5MDAwMAorI2RlZmluZSBTRFJBTV9DT05UUk9MCTB4NzE0ZjBmMDAKKyNkZWZpbmUgU0RSQU1fQ09ORklHMQkweDczNzIyOTMwCisjZGVmaW5lIFNEUkFNX0NPTkZJRzIJMHg0Nzc3MDAwMAorI2RlZmluZSBTRFJBTV9UQVBERUxBWQkweDEwMDAwMDAwCisKKyNlbHNlCisjZXJyb3IgQ09ORklHX01QQzUyMDAgbm90IGRlZmluZWQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYm9hcmQvbWNjMjAwL210NDhsYzE2bTE2YTItNzUuaCBiL2JvYXJkL21jYzIwMC9tdDQ4bGMxNm0xNmEyLTc1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZkZjAzOQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL21jYzIwMC9tdDQ4bGMxNm0xNmEyLTc1LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNAorICogTWFyayBKb25hcywgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIG1hcmsuam9uYXNAbW90b3JvbGEuY29tLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNkZWZpbmUgU0RSQU1fRERSCTAJCS8qIGlzIFNEUiAqLworCisjaWYgZGVmaW5lZChDT05GSUdfTVBDNTIwMCkKKy8qIFNldHRpbmdzIGZvciBYTEIgPSAxMzIgTUh6ICovCisjZGVmaW5lIFNEUkFNX01PREUJMHgwMENEMDAwMAorI2RlZmluZSBTRFJBTV9DT05UUk9MCTB4NTA0RjAwMDAKKyNkZWZpbmUgU0RSQU1fQ09ORklHMQkweEQyMzIyODAwCisjZGVmaW5lIFNEUkFNX0NPTkZJRzIJMHg4QUQ3MDAwMAorCisjZWxpZiBkZWZpbmVkKENPTkZJR19NR1Q1MTAwKQorLyogU2V0dGluZ3MgZm9yIFhMQiA9IDY2IE1IeiAqLworI2RlZmluZSBTRFJBTV9NT0RFCTB4MDA4RDAwMDAKKyNkZWZpbmUgU0RSQU1fQ09OVFJPTAkweDUwNEYwMDAwCisjZGVmaW5lIFNEUkFNX0NPTkZJRzEJMHhDMjIyMjYwMAorI2RlZmluZSBTRFJBTV9DT05GSUcyCTB4ODhCNzAwMDQKKyNkZWZpbmUgU0RSQU1fQUREUlNFTAkweDAyMDAwMDAwCisKKyNlbHNlCisjZXJyb3IgTmVpdGhlciBDT05GSUdfTVBDNTIwMCBvciBDT05GSUdfTUdUNTEwMCBkZWZpbmVkCisjZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL21jYzIwMC9tdDQ4bGM4bTMyYjItNi03LmggYi9ib2FyZC9tY2MyMDAvbXQ0OGxjOG0zMmIyLTYtNy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYWViYmQKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9tY2MyMDAvbXQ0OGxjOG0zMmIyLTYtNy5oCkBAIC0wLDAgKzEsMTIgQEAKKy8qCisgKiBDb25maWd1cmF0aW9uIFJlZ2lzdGVycyBmb3IgdGhlIE1UNDhMQzhNMzJCMiBTRFJBTSBvbiB0aGUgTVBDNTIwMCBwbGF0Zm9ybQorICovCisKKyNkZWZpbmUgU0RSQU1fRERSCTAJCS8qIGlzIFNEUiAqLworCisvKiBTZXR0aW5ncyBmb3IgWExCID0gMTMyIE1IeiAqLworCisjZGVmaW5lIFNEUkFNX01PREUJMHgwMDhkMDAwMCAvKiBDTC0zIEJVUlNULTggLT4gTW9kZSBSZWdpc3RlciBNQkFSICsgMHgwMTAwICovCisjZGVmaW5lIFNEUkFNX0NPTlRST0wJMHg1MDRmMDAwMCAvKiBDb250cm9sIFJlZ2lzdGVyIE1CQVIgKyAweDAxMDQgKi8KKyNkZWZpbmUgU0RSQU1fQ09ORklHMQkweGMyMjIyOTAwIC8qIERlbGF5cyBiZXR3ZWVuIGNvbW1hbmRzIC0+IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMSBNQkFSICsgMHgwMTA4ICovCisjZGVmaW5lIFNEUkFNX0NPTkZJRzIJMHg4OGM3MDAwMCAvKiBEZWxheXMgYmV0d2VlbiBjb21tYW5kcyAtPiBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIgTUJBUiArIDB4MDEwQyAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvbWNjMjAwL3UtYm9vdC5sZHMgYi9ib2FyZC9tY2MyMDAvdS1ib290LmxkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmRlYTZiCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbWNjMjAwL3UtYm9vdC5sZHMKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNgorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCitPVVRQVVRfQVJDSChwb3dlcnBjKQorU0VBUkNIX0RJUigvbGliKTsgU0VBUkNIX0RJUigvdXNyL2xpYik7IFNFQVJDSF9ESVIoL3Vzci9sb2NhbC9saWIpOyBTRUFSQ0hfRElSKC91c3IvbG9jYWwvcG93ZXJwYy1hbnktZWxmL2xpYik7CisvKiBEbyB3ZSBuZWVkIGFueSBvZiB0aGVzZSBmb3IgZWxmPworICAgX19EWU5BTUlDID0gMDsgICAgKi8KK1NFQ1RJT05TCit7CisgIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLworICAuID0gKyBTSVpFT0ZfSEVBREVSUzsKKyAgLmludGVycCA6IHsgKiguaW50ZXJwKSB9CisgIC5oYXNoICAgICAgICAgIDogeyAqKC5oYXNoKQkJfQorICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQorICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQorICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CisgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KKyAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQorICAucmVsYS5jdG9ycyAgICA6IHsgKigucmVsYS5jdG9ycykJfQorICAucmVsLmR0b3JzICAgICA6IHsgKigucmVsLmR0b3JzKQl9CisgIC5yZWxhLmR0b3JzICAgIDogeyAqKC5yZWxhLmR0b3JzKQl9CisgIC5yZWwuYnNzICAgICAgIDogeyAqKC5yZWwuYnNzKQkJfQorICAucmVsYS5ic3MgICAgICA6IHsgKigucmVsYS5ic3MpCQl9CisgIC5yZWwucGx0ICAgICAgIDogeyAqKC5yZWwucGx0KQkJfQorICAucmVsYS5wbHQgICAgICA6IHsgKigucmVsYS5wbHQpCQl9CisgIC5pbml0ICAgICAgICAgIDogeyAqKC5pbml0KQl9CisgIC5wbHQgOiB7ICooLnBsdCkgfQorICAudGV4dCAgICAgIDoKKyAgeworICAgIGNwdS9tcGM1eHh4L3N0YXJ0Lm8JKC50ZXh0KQorICAgICooLnRleHQpCisgICAgKiguZml4dXApCisgICAgKiguZ290MSkKKyAgICAuID0gQUxJR04oMTYpOworICAgICooLnJvZGF0YSkKKyAgICAqKC5yb2RhdGExKQorICAgICooLnJvZGF0YS5zdHIxLjQpCisgICAgKiguZWhfZnJhbWUpCisgIH0KKyAgLmZpbmkgICAgICA6IHsgKiguZmluaSkgICAgfSA9MAorICAuY3RvcnMgICAgIDogeyAqKC5jdG9ycykgICB9CisgIC5kdG9ycyAgICAgOiB7ICooLmR0b3JzKSAgIH0KKworICAvKiBSZWFkLXdyaXRlIHNlY3Rpb24sIG1lcmdlZCBpbnRvIGRhdGEgc2VnbWVudDogKi8KKyAgLiA9ICguICsgMHgwRkZGKSAmIDB4RkZGRkYwMDA7CisgIF9lcm90ZXh0ID0gLjsKKyAgUFJPVklERSAoZXJvdGV4dCA9IC4pOworICAucmVsb2MgICA6CisgIHsKKyAgICAqKC5nb3QpCisgICAgX0dPVDJfVEFCTEVfID0gLjsKKyAgICAqKC5nb3QyKQorICAgIF9GSVhVUF9UQUJMRV8gPSAuOworICAgICooLmZpeHVwKQorICB9CisgIF9fZ290Ml9lbnRyaWVzID0gKF9GSVhVUF9UQUJMRV8gLSBfR09UMl9UQUJMRV8pID4+IDI7CisgIF9fZml4dXBfZW50cmllcyA9ICguIC0gX0ZJWFVQX1RBQkxFXykgPj4gMjsKKworICAuZGF0YSAgICA6CisgIHsKKyAgICAqKC5kYXRhKQorICAgICooLmRhdGExKQorICAgICooLnNkYXRhKQorICAgICooLnNkYXRhMikKKyAgICAqKC5keW5hbWljKQorICAgIENPTlNUUlVDVE9SUworICB9CisgIF9lZGF0YSAgPSAgLjsKKyAgUFJPVklERSAoZWRhdGEgPSAuKTsKKworICAuID0gLjsKKyAgX191X2Jvb3RfY21kX3N0YXJ0ID0gLjsKKyAgLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KKyAgX191X2Jvb3RfY21kX2VuZCA9IC47CisKKworICAuID0gLjsKKyAgX19zdGFydF9fX2V4X3RhYmxlID0gLjsKKyAgX19leF90YWJsZSA6IHsgKihfX2V4X3RhYmxlKSB9CisgIF9fc3RvcF9fX2V4X3RhYmxlID0gLjsKKworICAuID0gQUxJR04oNDA5Nik7CisgIF9faW5pdF9iZWdpbiA9IC47CisgIC50ZXh0LmluaXQgOiB7ICooLnRleHQuaW5pdCkgfQorICAuZGF0YS5pbml0IDogeyAqKC5kYXRhLmluaXQpIH0KKyAgLiA9IEFMSUdOKDQwOTYpOworICBfX2luaXRfZW5kID0gLjsKKworICBfX2Jzc19zdGFydCA9IC47CisgIC5ic3MgICAgICAgOgorICB7CisgICAqKC5zYnNzKSAqKC5zY29tbW9uKQorICAgKiguZHluYnNzKQorICAgKiguYnNzKQorICAgKihDT01NT04pCisgIH0KKyAgX2VuZCA9IC4gOworICBQUk9WSURFIChlbmQgPSAuKTsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL25ldHBob25lL2NvbmZpZy5tayBiL2JvYXJkL25ldHBob25lL2NvbmZpZy5tawppbmRleCA4NDk3ZWJjLi5kZTE3OWMyIDEwMDY0NAotLS0gYS9ib2FyZC9uZXRwaG9uZS9jb25maWcubWsKKysrIGIvYm9hcmQvbmV0cGhvbmUvY29uZmlnLm1rCkBAIC0yNiwzICsyNiw2IEBACiAjCiAKIFRFWFRfQkFTRSA9IDB4NDAwMDAwMDAKKworIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQorQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCmRpZmYgLS1naXQgYS9ib2FyZC9uZXRwaG9uZS9uZXRwaG9uZS5jIGIvYm9hcmQvbmV0cGhvbmUvbmV0cGhvbmUuYwppbmRleCBkZDAzZTRiLi4yOTdkZTk3IDEwMDY0NAotLS0gYS9ib2FyZC9uZXRwaG9uZS9uZXRwaG9uZS5jCisrKyBiL2JvYXJkL25ldHBob25lL25ldHBob25lLmMKQEAgLTU5OSw3ICs1OTksNyBAQAogCiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKIAotI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL25hbmRfbGVnYWN5Lmg+CiAKIGV4dGVybiB1bG9uZyBuYW5kX3Byb2JlKHVsb25nIHBoeXNhZHIpOwogZXh0ZXJuIHN0cnVjdCBuYW5kX2NoaXAgbmFuZF9kZXZfZGVzY1tDRkdfTUFYX05BTkRfREVWSUNFXTsKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YXIvTWFrZWZpbGUgYi9ib2FyZC9uZXRzdGFyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMjA1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9uZXRzdGFyL01ha2VmaWxlCkBAIC0wLDAgKzEsODUgQEAKKyMKKyMgKEMpIENvcHlyaWdodCAyMDA1CisjIExhZGlzbGF2IE1pY2hsLCAyTiBUZWxla29tdW5pa2FjZSwgbWljaGxAMm4uY3oKKyMKKyMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyMgcHJvamVjdC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCisKK0xJQgk9IGxpYiQoQk9BUkQpLmEKKworT0JKUwk6PSBuZXRzdGFyLm8gZmxhc2gubyBuYW5kLm8KK1NPQkpTCTo9IHNldHVwLm8gY3JjZWsubworCitnY2NsaWJkaXIgOj0gJChzaGVsbCBkaXJuYW1lIGAkKENDKSAtcHJpbnQtbGliZ2NjLWZpbGUtbmFtZWApCisKK0xPQURfQUREUiA9IDB4MTA0MDAwMDAKK0xEU0NSSVBUID0gJChUT1BESVIpL2JvYXJkLyQoQk9BUkRESVIpL2VlcHJvbS5sZHMKKworSE9TVF9DRkxBR1MgPSAtV2FsbCAtcGVkYW50aWMgLUkkKFRPUERJUikvaW5jbHVkZQorCithbGw6CSQoTElCKSBlZXByb20uc3JlYyBlZXByb20uYmluIGNyY2VrLnNyZWMgY3JjZWsuYmluIGNyY2l0CisKKyQoTElCKToJJChPQkpTKSAkKFNPQkpTKQorCSQoQVIpIGNydiAkQCAkXgorCitlZXByb20uc3JlYzoJZWVwcm9tLm8gZWVwcm9tX3N0YXJ0Lm8KKwkkKExEKSAtVCAkKExEU0NSSVBUKSAtZyAtVHRleHQgJChMT0FEX0FERFIpIFwKKwkJLW8gJCg8Oi5vPSkgLWUgJCg8Oi5vPSkgJF4gXAorCQktTC4uLy4uL2V4YW1wbGVzIC1sc3R1YnMgXAorCQktTC4uLy4uL2xpYl9nZW5lcmljIC1sZ2VuZXJpYyBcCisJCS1MJChnY2NsaWJkaXIpIC1sZ2NjCisJJChPQkpDT1BZKSAtTyBzcmVjICQoPDoubz0pICRACisKK2VlcHJvbS5iaW46CWVlcHJvbS5zcmVjCisJJChPQkpDT1BZKSAtSSBzcmVjIC1PIGJpbmFyeSAkPCAkQCAyPi9kZXYvbnVsbAorCitjcmNlay5zcmVjOgljcmNlay5vCisJJChMRCkgLWcgLVR0ZXh0IDB4MDAwMDAwMDAgXAorCQktbyAkKDw6Lm89KSAtZSAkKDw6Lm89KSAkXgorCSQoT0JKQ09QWSkgLU8gc3JlYyAkKDw6Lm89KSAkQAorCitjcmNlay5iaW46CWNyY2VrLnNyZWMKKwkkKE9CSkNPUFkpIC1JIHNyZWMgLU8gYmluYXJ5ICQ8ICRAIDI+L2Rldi9udWxsCisKK2NyY2l0OgkJY3JjaXQubyBjcmMzMi5vCisJJChIT1NUQ0MpICQoSE9TVF9DRkxBR1MpIC1vICRAICReCisKK2NyY2l0Lm86CWNyY2l0LmMKKwkkKEhPU1RDQykgJChIT1NUX0NGTEFHUykgLWMgJDwKKworY3JjMzIubzoJJChUT1BESVIpL3Rvb2xzL2NyYzMyLmMKKwkkKEhPU1RDQykgJChIT1NUX0NGTEFHUykgLURVU0VfSE9TVENDIC1jICQ8CisKK2NsZWFuOgorCXJtIC1mICQoU09CSlMpICQoT0JKUykgZWVwcm9tIGVlcHJvbS5zcmVjIGVlcHJvbS5iaW4gXAorCQljcmNlayBjcmNlay5zcmVjIGNyY2VrLmJpbgorCitkaXN0Y2xlYW46CWNsZWFuCisJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKy5kZXBlbmQ6CU1ha2VmaWxlICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykKKwkJJChDQykgLU0gJChDUFBGTEFHUykgJChTT0JKUzoubz0uUykgJChPQkpTOi5vPS5jKSA+ICRACisKK3NpbmNsdWRlIC5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3Rhci9jb25maWcubWsgYi9ib2FyZC9uZXRzdGFyL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGQ2NDdhCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbmV0c3Rhci9jb25maWcubWsKQEAgLTAsMCArMSwxNCBAQAorIworIyBMaW51eC1LZXJuZWwgaXMgZXhwZWN0ZWQgdG8gYmUgYXQgMTAwMCc4MDAwLAorIyBlbnRyeSAxMDAwJzgwMDAgKG1lbSBiYXNlICsgcmVzZXJ2ZWQpCisjCisjIFdlIGxvYWQgb3Vyc2VsZiB0byBpbnRlcm5hbCBSQU0gYXQgMjAwMScyMDAwCisjIENoZWNrIG1hcCBmaWxlIHdoZW4gY2hhbmdpbmcgVEVYVF9CQVNFLgorIyBFdmVyeXRoaW5nIGhhcyBmaXQgaW50byAxOTJrQiBpbnRlcm5hbCBTUkFNIQorIworCisjIFhYWCBURVhUX0JBU0UgPSAweDIwMDEyMDAwCitURVhUX0JBU0UgPSAweDEzRkMwMDAwCisKKyMgQ29tcGlsZSB0aGUgbmV3IE5BTkQgY29kZQorQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kL2xpYm5hbmQuYQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3Rhci9jcmNlay5TIGIvYm9hcmQvbmV0c3Rhci9jcmNlay5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYTRkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9uZXRzdGFyL2NyY2VrLlMKQEAgLTAsMCArMSwxNzcgQEAKKy8qKgorICogKEMpIENvcHlyaWdodCAyMDA1CisgKiAyTiBUZWxla29tdW5pa2FjZSwgTGFkaXNsYXYgTWljaGwgPG1pY2hsQDJuLmN6PgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiB2ZXJzaW9uIDIuCisgKgorICogSW1hZ2UgbGF5b3V0IGxvb2tzIGxpa2UgZm9sbG93aW5nOgorICoJdTMyIC0gc2l6ZQorICoJdTMyIC0gdmVyc2lvbgorICoJLi4uIC0gZGF0YQorICoJdTMyIC0gY3JjMzIKKyAqLworCisjaW5jbHVkZSAiY3JjZWsuaCIKKworLyoqCisgKiBkb19jcmMzMiAtIGNhbGN1bGF0ZSBDUkMzMiBvZiBnaXZlbiBidWZmZXIKKyAqIHIwIC0gY3JjCisgKiByMSAtIHBvaW50ZXIgdG8gYnVmZmVyCisgKiByMiAtIGJ1ZmZlciBsZW4KKyAqLworCS5tYWNybwlkb19jcmMzMgorCWxkcglyNSwgRkZGRkZGRkYKKwllb3IJcjAsIHIwLCByNQorCWFkcglyMywgQ1JDMzJfVEFCTEUKKzE6CisJbGRyYiAgICByNCwgW3IxXSwgIzEKKwllb3IJcjQsIHI0LCByMAorCWFuZAlyNCwgcjQsICMweGZmCisJbGRyCXI0LCBbcjMsIHI0LCBsc2wjMl0KKwllb3IJcjAsIHI0LCByMCwgbHNyIzgKKwlzdWJzCXIyLCByMiwgIzB4MQorCWJuZSAJMWIKKwllb3IJcjAsIHIwLCByNQorCS5lbmRtCisKKwkubWFjcm8gY3JjdWosIG9mZnNldCwgc2l6ZQorCW1vdglyMCwgIzAKKwlsZHIJcjEsIFxvZmZzZXQKKwlsZHIJcjIsIFtyMV0KKwljbXAJcjIsIHIwCQlAIG5vIGRhdGEsIG5vIHByb2JsZW0KKwliZXEJMmYKKwl0c3QJcjIsICMzCQlAIHVuYWxpZ25lZCBzaXplCisJYm5lCTJmCisJbGRyCXIzLCBcc2l6ZQorCWNtcAlyMiwgcjMJCUAgYm9ndXMgc2l6ZQorCWJoaQkyZgorCWFkZAlyMSwgcjEsICM0CisJZG9fY3JjMzIKKwlsZHIJcjEsIFtyMV0KKzI6CisJY21wCXIwLCByMQorCS5lbmRtCisKKwkubWFjcm8gd2FpdCwgcmVnCisJbW92CVxyZWcsICMweDEwMDAKKzM6CisJc3VicwlccmVnLCBccmVnLCAjMHgxCisJYm5lIAkzYgorCisJLmVuZG0KKy50ZXh0CisuZ2xvYmwgY3JjZWsKK2NyY2VrOgorCWIJY3JjMl9iYWQKKwltb3YJcjYsICMwCisJY3JjdWoJX0xPQURFUjFfT0ZGU0VULCBfTE9BREVSX1NJWkUKKwlibmUJY3JjMV9iYWQKKwlvcnIJcjYsIHI2LCAjMQorY3JjMV9iYWQ6CisJY3JjdWoJX0xPQURFUjJfT0ZGU0VULCBfTE9BREVSX1NJWkUKKwlibmUJY3JjMl9iYWQKKwlvcnIJcjYsIHI2LCAjMgorY3JjMl9iYWQ6CisJbGRyCXIzLCBfTE9BREVSMV9PRkZTRVQKKwlsZHIJcjQsIF9MT0FERVIyX09GRlNFVAorCWIJYm9vdF8ybmQKKwl0c3QJcjYsICMzCisJYmVxCW9uZV9pc19iYWQJQCBvbmUgb2YgdGhlbSAob3IgYm90aCkgaGFzIGJhZCBjcmMKKwlsZHIJcjEsIFtyMywgIzRdCisJbGRyCXIyLCBbcjQsICM0XQorCWNtcAlyMSwgcjIJCUAgYm9vdCAybmQgbG9hZGVyIGlmIHZlcnNpb25zIGRpZmZlcgorCWJlcQlib290XzFzdAorCWIJYm9vdF8ybmQKK29uZV9pc19iYWQ6CisJdHN0CXI2LCAjMQorCWJuZQlib290XzFzdAorCXRzdAlyNiwgIzIKKwlibmUJYm9vdF8ybmQKK0AgV2UgYXJlIGRvb21lZCwgc28gbGV0IHVzZXIga25vdy4KKwlsZHIJcjAsIEdQSU9fQkFTRQlAIGNvbmZpZ3VyZSBHUElPIHBpbnMKKwlsZHIJcjEsIEdQSU9fRElSRUNUSU9OCisJc3RyaAlyMSwgW3IwLCAjMHgwOF0KK2JsaW5rX2xvb3A6CisJbW92CXIxLCAjMHgwOAorCXN0cmggICAgcjEsIFtyMCwgIzB4MDRdCisJd2FpdAlyMworCW1vdglyMSwgIzB4MTAKKwlzdHJoICAgIHIxLCBbcjAsICMweDA0XQorCXdhaXQJcjMKKwliIGJsaW5rX2xvb3AKK2Jvb3RfMXN0OgorCWFkZAlwYywgcjMsICM4Citib290XzJuZDoKKwlhZGQJcGMsIHI0LCAjOAorCitfTE9BREVSX1NJWkU6CisJLndvcmQgTE9BREVSX1NJWkUgLSA4CUAgbWludXMgc2l6ZSBhbmQgY3JjMzIKK19MT0FERVIxX09GRlNFVDoKKwkud29yZCBMT0FERVIxX09GRlNFVAorX0xPQURFUjJfT0ZGU0VUOgorCS53b3JkIExPQURFUjJfT0ZGU0VUCisKK0ZGRkZGRkZGOgorCS53b3JkIDB4ZmZmZmZmZmYKK0NSQzMyX1RBQkxFOgorCS53b3JkIDB4MDAwMDAwMDAsIDB4NzcwNzMwOTYsIDB4ZWUwZTYxMmMsIDB4OTkwOTUxYmEsIDB4MDc2ZGM0MTkKKwkud29yZCAweDcwNmFmNDhmLCAweGU5NjNhNTM1LCAweDllNjQ5NWEzLCAweDBlZGI4ODMyLCAweDc5ZGNiOGE0CisJLndvcmQgMHhlMGQ1ZTkxZSwgMHg5N2QyZDk4OCwgMHgwOWI2NGMyYiwgMHg3ZWIxN2NiZCwgMHhlN2I4MmQwNworCS53b3JkIDB4OTBiZjFkOTEsIDB4MWRiNzEwNjQsIDB4NmFiMDIwZjIsIDB4ZjNiOTcxNDgsIDB4ODRiZTQxZGUKKwkud29yZCAweDFhZGFkNDdkLCAweDZkZGRlNGViLCAweGY0ZDRiNTUxLCAweDgzZDM4NWM3LCAweDEzNmM5ODU2CisJLndvcmQgMHg2NDZiYThjMCwgMHhmZDYyZjk3YSwgMHg4YTY1YzllYywgMHgxNDAxNWM0ZiwgMHg2MzA2NmNkOQorCS53b3JkIDB4ZmEwZjNkNjMsIDB4OGQwODBkZjUsIDB4M2I2ZTIwYzgsIDB4NGM2OTEwNWUsIDB4ZDU2MDQxZTQKKwkud29yZCAweGEyNjc3MTcyLCAweDNjMDNlNGQxLCAweDRiMDRkNDQ3LCAweGQyMGQ4NWZkLCAweGE1MGFiNTZiCisJLndvcmQgMHgzNWI1YThmYSwgMHg0MmIyOTg2YywgMHhkYmJiYzlkNiwgMHhhY2JjZjk0MCwgMHgzMmQ4NmNlMworCS53b3JkIDB4NDVkZjVjNzUsIDB4ZGNkNjBkY2YsIDB4YWJkMTNkNTksIDB4MjZkOTMwYWMsIDB4NTFkZTAwM2EKKwkud29yZCAweGM4ZDc1MTgwLCAweGJmZDA2MTE2LCAweDIxYjRmNGI1LCAweDU2YjNjNDIzLCAweGNmYmE5NTk5CisJLndvcmQgMHhiOGJkYTUwZiwgMHgyODAyYjg5ZSwgMHg1ZjA1ODgwOCwgMHhjNjBjZDliMiwgMHhiMTBiZTkyNAorCS53b3JkIDB4MmY2ZjdjODcsIDB4NTg2ODRjMTEsIDB4YzE2MTFkYWIsIDB4YjY2NjJkM2QsIDB4NzZkYzQxOTAKKwkud29yZCAweDAxZGI3MTA2LCAweDk4ZDIyMGJjLCAweGVmZDUxMDJhLCAweDcxYjE4NTg5LCAweDA2YjZiNTFmCisJLndvcmQgMHg5ZmJmZTRhNSwgMHhlOGI4ZDQzMywgMHg3ODA3YzlhMiwgMHgwZjAwZjkzNCwgMHg5NjA5YTg4ZQorCS53b3JkIDB4ZTEwZTk4MTgsIDB4N2Y2YTBkYmIsIDB4MDg2ZDNkMmQsIDB4OTE2NDZjOTcsIDB4ZTY2MzVjMDEKKwkud29yZCAweDZiNmI1MWY0LCAweDFjNmM2MTYyLCAweDg1NjUzMGQ4LCAweGYyNjIwMDRlLCAweDZjMDY5NWVkCisJLndvcmQgMHgxYjAxYTU3YiwgMHg4MjA4ZjRjMSwgMHhmNTBmYzQ1NywgMHg2NWIwZDljNiwgMHgxMmI3ZTk1MAorCS53b3JkIDB4OGJiZWI4ZWEsIDB4ZmNiOTg4N2MsIDB4NjJkZDFkZGYsIDB4MTVkYTJkNDksIDB4OGNkMzdjZjMKKwkud29yZCAweGZiZDQ0YzY1LCAweDRkYjI2MTU4LCAweDNhYjU1MWNlLCAweGEzYmMwMDc0LCAweGQ0YmIzMGUyCisJLndvcmQgMHg0YWRmYTU0MSwgMHgzZGQ4OTVkNywgMHhhNGQxYzQ2ZCwgMHhkM2Q2ZjRmYiwgMHg0MzY5ZTk2YQorCS53b3JkIDB4MzQ2ZWQ5ZmMsIDB4YWQ2Nzg4NDYsIDB4ZGE2MGI4ZDAsIDB4NDQwNDJkNzMsIDB4MzMwMzFkZTUKKwkud29yZCAweGFhMGE0YzVmLCAweGRkMGQ3Y2M5LCAweDUwMDU3MTNjLCAweDI3MDI0MWFhLCAweGJlMGIxMDEwCisJLndvcmQgMHhjOTBjMjA4NiwgMHg1NzY4YjUyNSwgMHgyMDZmODViMywgMHhiOTY2ZDQwOSwgMHhjZTYxZTQ5ZgorCS53b3JkIDB4NWVkZWY5MGUsIDB4MjlkOWM5OTgsIDB4YjBkMDk4MjIsIDB4YzdkN2E4YjQsIDB4NTliMzNkMTcKKwkud29yZCAweDJlYjQwZDgxLCAweGI3YmQ1YzNiLCAweGMwYmE2Y2FkLCAweGVkYjg4MzIwLCAweDlhYmZiM2I2CisJLndvcmQgMHgwM2I2ZTIwYywgMHg3NGIxZDI5YSwgMHhlYWQ1NDczOSwgMHg5ZGQyNzdhZiwgMHgwNGRiMjYxNQorCS53b3JkIDB4NzNkYzE2ODMsIDB4ZTM2MzBiMTIsIDB4OTQ2NDNiODQsIDB4MGQ2ZDZhM2UsIDB4N2E2YTVhYTgKKwkud29yZCAweGU0MGVjZjBiLCAweDkzMDlmZjlkLCAweDBhMDBhZTI3LCAweDdkMDc5ZWIxLCAweGYwMGY5MzQ0CisJLndvcmQgMHg4NzA4YTNkMiwgMHgxZTAxZjI2OCwgMHg2OTA2YzJmZSwgMHhmNzYyNTc1ZCwgMHg4MDY1NjdjYgorCS53b3JkIDB4MTk2YzM2NzEsIDB4NmU2YjA2ZTcsIDB4ZmVkNDFiNzYsIDB4ODlkMzJiZTAsIDB4MTBkYTdhNWEKKwkud29yZCAweDY3ZGQ0YWNjLCAweGY5YjlkZjZmLCAweDhlYmVlZmY5LCAweDE3YjdiZTQzLCAweDYwYjA4ZWQ1CisJLndvcmQgMHhkNmQ2YTNlOCwgMHhhMWQxOTM3ZSwgMHgzOGQ4YzJjNCwgMHg0ZmRmZjI1MiwgMHhkMWJiNjdmMQorCS53b3JkIDB4YTZiYzU3NjcsIDB4M2ZiNTA2ZGQsIDB4NDhiMjM2NGIsIDB4ZDgwZDJiZGEsIDB4YWYwYTFiNGMKKwkud29yZCAweDM2MDM0YWY2LCAweDQxMDQ3YTYwLCAweGRmNjBlZmMzLCAweGE4NjdkZjU1LCAweDMxNmU4ZWVmCisJLndvcmQgMHg0NjY5YmU3OSwgMHhjYjYxYjM4YywgMHhiYzY2ODMxYSwgMHgyNTZmZDJhMCwgMHg1MjY4ZTIzNgorCS53b3JkIDB4Y2MwYzc3OTUsIDB4YmIwYjQ3MDMsIDB4MjIwMjE2YjksIDB4NTUwNTI2MmYsIDB4YzViYTNiYmUKKwkud29yZCAweGIyYmQwYjI4LCAweDJiYjQ1YTkyLCAweDVjYjM2YTA0LCAweGMyZDdmZmE3LCAweGI1ZDBjZjMxCisJLndvcmQgMHgyY2Q5OWU4YiwgMHg1YmRlYWUxZCwgMHg5YjY0YzJiMCwgMHhlYzYzZjIyNiwgMHg3NTZhYTM5YworCS53b3JkIDB4MDI2ZDkzMGEsIDB4OWMwOTA2YTksIDB4ZWIwZTM2M2YsIDB4NzIwNzY3ODUsIDB4MDUwMDU3MTMKKwkud29yZCAweDk1YmY0YTgyLCAweGUyYjg3YTE0LCAweDdiYjEyYmFlLCAweDBjYjYxYjM4LCAweDkyZDI4ZTliCisJLndvcmQgMHhlNWQ1YmUwZCwgMHg3Y2RjZWZiNywgMHgwYmRiZGYyMSwgMHg4NmQzZDJkNCwgMHhmMWQ0ZTI0MgorCS53b3JkIDB4NjhkZGIzZjgsIDB4MWZkYTgzNmUsIDB4ODFiZTE2Y2QsIDB4ZjZiOTI2NWIsIDB4NmZiMDc3ZTEKKwkud29yZCAweDE4Yjc0Nzc3LCAweDg4MDg1YWU2LCAweGZmMGY2YTcwLCAweDY2MDYzYmNhLCAweDExMDEwYjVjCisJLndvcmQgMHg4ZjY1OWVmZiwgMHhmODYyYWU2OSwgMHg2MTZiZmZkMywgMHgxNjZjY2Y0NSwgMHhhMDBhZTI3OAorCS53b3JkIDB4ZDcwZGQyZWUsIDB4NGUwNDgzNTQsIDB4MzkwM2IzYzIsIDB4YTc2NzI2NjEsIDB4ZDA2MDE2ZjcKKwkud29yZCAweDQ5Njk0NzRkLCAweDNlNmU3N2RiLCAweGFlZDE2YTRhLCAweGQ5ZDY1YWRjLCAweDQwZGYwYjY2CisJLndvcmQgMHgzN2Q4M2JmMCwgMHhhOWJjYWU1MywgMHhkZWJiOWVjNSwgMHg0N2IyY2Y3ZiwgMHgzMGI1ZmZlOQorCS53b3JkIDB4YmRiZGYyMWMsIDB4Y2FiYWMyOGEsIDB4NTNiMzkzMzAsIDB4MjRiNGEzYTYsIDB4YmFkMDM2MDUKKwkud29yZCAweGNkZDcwNjkzLCAweDU0ZGU1NzI5LCAweDIzZDk2N2JmLCAweGIzNjY3YTJlLCAweGM0NjE0YWI4CisJLndvcmQgMHg1ZDY4MWIwMiwgMHgyYTZmMmI5NCwgMHhiNDBiYmUzNywgMHhjMzBjOGVhMSwgMHg1YTA1ZGYxYgorCS53b3JkIDB4MmQwMmVmOGQKKworR1BJT19CQVNFOgorCS53b3JkIDB4ZmZmY2UwMDAKK0dQSU9fRElSRUNUSU9OOgorCS53b3JkIDB4MDAwMGZmZTcKKworLmVuZApkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3Rhci9jcmNlay5oIGIvYm9hcmQvbmV0c3Rhci9jcmNlay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYzA4NjAKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9uZXRzdGFyL2NyY2VrLmgKQEAgLTAsMCArMSwzIEBACisjZGVmaW5lIExPQURFUl9TSVpFCSg0NDggKiAxMDI0KQorI2RlZmluZSBMT0FERVIxX09GRlNFVAkoMTI4ICogMTAyNCkKKyNkZWZpbmUgTE9BREVSMl9PRkZTRVQJKExPQURFUjFfT0ZGU0VUICsgTE9BREVSX1NJWkUpCmRpZmYgLS1naXQgYS9ib2FyZC9uZXRzdGFyL2NyY2l0IGIvYm9hcmQvbmV0c3Rhci9jcmNpdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45OGFlNDJlCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbmV0c3Rhci9jcmNpdApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ib2FyZC9uZXRzdGFyL2NyY2l0LmMgYi9ib2FyZC9uZXRzdGFyL2NyY2l0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZkMzA2NgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL25ldHN0YXIvY3JjaXQuYwpAQCAtMCwwICsxLDg2IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1CisgKiAyTiBUZWxla29tdW5pa2FjZSwgTGFkaXNsYXYgTWljaGwgPG1pY2hsQDJuLmN6PgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlICJjcmNlay5oIgorCitleHRlcm4gdW5zaWduZWQgbG9uZyBjcmMzMih1bnNpZ25lZCBsb25nLCBjb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGludCk7CisKK3VpbnQzMl90IGRhdGFbTE9BREVSX1NJWkUvNCArIDNdOworCitpbnQgZG9pdChjaGFyICpwYXRoLCB1bnNpZ25lZCB2ZXJzaW9uKQoreworCXVpbnQzMl90ICpwOworCXNzaXplX3Qgc2l6ZTsKKwlpbnQgZmQ7CisKKwlmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOworCWlmIChmZCA9PSAtMSkgeworCQlwZXJyb3IoIkVycm9yIG9wZW5pbmcgZmlsZSIpOworCQlyZXR1cm4gRVhJVF9GQUlMVVJFOworCX0KKwlwID0gZGF0YSArIDI7CisJc2l6ZSA9IHJlYWQoZmQsIHAsIExPQURFUl9TSVpFICsgNCk7CisJaWYgKHNpemUgPT0gLTEpIHsKKwkJcGVycm9yKCJFcnJvciByZWFkaW5nIGZpbGUiKTsKKwkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKKwl9CisJaWYgKHNpemUgPiBMT0FERVJfU0laRSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkZpbGUgdG9vIGxhcmdlXG4iKTsKKwkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKKwl9CisJc2l6ZSA9ICgoKHNpemUgLSAxKSA+PiAyKSArIDEpIDw8IDI7CisJZGF0YVswXSA9IHNpemUgKyA0OwkvKiBhZGQgc2l6ZSBvZiB2ZXJzaW9uIGZpZWxkICovCisJZGF0YVsxXSA9IHZlcnNpb247CisJZGF0YVsoc2l6ZSA+PiAyKSArIDJdID0gY3JjMzIoMCwgKHVuc2lnbmVkIGNoYXIgKikoZGF0YSArIDEpLCBkYXRhWzBdKTsKKwljbG9zZShmZCk7CisKKwlpZiAod3JpdGUoU1RET1VUX0ZJTEVOTywgZGF0YSwgc2l6ZSArIDMqNCkgPT0gLTEpIHsKKwkJcGVycm9yKCJFcnJvciB3cml0aW5nIGZpbGUiKTsKKwkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKKwl9CisKKwlyZXR1cm4gRVhJVF9TVUNDRVNTOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaWYgKGFyZ2MgPT0gMikgeworCQlyZXR1cm4gZG9pdChhcmd2WzFdLCAwKTsKKwl9IGVsc2UgaWYgKChhcmdjID09IDQpICYmIChzdHJjbXAoYXJndlsxXSwgIi12IikgPT0gMCkpIHsKKwkJY2hhciAqZW5kcHRyLCAqbnB0ciA9IGFyZ3ZbMl07CisJCXVuc2lnbmVkIHZlciA9IHN0cnRvdWwobnB0ciwgJmVuZHB0ciwgMCk7CisJCWlmIChucHRyICE9ICdcMCcgJiYgZW5kcHRyID09ICdcMCcpCisJCQlyZXR1cm4gZG9pdChhcmd2WzNdLCB2ZXIpOworCX0KKwlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiBjcmNpdCBbLXYgdmVyc2lvbl0gPGltYWdlPlxuIik7CisKKwlyZXR1cm4gRVhJVF9GQUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3Rhci9lZXByb20uYyBiL2JvYXJkL25ldHN0YXIvZWVwcm9tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVmMzgyMgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL25ldHN0YXIvZWVwcm9tLmMKQEAgLTAsMCArMSwyMTUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDUKKyAqIExhZGlzbGF2IE1pY2hsLCAyTiBUZWxla29tdW5pa2FjZSwgbWljaGxAMm4uY3oKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqCisgKiBTb21lIGNvZGUgc2hhbWVsZXNzbHkgc3RvbGVuIGJhY2sgZnJvbSBSb2JpbiBHZXR6LgorICovCisKKyNkZWZpbmUgREVCVUcKKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGV4cG9ydHMuaD4KKyNpbmNsdWRlICIuLi9kcml2ZXJzL3NtYzkxMTExLmgiCisKKyNkZWZpbmUgU01DX0JBU0VfQUREUkVTUyBDT05GSUdfU01DOTExMTFfQkFTRQorCitzdGF0aWMgdTE2IHJlYWRfZWVwcm9tX3JlZyh1MTYgcmVnKQoreworCWludCB0aW1lb3V0OworCisJU01DX1NFTEVDVF9CQU5LKDIpOworCVNNQ19vdXR3KHJlZywgUFRSX1JFRyk7CisKKwlTTUNfU0VMRUNUX0JBTksoMSk7CisJU01DX291dHcoU01DX2ludyAoQ1RMX1JFRykgfCBDVExfRUVQUk9NX1NFTEVDVCB8IENUTF9SRUxPQUQsCisJCSBDVExfUkVHKTsKKwl0aW1lb3V0ID0gMTAwOworCXdoaWxlKChTTUNfaW53IChDVExfUkVHKSAmIENUTF9SRUxPQUQpICYmIC0tdGltZW91dCkKKwkJdWRlbGF5KDEwMCk7CisJaWYgKHRpbWVvdXQgPT0gMCkgeworCQlwcmludGYoIlRpbWVvdXQgUmVhZGluZyBFRVBST00gcmVnaXN0ZXIgJTAyeFxuIiwgcmVnKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIFNNQ19pbncgKEdQX1JFRyk7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVfZWVwcm9tX3JlZyh1MTYgdmFsdWUsIHUxNiByZWcpCit7CisJaW50IHRpbWVvdXQ7CisKKwlTTUNfU0VMRUNUX0JBTksoMik7CisJU01DX291dHcocmVnLCBQVFJfUkVHKTsKKworCVNNQ19TRUxFQ1RfQkFOSygxKTsKKwlTTUNfb3V0dyh2YWx1ZSwgR1BfUkVHKTsKKwlTTUNfb3V0dyhTTUNfaW53IChDVExfUkVHKSB8IENUTF9FRVBST01fU0VMRUNUIHwgQ1RMX1NUT1JFLCBDVExfUkVHKTsKKwl0aW1lb3V0ID0gMTAwOworCXdoaWxlICgoU01DX2ludyhDVExfUkVHKSAmIENUTF9TVE9SRSkgJiYgLS10aW1lb3V0KQorCQl1ZGVsYXkgKDEwMCk7CisJaWYgKHRpbWVvdXQgPT0gMCkgeworCQlwcmludGYoIlRpbWVvdXQgV3JpdGluZyBFRVBST00gcmVnaXN0ZXIgJTAyeFxuIiwgcmVnKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVfZGF0YSh1MTYgKmJ1ZiwgaW50IGxlbikKK3sKKwl1MTYgcmVnID0gMHgyMzsKKworCXdoaWxlIChsZW4tLSkKKwkJd3JpdGVfZWVwcm9tX3JlZygqYnVmKyssIHJlZysrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZlcmlmeV9tYWNhZGRyKGNoYXIgKnMpCit7CisJdTE2IHJlZzsKKwlpbnQgaSwgZXJyID0gMDsKKworCXByaW50ZigiTUFDIEFkZHJlc3M6ICIpOworCWVyciA9IGkgPSAwOworCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKwkJcmVnID0gcmVhZF9lZXByb21fcmVnKDB4MjAgKyBpKTsKKwkJcHJpbnRmKCIlMDJ4OiUwMnglYyIsIHJlZyAmIDB4ZmYsIHJlZyA+PiA4LCBpICE9IDIgPyAnOicgOiAnXG4nKTsKKwkJaWYgKHMpCisJCQllcnIgfD0gcmVnICE9ICgodTE2ICopcylbaV07CisJfQorCisJcmV0dXJuIGVyciA/IDAgOiAxOworfQorCitzdGF0aWMgaW50IHNldF9tYWMoY2hhciAqcykKK3sKKwlpbnQgaTsKKwljaGFyICplLCBlYWRkcls2XTsKKworCS8qIHR1cm4gc3RyaW5nIGludG8gbWFjIHZhbHVlICovCisJZm9yIChpID0gMDsgaSA8IDY7IGkrKykgeworCQllYWRkcltpXSA9IHNpbXBsZV9zdHJ0b3VsKHMsICZlLCAxNik7CisJCXMgPSAoKmUpID8gZSsxIDogZTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQorCQl3cml0ZV9lZXByb21fcmVnKCooKCh1MTYgKillYWRkcikgKyBpKSwgMHgyMCArIGkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2VfZWxlbWVudChjaGFyICpzLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBsZW4pCit7CisJaW50IGNudDsKKwljaGFyICpwLCBudW1bM107CisJdW5zaWduZWQgY2hhciBpZDsKKworCWlkID0gc2ltcGxlX3N0cnRvdWwocywgJnAsIDE2KTsKKwlpZiAoKnArKyAhPSAnOicpCisJCXJldHVybiAtMTsKKwljbnQgPSAyOworCW51bVsyXSA9IDA7CisJZm9yICg7ICpwOyBwICs9IDIpIHsKKwkJaWYgKHBbMV0gPT0gMCkKKwkJCXJldHVybiAtMjsKKwkJaWYgKGNudCArIDMgPiBsZW4pCisJCQlyZXR1cm4gLTM7CisJCW51bVswXSA9IHBbMF07CisJCW51bVsxXSA9IHBbMV07CisJCWJ1ZltjbnQrK10gPSBzaW1wbGVfc3RydG91bChudW0sIE5VTEwsIDE2KTsKKwl9CisJYnVmWzBdID0gaWQ7CisJYnVmWzFdID0gY250IC0gMjsKKworCXJldHVybiBjbnQ7Cit9CisKK2V4dGVybiBpbnQgY3JjZWsodm9pZCk7CisKK2ludCBlZXByb20oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQgaSwgbGVuLCByZXQ7CisJdW5zaWduZWQgY2hhciBidWZbNThdLCAqcDsKKworCWFwcF9zdGFydHVwKGFyZ3YpOworCWlmIChnZXRfdmVyc2lvbigpICE9IFhGX1ZFUlNJT04pIHsKKwkJcHJpbnRmKCJXcm9uZyBYRl9WRVJTSU9OLlxuIik7CisJCXByaW50ZigiQXBwbGljYXRpb24gZXhwZWN0cyBBQkkgdmVyc2lvbiAlZFxuIiwgWEZfVkVSU0lPTik7CisJCXByaW50ZigiQWN0dWFsIFUtQm9vdCBBQkkgdmVyc2lvbiAlZFxuIiwgKGludClnZXRfdmVyc2lvbigpKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmV0dXJuIGNyY2VrKCk7CisKKwlpZiAoKFNNQ19pbncgKEJBTktfU0VMRUNUKSAmIDB4RkYwMCkgIT0gMHgzMzAwKSB7CisJCXByaW50ZigiU01TQzkxMTExIG5vdCBmb3VuZC5cbiIpOworCQlyZXR1cm4gMjsKKwl9CisKKwkvKiBDYWxsZWQgd2l0aG91dCBwYXJhbWV0ZXJzIC0gcHJpbnQgTUFDIGFkZHJlc3MgKi8KKwlpZiAoYXJnYyA8IDIpIHsKKwkJdmVyaWZ5X21hY2FkZHIoTlVMTCk7CisJCXJldHVybiAwOworCX0KKworCS8qIFByaW50IGhlbHAgbWVzc2FnZSAqLworCWlmIChhcmd2WzFdWzFdID09ICdoJykgeworCQlwcmludGYoIlZvaWNlQmx1ZSBFRVBST00gd3JpdGVyXG4iKTsKKwkJcHJpbnRmKCJCdWlsdDogJXMgYXQgJXNcbiIsIF9fREFURV9fICwgX19USU1FX18gKTsKKwkJcHJpbnRmKCJVc2FnZTpcblx0PG1hY19hZGRyZXNzPiBbPGVsZW1lbnRfMT5dIFs8Li4uPl1cbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBUcnkgdG8gcGFyc2UgaW5mb3JtYXRpb24gZWxlbWVudHMgKi8KKwlsZW4gPSBzaXplb2YoYnVmKTsKKwlwID0gYnVmOworCWZvciAoaSA9IDI7IGkgPCBhcmdjOyBpKyspIHsKKwkJcmV0ID0gcGFyc2VfZWxlbWVudChhcmd2W2ldLCBwLCBsZW4pOworCQlzd2l0Y2ggKHJldCkgeworCQljYXNlIC0xOgorCQkJcHJpbnRmKCJFbGVtZW50ICVkOiBtYWxmb3JtZWRcbiIsIGkgLSAxKTsKKwkJCXJldHVybiAzOworCQljYXNlIC0yOgorCQkJcHJpbnRmKCJFbGVtZW50ICVkOiBvZGQgY2hhcmFjdGVyIGNvdW50XG4iLCBpIC0gMSk7CisJCQlyZXR1cm4gMzsKKwkJY2FzZSAtMzoKKwkJCXByaW50ZigiT3V0IG9mIEVFUFJPTSBtZW1vcnlcbiIpOworCQkJcmV0dXJuIDM7CisJCWRlZmF1bHQ6CisJCQlwICs9IHJldDsKKwkJCWxlbiAtPSByZXQ7CisJCX0KKwl9CisKKwkvKiBGaXJzdCBhcmd1bWVudCAoTUFDKSBpcyBtYW5kYXRvcnkgKi8KKwlzZXRfbWFjKGFyZ3ZbMV0pOworCWlmICh2ZXJpZnlfbWFjYWRkcihhcmd2WzFdKSkgeworCQlwcmludGYoIioqKiBNQUMgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaCEgKioqXG4iKTsKKwkJcmV0dXJuIDQ7CisJfQorCisJd2hpbGUgKGxlbi0tKQorCQkqcCsrID0gMDsKKworCXdyaXRlX2RhdGEoKHUxNiAqKWJ1Ziwgc2l6ZW9mKGJ1ZikgPj4gMSk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YXIvZWVwcm9tLmxkcyBiL2JvYXJkL25ldHN0YXIvZWVwcm9tLmxkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTc1NTBkCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbmV0c3Rhci9lZXByb20ubGRzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIEdhcnkgSmVubmVqb2huLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8Z2pAZGVueC5kZT4KKyAqIChDKSBDb3B5cmlnaHQgMjAwNQorICogTGFkaXNsYXYgTWljaGwsIDJOIFRlbGVrb211bmlrYWNlLCA8bWljaGxAMm4uY3o+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworT1VUUFVUX0ZPUk1BVCgiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1saXR0bGVhcm0iKQorT1VUUFVUX0FSQ0goYXJtKQorRU5UUlkoX3N0YXJ0KQorU0VDVElPTlMKK3sKKwkuID0gQUxJR04oNCk7CisJLnRleHQgICAgICA6CisJeworCSAgZWVwcm9tX3N0YXJ0Lm8JKC50ZXh0KQorCSAgKigudGV4dCkKKwl9CisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9kYXRhKSB9CisKKwkuID0gQUxJR04oNCk7CisJLmRhdGEgOiB7ICooLmRhdGEpIH0KKworCS4gPSBBTElHTig0KTsKKwkuZ290IDogeyAqKC5nb3QpIH0KKworCS4gPSBBTElHTig0KTsKKwlfX2Jzc19zdGFydCA9IC47CisJLmJzcyA6IHsgKiguYnNzKSB9CisJX2VuZCA9IC47Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9uZXRzdGFyL2VlcHJvbV9zdGFydC5TIGIvYm9hcmQvbmV0c3Rhci9lZXByb21fc3RhcnQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWQ5ZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbmV0c3Rhci9lZXByb21fc3RhcnQuUwpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNSAgMk4gVGVsZWtvbXVuaWthY2UKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisuZ2xvYmwgX3N0YXJ0Citfc3RhcnQ6CWIgICAgICAgZWVwcm9tCisKKyNpbmNsdWRlICJjcmNlay5oIgorCisvKioKKyAqIGRvX2NyYzMyIC0gY2FsY3VsYXRlIENSQzMyIG9mIGdpdmVuIGJ1ZmZlcgorICogcjAgLSBjcmMKKyAqIHIxIC0gcG9pbnRlciB0byBidWZmZXIKKyAqIHIyIC0gYnVmZmVyIGxlbgorICovCisJLm1hY3JvCWRvX2NyYzMyCisJbGRyCXI1LCBGRkZGRkZGRgorCWVvcglyMCwgcjAsIHI1CisJYWRyCXIzLCBDUkMzMl9UQUJMRQorMToKKwlsZHJiICAgIHI0LCBbcjFdLCAjMQorCWVvcglyNCwgcjQsIHIwCisJYW5kCXI0LCByNCwgIzB4ZmYKKwlsZHIJcjQsIFtyMywgcjQsIGxzbCMyXQorCWVvcglyMCwgcjQsIHIwLCBsc3IjOAorCXN1YnMJcjIsIHIyLCAjMHgxCisJYm5lIAkxYgorCWVvcglyMCwgcjAsIHI1CisJLmVuZG0KKworCS5tYWNybyBjcmN1aiwgb2Zmc2V0LCBzaXplCisJbGRyCXIxLCBcb2Zmc2V0CisJbGRyCXIyLCBbcjFdCisJY21wCXIyLCAjMAkJQCBubyBkYXRhLCBubyBwcm9ibGVtCisJYmVxCTJmCisJbW92ICAgICByNywgIzEKKwl0c3QJcjIsICMzCQlAIHVuYWxpZ25lZCBzaXplCisJYm5lCTJmCisJbW92ICAgICByNywgIzIKKwlsZHIJcjAsIFxzaXplCisJY21wCXIyLCByMAkJQCBib2d1cyBzaXplCisJYmhpCTJmCisJbW92ICAgICByNywgIzMKKwlhZGQJcjEsIHIxLCAjNAorCW1vdglyMCwgIzAKKwlkb19jcmMzMgorCWxkcglyMSwgW3IxXQorMjoKKwljbXAJcjAsIHIxCisJLmVuZG0KKworCS5tYWNybyB3YWl0LCByZWcKKwltb3YJXHJlZywgIzB4MTAwMAorMzoKKwlzdWJzCVxyZWcsIFxyZWcsICMweDEKKwlibmUgCTNiCisKKwkuZW5kbQorLnRleHQKKy5nbG9ibCBjcmNlaworY3JjZWs6CisJbW92CXI2LCAjMAorQAljcmN1aglfTE9BREVSMV9PRkZTRVQsIF9MT0FERVJfU0laRQorQAlibmUJY3JjMV9iYWQKK0AJb3JyCXI2LCByNiwgIzEKK2NyYzFfYmFkOgorCWNyY3VqCV9MT0FERVIyX09GRlNFVCwgX0xPQURFUl9TSVpFCisJYm5lCWNyYzJfYmFkCisJb3JyCXI2LCByNiwgIzIKK2NyYzJfYmFkOgorQAltb3YJcjAsIHI2CisJbW92ICAgICBwYywgbHIKKwlsZHIJcjMsIF9MT0FERVIxX09GRlNFVAorCWxkcglyNCwgX0xPQURFUjJfT0ZGU0VUCisJdHN0CXI2LCAjMworCWJlcQlvbmVfaXNfYmFkCUAgb25lIG9mIHRoZW0gKG9yIGJvdGgpIGhhcyBiYWQgY3JjCisJbGRyCXIxLCBbcjMsICM0XQorCWxkcglyMiwgW3I0LCAjNF0KKwljbXAJcjEsIHIyCQlAIGJvb3QgMm5kIGxvYWRlciBpZiB2ZXJzaW9ucyBkaWZmZXIKKwliZXEJYm9vdF8xc3QKKwliCWJvb3RfMm5kCitvbmVfaXNfYmFkOgorCXRzdAlyNiwgIzEKKwlibmUJYm9vdF8xc3QKKwl0c3QJcjYsICMyCisJYm5lCWJvb3RfMm5kCitAIFdlIGFyZSBkb29tZWQsIHNvIGxldCB1c2VyIGtub3cuCisJbGRyCXIwLCBHUElPX0JBU0UJQCBjb25maWd1cmUgR1BJTyBwaW5zCisJbGRyCXIxLCBHUElPX0RJUkVDVElPTgorCXN0cmgJcjEsIFtyMCwgIzB4MDhdCitibGlua19sb29wOgorCW1vdglyMSwgIzB4MDgKKwlzdHJoICAgIHIxLCBbcjAsICMweDA0XQorCXdhaXQJcjMKKwltb3YJcjEsICMweDEwCisJc3RyaCAgICByMSwgW3IwLCAjMHgwNF0KKwl3YWl0CXIzCisJYiBibGlua19sb29wCitib290XzFzdDoKKwlhZGQJcGMsIHIzLCAjOAorYm9vdF8ybmQ6CisJYWRkCXBjLCByNCwgIzgKKworX0xPQURFUl9TSVpFOgorCS53b3JkIExPQURFUl9TSVpFIC0gOAlAIG1pbnVzIHNpemUgYW5kIGNyYzMyCitfTE9BREVSMV9PRkZTRVQ6CisJLndvcmQgTE9BREVSMV9PRkZTRVQKK19MT0FERVIyX09GRlNFVDoKKwkud29yZCBMT0FERVIyX09GRlNFVAorCitGRkZGRkZGRjoKKwkud29yZCAweGZmZmZmZmZmCitDUkMzMl9UQUJMRToKKwkud29yZCAweDAwMDAwMDAwLCAweDc3MDczMDk2LCAweGVlMGU2MTJjLCAweDk5MDk1MWJhLCAweDA3NmRjNDE5CisJLndvcmQgMHg3MDZhZjQ4ZiwgMHhlOTYzYTUzNSwgMHg5ZTY0OTVhMywgMHgwZWRiODgzMiwgMHg3OWRjYjhhNAorCS53b3JkIDB4ZTBkNWU5MWUsIDB4OTdkMmQ5ODgsIDB4MDliNjRjMmIsIDB4N2ViMTdjYmQsIDB4ZTdiODJkMDcKKwkud29yZCAweDkwYmYxZDkxLCAweDFkYjcxMDY0LCAweDZhYjAyMGYyLCAweGYzYjk3MTQ4LCAweDg0YmU0MWRlCisJLndvcmQgMHgxYWRhZDQ3ZCwgMHg2ZGRkZTRlYiwgMHhmNGQ0YjU1MSwgMHg4M2QzODVjNywgMHgxMzZjOTg1NgorCS53b3JkIDB4NjQ2YmE4YzAsIDB4ZmQ2MmY5N2EsIDB4OGE2NWM5ZWMsIDB4MTQwMTVjNGYsIDB4NjMwNjZjZDkKKwkud29yZCAweGZhMGYzZDYzLCAweDhkMDgwZGY1LCAweDNiNmUyMGM4LCAweDRjNjkxMDVlLCAweGQ1NjA0MWU0CisJLndvcmQgMHhhMjY3NzE3MiwgMHgzYzAzZTRkMSwgMHg0YjA0ZDQ0NywgMHhkMjBkODVmZCwgMHhhNTBhYjU2YgorCS53b3JkIDB4MzViNWE4ZmEsIDB4NDJiMjk4NmMsIDB4ZGJiYmM5ZDYsIDB4YWNiY2Y5NDAsIDB4MzJkODZjZTMKKwkud29yZCAweDQ1ZGY1Yzc1LCAweGRjZDYwZGNmLCAweGFiZDEzZDU5LCAweDI2ZDkzMGFjLCAweDUxZGUwMDNhCisJLndvcmQgMHhjOGQ3NTE4MCwgMHhiZmQwNjExNiwgMHgyMWI0ZjRiNSwgMHg1NmIzYzQyMywgMHhjZmJhOTU5OQorCS53b3JkIDB4YjhiZGE1MGYsIDB4MjgwMmI4OWUsIDB4NWYwNTg4MDgsIDB4YzYwY2Q5YjIsIDB4YjEwYmU5MjQKKwkud29yZCAweDJmNmY3Yzg3LCAweDU4Njg0YzExLCAweGMxNjExZGFiLCAweGI2NjYyZDNkLCAweDc2ZGM0MTkwCisJLndvcmQgMHgwMWRiNzEwNiwgMHg5OGQyMjBiYywgMHhlZmQ1MTAyYSwgMHg3MWIxODU4OSwgMHgwNmI2YjUxZgorCS53b3JkIDB4OWZiZmU0YTUsIDB4ZThiOGQ0MzMsIDB4NzgwN2M5YTIsIDB4MGYwMGY5MzQsIDB4OTYwOWE4OGUKKwkud29yZCAweGUxMGU5ODE4LCAweDdmNmEwZGJiLCAweDA4NmQzZDJkLCAweDkxNjQ2Yzk3LCAweGU2NjM1YzAxCisJLndvcmQgMHg2YjZiNTFmNCwgMHgxYzZjNjE2MiwgMHg4NTY1MzBkOCwgMHhmMjYyMDA0ZSwgMHg2YzA2OTVlZAorCS53b3JkIDB4MWIwMWE1N2IsIDB4ODIwOGY0YzEsIDB4ZjUwZmM0NTcsIDB4NjViMGQ5YzYsIDB4MTJiN2U5NTAKKwkud29yZCAweDhiYmViOGVhLCAweGZjYjk4ODdjLCAweDYyZGQxZGRmLCAweDE1ZGEyZDQ5LCAweDhjZDM3Y2YzCisJLndvcmQgMHhmYmQ0NGM2NSwgMHg0ZGIyNjE1OCwgMHgzYWI1NTFjZSwgMHhhM2JjMDA3NCwgMHhkNGJiMzBlMgorCS53b3JkIDB4NGFkZmE1NDEsIDB4M2RkODk1ZDcsIDB4YTRkMWM0NmQsIDB4ZDNkNmY0ZmIsIDB4NDM2OWU5NmEKKwkud29yZCAweDM0NmVkOWZjLCAweGFkNjc4ODQ2LCAweGRhNjBiOGQwLCAweDQ0MDQyZDczLCAweDMzMDMxZGU1CisJLndvcmQgMHhhYTBhNGM1ZiwgMHhkZDBkN2NjOSwgMHg1MDA1NzEzYywgMHgyNzAyNDFhYSwgMHhiZTBiMTAxMAorCS53b3JkIDB4YzkwYzIwODYsIDB4NTc2OGI1MjUsIDB4MjA2Zjg1YjMsIDB4Yjk2NmQ0MDksIDB4Y2U2MWU0OWYKKwkud29yZCAweDVlZGVmOTBlLCAweDI5ZDljOTk4LCAweGIwZDA5ODIyLCAweGM3ZDdhOGI0LCAweDU5YjMzZDE3CisJLndvcmQgMHgyZWI0MGQ4MSwgMHhiN2JkNWMzYiwgMHhjMGJhNmNhZCwgMHhlZGI4ODMyMCwgMHg5YWJmYjNiNgorCS53b3JkIDB4MDNiNmUyMGMsIDB4NzRiMWQyOWEsIDB4ZWFkNTQ3MzksIDB4OWRkMjc3YWYsIDB4MDRkYjI2MTUKKwkud29yZCAweDczZGMxNjgzLCAweGUzNjMwYjEyLCAweDk0NjQzYjg0LCAweDBkNmQ2YTNlLCAweDdhNmE1YWE4CisJLndvcmQgMHhlNDBlY2YwYiwgMHg5MzA5ZmY5ZCwgMHgwYTAwYWUyNywgMHg3ZDA3OWViMSwgMHhmMDBmOTM0NAorCS53b3JkIDB4ODcwOGEzZDIsIDB4MWUwMWYyNjgsIDB4NjkwNmMyZmUsIDB4Zjc2MjU3NWQsIDB4ODA2NTY3Y2IKKwkud29yZCAweDE5NmMzNjcxLCAweDZlNmIwNmU3LCAweGZlZDQxYjc2LCAweDg5ZDMyYmUwLCAweDEwZGE3YTVhCisJLndvcmQgMHg2N2RkNGFjYywgMHhmOWI5ZGY2ZiwgMHg4ZWJlZWZmOSwgMHgxN2I3YmU0MywgMHg2MGIwOGVkNQorCS53b3JkIDB4ZDZkNmEzZTgsIDB4YTFkMTkzN2UsIDB4MzhkOGMyYzQsIDB4NGZkZmYyNTIsIDB4ZDFiYjY3ZjEKKwkud29yZCAweGE2YmM1NzY3LCAweDNmYjUwNmRkLCAweDQ4YjIzNjRiLCAweGQ4MGQyYmRhLCAweGFmMGExYjRjCisJLndvcmQgMHgzNjAzNGFmNiwgMHg0MTA0N2E2MCwgMHhkZjYwZWZjMywgMHhhODY3ZGY1NSwgMHgzMTZlOGVlZgorCS53b3JkIDB4NDY2OWJlNzksIDB4Y2I2MWIzOGMsIDB4YmM2NjgzMWEsIDB4MjU2ZmQyYTAsIDB4NTI2OGUyMzYKKwkud29yZCAweGNjMGM3Nzk1LCAweGJiMGI0NzAzLCAweDIyMDIxNmI5LCAweDU1MDUyNjJmLCAweGM1YmEzYmJlCisJLndvcmQgMHhiMmJkMGIyOCwgMHgyYmI0NWE5MiwgMHg1Y2IzNmEwNCwgMHhjMmQ3ZmZhNywgMHhiNWQwY2YzMQorCS53b3JkIDB4MmNkOTllOGIsIDB4NWJkZWFlMWQsIDB4OWI2NGMyYjAsIDB4ZWM2M2YyMjYsIDB4NzU2YWEzOWMKKwkud29yZCAweDAyNmQ5MzBhLCAweDljMDkwNmE5LCAweGViMGUzNjNmLCAweDcyMDc2Nzg1LCAweDA1MDA1NzEzCisJLndvcmQgMHg5NWJmNGE4MiwgMHhlMmI4N2ExNCwgMHg3YmIxMmJhZSwgMHgwY2I2MWIzOCwgMHg5MmQyOGU5YgorCS53b3JkIDB4ZTVkNWJlMGQsIDB4N2NkY2VmYjcsIDB4MGJkYmRmMjEsIDB4ODZkM2QyZDQsIDB4ZjFkNGUyNDIKKwkud29yZCAweDY4ZGRiM2Y4LCAweDFmZGE4MzZlLCAweDgxYmUxNmNkLCAweGY2YjkyNjViLCAweDZmYjA3N2UxCisJLndvcmQgMHgxOGI3NDc3NywgMHg4ODA4NWFlNiwgMHhmZjBmNmE3MCwgMHg2NjA2M2JjYSwgMHgxMTAxMGI1YworCS53b3JkIDB4OGY2NTllZmYsIDB4Zjg2MmFlNjksIDB4NjE2YmZmZDMsIDB4MTY2Y2NmNDUsIDB4YTAwYWUyNzgKKwkud29yZCAweGQ3MGRkMmVlLCAweDRlMDQ4MzU0LCAweDM5MDNiM2MyLCAweGE3NjcyNjYxLCAweGQwNjAxNmY3CisJLndvcmQgMHg0OTY5NDc0ZCwgMHgzZTZlNzdkYiwgMHhhZWQxNmE0YSwgMHhkOWQ2NWFkYywgMHg0MGRmMGI2NgorCS53b3JkIDB4MzdkODNiZjAsIDB4YTliY2FlNTMsIDB4ZGViYjllYzUsIDB4NDdiMmNmN2YsIDB4MzBiNWZmZTkKKwkud29yZCAweGJkYmRmMjFjLCAweGNhYmFjMjhhLCAweDUzYjM5MzMwLCAweDI0YjRhM2E2LCAweGJhZDAzNjA1CisJLndvcmQgMHhjZGQ3MDY5MywgMHg1NGRlNTcyOSwgMHgyM2Q5NjdiZiwgMHhiMzY2N2EyZSwgMHhjNDYxNGFiOAorCS53b3JkIDB4NWQ2ODFiMDIsIDB4MmE2ZjJiOTQsIDB4YjQwYmJlMzcsIDB4YzMwYzhlYTEsIDB4NWEwNWRmMWIKKwkud29yZCAweDJkMDJlZjhkCisKK0dQSU9fQkFTRToKKwkud29yZCAweGZmZmNlMDAwCitHUElPX0RJUkVDVElPTjoKKwkud29yZCAweDAwMDBmZmU3CisKKy5lbmQKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YXIvZmxhc2guYyBiL2JvYXJkL25ldHN0YXIvZmxhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTJjNDE2Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbmV0c3Rhci9mbGFzaC5jCkBAIC0wLDAgKzEsMzQzIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxpbm9zLmNvbT4KKyAqIEFsZXggWnVlcGtlIDxhenVAc3lzZ28uZGU+CisgKgorICogKEMpIENvcHlyaWdodCAyMDA1CisgKiAyTiBUZWxla29tdW5pa2FjZSwgYS5zLiA8d3d3LjJuLmN6PgorICogTGFkaXNsYXYgTWljaGwgPG1pY2hsQDJuLmN6PgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworLyojaWYgMCAqLworI2lmIChQSFlTX1NEUkFNXzFfU0laRSAhPSBTWl8zMk0pCisKKyNpbmNsdWRlICJjcmNlay5oIgorCisjaWYgKENGR19NQVhfRkxBU0hfQkFOS1MgPiAxKQorI2Vycm9yIFRoZXJlIGlzIGFsd2F5cyBvbmx5IF9vbmVfIGZsYXNoIGNoaXAKKyNlbmRpZgorCitmbGFzaF9pbmZvX3QgZmxhc2hfaW5mb1tDRkdfTUFYX0ZMQVNIX0JBTktTXTsKKworI2RlZmluZSBDTURfUkVBRF9BUlJBWQkJMHgwMDAwMDBmMAorI2RlZmluZSBDTURfVU5MT0NLMQkJMHgwMDAwMDBhYQorI2RlZmluZSBDTURfVU5MT0NLMgkJMHgwMDAwMDA1NQorI2RlZmluZSBDTURfRVJBU0VfU0VUVVAJCTB4MDAwMDAwODAKKyNkZWZpbmUgQ01EX0VSQVNFX0NPTkZJUk0JMHgwMDAwMDAzMAorI2RlZmluZSBDTURfUFJPR1JBTQkJMHgwMDAwMDBhMAorI2RlZmluZSBDTURfVU5MT0NLX0JZUEFTUwkweDAwMDAwMDIwCisKKyNkZWZpbmUgTUVNX0ZMQVNIX0FERFIxCQkoKih2b2xhdGlsZSB1MTYgKikoQ0ZHX0ZMQVNIX0JBU0UgKyAoMHgwMDAwMDU1NSA8PCAxKSkpCisjZGVmaW5lIE1FTV9GTEFTSF9BRERSMgkJKCoodm9sYXRpbGUgdTE2ICopKENGR19GTEFTSF9CQVNFICsgKDB4MDAwMDAyYWEgPDwgMSkpKQorCisjZGVmaW5lIEJJVF9FUkFTRV9ET05FCQkweDAwMDAwMDgwCisjZGVmaW5lIEJJVF9SRFlfTUFTSwkJMHgwMDAwMDA4MAorI2RlZmluZSBCSVRfUFJPR1JBTV9FUlJPUgkweDAwMDAwMDIwCisjZGVmaW5lIEJJVF9USU1FT1VUCQkweDgwMDAwMDAwCS8qIG91ciBmbGFnICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCit1bG9uZyBmbGFzaF9pbml0KHZvaWQpCit7CisJaW50IGk7CisKKwlmbGFzaF9pbmZvWzBdLmZsYXNoX2lkID0gKEFNRF9NQU5VRkFDVCAmIEZMQVNIX1ZFTkRNQVNLKSB8CisJCQkJIChBTURfSURfTFY4MDBCICYgRkxBU0hfVFlQRU1BU0spOworCWZsYXNoX2luZm9bMF0uc2l6ZSA9IFBIWVNfRkxBU0hfMV9TSVpFOworCWZsYXNoX2luZm9bMF0uc2VjdG9yX2NvdW50ID0gQ0ZHX01BWF9GTEFTSF9TRUNUOworCW1lbXNldChmbGFzaF9pbmZvWzBdLnByb3RlY3QsIDAsIENGR19NQVhfRkxBU0hfU0VDVCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZmxhc2hfaW5mb1swXS5zZWN0b3JfY291bnQ7IGkrKykgeworCQlzd2l0Y2ggKGkpIHsKKwkJY2FzZSAwOiAvKiAxNmtCICovCisJCQlmbGFzaF9pbmZvWzBdLnN0YXJ0WzBdID0gQ0ZHX0ZMQVNIX0JBU0U7CisJCQlicmVhazsKKwkJY2FzZSAxOiAvKiA4a0IgKi8KKwkJCWZsYXNoX2luZm9bMF0uc3RhcnRbMV0gPSBDRkdfRkxBU0hfQkFTRSArIDB4NDAwMDsKKwkJCWJyZWFrOworCQljYXNlIDI6IC8qIDhrQiAqLworCQkJZmxhc2hfaW5mb1swXS5zdGFydFsyXSA9IENGR19GTEFTSF9CQVNFICsgMHg0MDAwICsKKwkJCQkJCSAweDIwMDA7CisJCQlicmVhazsKKwkJY2FzZSAzOiAvKiAzMiBLQiAqLworCQkJZmxhc2hfaW5mb1swXS5zdGFydFszXSA9IENGR19GTEFTSF9CQVNFICsgMHg0MDAwICsKKwkJCQkJCSAyICogMHgyMDAwOworCQkJYnJlYWs7CisJCWNhc2UgNDoKKwkJCWZsYXNoX2luZm9bMF0uc3RhcnRbNF0gPSBDRkdfRkxBU0hfQkFTRSArIDB4NDAwMCArCisJCQkJCQkgMiAqIDB4MjAwMCArIDB4ODAwMDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OiAvKiA2NGtCICovCisJCQlmbGFzaF9pbmZvWzBdLnN0YXJ0W2ldID0gZmxhc2hfaW5mb1swXS5zdGFydFtpLTFdICsKKwkJCQkJCSAweDEwMDAwOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKiBVLUJvb3QgKi8KKwlmbGFzaF9wcm90ZWN0KEZMQUdfUFJPVEVDVF9TRVQsCisJCSAgICAgIExPQURFUjFfT0ZGU0VULAorCQkgICAgICBMT0FERVIxX09GRlNFVCArIExPQURFUl9TSVpFIC0gMSwgZmxhc2hfaW5mbyk7CisJLyogUHJvdGVjdCBjcmNlaywgZW52IGFuZCByX2VudiBhcyB3ZWxsICovCisJZmxhc2hfcHJvdGVjdChGTEFHX1BST1RFQ1RfU0VULCAwLCAweDgwMDAgLSAxLCBmbGFzaF9pbmZvKTsKKworCXJldHVybiBmbGFzaF9pbmZvWzBdLnNpemU7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZCBmbGFzaF9wcmludF9pbmZvKGZsYXNoX2luZm9fdCAqaW5mbykKK3sKKwlpbnQgaTsKKworCXN3aXRjaCAoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSykgeworCWNhc2UgKEFNRF9NQU5VRkFDVCAmIEZMQVNIX1ZFTkRNQVNLKToKKwkJcHV0cygiQU1EOiAiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHV0cygiVW5rbm93biB2ZW5kb3IgIik7CisJCWJyZWFrOworCX0KKworCXN3aXRjaCAoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9UWVBFTUFTSykgeworCWNhc2UgKEFNRF9JRF9MVjgwMEIgJiBGTEFTSF9UWVBFTUFTSyk6CisJCXB1dHMoIkFNMjlMVjgwMEJCICg4TWIpXG4iKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHV0cygiVW5rbm93biBjaGlwIHR5cGVcbiIpOworCQlyZXR1cm47CisJfQorCisJcHJpbnRmKCIgIFNpemU6ICVsZCBNQiBpbiAlZCBzZWN0b3JzXG4iLAorCSAgICAgICBpbmZvLT5zaXplID4+IDIwLCBpbmZvLT5zZWN0b3JfY291bnQpOworCisJcHV0cygiICBTZWN0b3Igc3RhcnQgYWRkcmVzc2VzOiIpOworCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgeworCQlpZiAoKGkgJSA1KSA9PSAwKQorCQkJcHV0cygiXG4gICAiKTsKKworCQlwcmludGYoIiAlMDhsWCVzIiwgaW5mby0+c3RhcnRbaV0sCisJCSAgICAgICBpbmZvLT5wcm90ZWN0W2ldID8gIiAoUk8pIiA6ICIgICAgICIpOworCX0KKwlwdXRzKCJcbiIpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworaW50IGZsYXNoX2VyYXNlKGZsYXNoX2luZm9fdCAqaW5mbywgaW50IHNfZmlyc3QsIGludCBzX2xhc3QpCit7CisJdXNob3J0IHJlc3VsdDsKKwlpbnQgcHJvdCwgc2VjdDsKKwlpbnQgcmMgPSBFUlJfT0s7CisKKwkvKiBmaXJzdCBsb29rIGZvciBwcm90ZWN0aW9uIGJpdHMgKi8KKworCWlmIChpbmZvLT5mbGFzaF9pZCA9PSBGTEFTSF9VTktOT1dOKQorCQlyZXR1cm4gRVJSX1VOS05PV05fRkxBU0hfVFlQRTsKKworCWlmICgoc19maXJzdCA8IDApIHx8IChzX2ZpcnN0ID4gc19sYXN0KSkKKwkJcmV0dXJuIEVSUl9JTlZBTDsKKworCWlmICgoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSykgIT0KKwkgICAgKEFNRF9NQU5VRkFDVCAmIEZMQVNIX1ZFTkRNQVNLKSkKKwkJcmV0dXJuIEVSUl9VTktOT1dOX0ZMQVNIX1ZFTkRPUjsKKworCXByb3QgPSAwOworCWZvciAoc2VjdCA9IHNfZmlyc3Q7IHNlY3QgPD0gc19sYXN0OyArK3NlY3QpCisJCWlmIChpbmZvLT5wcm90ZWN0W3NlY3RdKQorCQkJcHJvdCsrOworCisJaWYgKHByb3QpCisJCXByaW50ZigiLSBXYXJuaW5nOiAlZCBwcm90ZWN0ZWQgc2VjdG9ycyB3aWxsIG5vdCBiZSBlcmFzZWQhXG4iLAorCQkgICAgICAgcHJvdCk7CisJZWxzZQorCQlwdXRjKCdcbicpOworCisJLyogU3RhcnQgZXJhc2Ugb24gdW5wcm90ZWN0ZWQgc2VjdG9ycyAqLworCWZvciAoc2VjdCA9IHNfZmlyc3Q7IHNlY3QgPD0gc19sYXN0ICYmICFjdHJsYyAoKTsgc2VjdCsrKSB7CisJCWlmIChpbmZvLT5wcm90ZWN0W3NlY3RdID09IDApIHsJLyogbm90IHByb3RlY3RlZCAqLworCQkJdnVfc2hvcnQgKmFkZHIgPSAodnVfc2hvcnQgKikgKGluZm8tPnN0YXJ0W3NlY3RdKTsKKworCQkJLyogYXJtIHNpbXBsZSwgbm9uIGludGVycnVwdCBkZXBlbmRlbnQgdGltZXIgKi8KKwkJCXJlc2V0X3RpbWVyX21hc2tlZCgpOworCisJCQlNRU1fRkxBU0hfQUREUjEgPSBDTURfVU5MT0NLMTsKKwkJCU1FTV9GTEFTSF9BRERSMiA9IENNRF9VTkxPQ0syOworCQkJTUVNX0ZMQVNIX0FERFIxID0gQ01EX0VSQVNFX1NFVFVQOworCisJCQlNRU1fRkxBU0hfQUREUjEgPSBDTURfVU5MT0NLMTsKKwkJCU1FTV9GTEFTSF9BRERSMiA9IENNRF9VTkxPQ0syOworCQkJKmFkZHIgPSBDTURfRVJBU0VfQ09ORklSTTsKKworCQkJLyogd2FpdCB1bnRpbCBmbGFzaCBpcyByZWFkeSAqLworCQkJd2hpbGUgKDEpIHsKKwkJCQlyZXN1bHQgPSAqYWRkcjsKKworCQkJCS8qIGNoZWNrIHRpbWVvdXQgKi8KKwkJCQlpZiAoZ2V0X3RpbWVyX21hc2tlZCgpID4gQ0ZHX0ZMQVNIX0VSQVNFX1RPVVQpIHsKKwkJCQkJTUVNX0ZMQVNIX0FERFIxID0gQ01EX1JFQURfQVJSQVk7CisJCQkJCXJjID0gRVJSX1RJTU9VVDsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJaWYgKChyZXN1bHQgJiAweGZmZikgJiBCSVRfRVJBU0VfRE9ORSkKKwkJCQkJYnJlYWs7CisKKwkJCQlpZiAoKHJlc3VsdCAmIDB4ZmZmZikgJiBCSVRfUFJPR1JBTV9FUlJPUikgeworCQkJCQlyYyA9IEVSUl9QUk9HX0VSUk9SOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisKKwkJCU1FTV9GTEFTSF9BRERSMSA9IENNRF9SRUFEX0FSUkFZOworCisJCQlpZiAocmMgIT0gRVJSX09LKQorCQkJCWdvdG8gb3V0OworCisJCQlwdXRjKCcuJyk7CisJCX0KKwl9CitvdXQ6CisJLyogYWxsb3cgZmxhc2ggdG8gc2V0dGxlIC0gd2FpdCAxMCBtcyAqLworCXVkZWxheV9tYXNrZWQoMTAwMDApOworCisJcmV0dXJuIHJjOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5IG1lbW9yeSB0byBmbGFzaAorICovCisKK3N0YXRpYyBpbnQgd3JpdGVfaHdvcmQoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCB1c2hvcnQgZGF0YSkKK3sKKwl2dV9zaG9ydCAqYWRkciA9ICh2dV9zaG9ydCAqKSBkZXN0OworCXVzaG9ydCByZXN1bHQ7CisJaW50IHJjID0gRVJSX09LOworCisJLyogY2hlY2sgaWYgZmxhc2ggaXMgKHN1ZmZpY2llbnRseSkgZXJhc2VkICovCisJcmVzdWx0ID0gKmFkZHI7CisJaWYgKChyZXN1bHQgJiBkYXRhKSAhPSBkYXRhKQorCQlyZXR1cm4gRVJSX05PVF9FUkFTRUQ7CisKKwlNRU1fRkxBU0hfQUREUjEgPSBDTURfVU5MT0NLMTsKKwlNRU1fRkxBU0hfQUREUjIgPSBDTURfVU5MT0NLMjsKKwlNRU1fRkxBU0hfQUREUjEgPSBDTURfUFJPR1JBTTsKKwkqYWRkciA9IGRhdGE7CisKKwkvKiBhcm0gc2ltcGxlLCBub24gaW50ZXJydXB0IGRlcGVuZGVudCB0aW1lciAqLworCXJlc2V0X3RpbWVyX21hc2tlZCgpOworCisJLyogd2FpdCB1bnRpbCBmbGFzaCBpcyByZWFkeSAqLworCXdoaWxlICgxKSB7CisJCXJlc3VsdCA9ICphZGRyOworCisJCS8qIGNoZWNrIHRpbWVvdXQgKi8KKwkJaWYgKGdldF90aW1lcl9tYXNrZWQgKCkgPiBDRkdfRkxBU0hfRVJBU0VfVE9VVCkgeworCQkJcmMgPSBFUlJfVElNT1VUOworCQkJYnJlYWs7CisJCX0KKworCQlpZiAoKHJlc3VsdCAmIDB4ODApID09IChkYXRhICYgMHg4MCkpCisJCQlicmVhazsKKworCQlpZiAoKHJlc3VsdCAmIDB4ZmZmZikgJiBCSVRfUFJPR1JBTV9FUlJPUikgeworCQkJcmVzdWx0ID0gKmFkZHI7CisKKwkJCWlmICgocmVzdWx0ICYgMHg4MCkgIT0gKGRhdGEgJiAweDgwKSkKKwkJCQlyYyA9IEVSUl9QUk9HX0VSUk9SOworCQl9CisJfQorCisJKmFkZHIgPSBDTURfUkVBRF9BUlJBWTsKKworCWlmICgqYWRkciAhPSBkYXRhKQorCQlyYyA9IEVSUl9QUk9HX0VSUk9SOworCisJcmV0dXJuIHJjOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5IG1lbW9yeSB0byBmbGFzaC4KKyAqLworCitpbnQgd3JpdGVfYnVmZihmbGFzaF9pbmZvX3QgKmluZm8sIHVjaGFyICpzcmMsIHVsb25nIGFkZHIsIHVsb25nIGNudCkKK3sKKwl1bG9uZyBjcCwgd3A7CisJaW50IGw7CisJaW50IGksIHJjOworCXVzaG9ydCBkYXRhOworCisJd3AgPSAoYWRkciAmIH4xKTsJLyogZ2V0IGxvd2VyIHdvcmQgYWxpZ25lZCBhZGRyZXNzICovCisKKwkvKgorCSAqIGhhbmRsZSB1bmFsaWduZWQgc3RhcnQgYnl0ZXMKKwkgKi8KKwlpZiAoKGwgPSBhZGRyIC0gd3ApICE9IDApIHsKKwkJZGF0YSA9IDA7CisJCWZvciAoaSA9IDAsIGNwID0gd3A7IGkgPCBsOyArK2ksICsrY3ApCisJCQlkYXRhID0gKGRhdGEgPj4gOCkgfCAoKih1Y2hhciAqKSBjcCA8PCA4KTsKKwkJZm9yICg7IGkgPCAyICYmIGNudCA+IDA7ICsraSkgeworCQkJZGF0YSA9IChkYXRhID4+IDgpIHwgKCpzcmMrKyA8PCA4KTsKKwkJCS0tY250OworCQkJKytjcDsKKwkJfQorCQlmb3IgKDsgY250ID09IDAgJiYgaSA8IDI7ICsraSwgKytjcCkKKwkJCWRhdGEgPSAoZGF0YSA+PiA4KSB8ICgqKHVjaGFyICopIGNwIDw8IDgpOworCisJCWlmICgocmMgPSB3cml0ZV9od29yZChpbmZvLCB3cCwgZGF0YSkpICE9IDApCisJCQlyZXR1cm4gKHJjKTsKKwkJd3AgKz0gMjsKKwl9CisKKwkvKgorCSAqIGhhbmRsZSB3b3JkIGFsaWduZWQgcGFydAorCSAqLworCXdoaWxlIChjbnQgPj0gMikgeworCQlkYXRhID0gKigodnVfc2hvcnQgKikgc3JjKTsKKwkJaWYgKChyYyA9IHdyaXRlX2h3b3JkKGluZm8sIHdwLCBkYXRhKSkgIT0gMCkKKwkJCXJldHVybiAocmMpOworCQlzcmMgKz0gMjsKKwkJd3AgKz0gMjsKKwkJY250IC09IDI7CisJfQorCisJaWYgKGNudCA9PSAwKQorCQlyZXR1cm4gRVJSX09LOworCisJLyoKKwkgKiBoYW5kbGUgdW5hbGlnbmVkIHRhaWwgYnl0ZXMKKwkgKi8KKwlkYXRhID0gMDsKKwlmb3IgKGkgPSAwLCBjcCA9IHdwOyBpIDwgMiAmJiBjbnQgPiAwOyArK2ksICsrY3ApIHsKKwkJZGF0YSA9IChkYXRhID4+IDgpIHwgKCpzcmMrKyA8PCA4KTsKKwkJLS1jbnQ7CisJfQorCWZvciAoOyBpIDwgMjsgKytpLCArK2NwKQorCQlkYXRhID0gKGRhdGEgPj4gOCkgfCAoKih1Y2hhciAqKSBjcCA8PCA4KTsKKworCXJldHVybiB3cml0ZV9od29yZChpbmZvLCB3cCwgZGF0YSk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3Rhci9uYW5kLmMgYi9ib2FyZC9uZXRzdGFyL25hbmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDcwYzFhCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbmV0c3Rhci9uYW5kLmMKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNSAyTiBURUxFS09NVU5JS0FDRSwgTGFkaXNsYXYgTWljaGwKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQorCisjaW5jbHVkZSA8bmFuZC5oPgorCisvKgorICoJaGFyZHdhcmUgc3BlY2lmaWMgYWNjZXNzIHRvIGNvbnRyb2wtbGluZXMKKyAqLworI2RlZmluZQlNQVNLX0NMRQkweDAyCisjZGVmaW5lCU1BU0tfQUxFCTB4MDQKKworc3RhdGljIHZvaWQgbmV0c3Rhcl9uYW5kX2h3Y29udHJvbChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IGNtZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXVsb25nIElPX0FERFJfVyA9ICh1bG9uZykgdGhpcy0+SU9fQUREUl9XOworCisJSU9fQUREUl9XICY9IH4oTUFTS19BTEV8TUFTS19DTEUpOworCXN3aXRjaCAoY21kKSB7CisJCWNhc2UgTkFORF9DVExfU0VUQ0xFOiBJT19BRERSX1cgfD0gTUFTS19DTEU7IGJyZWFrOworCQljYXNlIE5BTkRfQ1RMX1NFVEFMRTogSU9fQUREUl9XIHw9IE1BU0tfQUxFOyBicmVhazsKKwl9CisJdGhpcy0+SU9fQUREUl9XID0gKHZvaWQgKikgSU9fQUREUl9XOworfQorCisvKgorICoJY2hpcCBSL0IgZGV0ZWN0aW9uCisgKi8KKy8qKioKK3N0YXRpYyBpbnQgbmV0c3Rhcl9uYW5kX3JlYWR5KHN0cnVjdCBtdGRfaW5mbyAqbXRkKQoreworCXJldHVybiAoKih2b2xhdGlsZSB1c2hvcnQgKilHUElPX0RBVEFfSU5QVVRfUkVHKSAmIDB4MDI7Cit9CisqKiovCisKK3ZvaWQgYm9hcmRfbmFuZF9pbml0KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCit7CisJbmFuZC0+b3B0aW9ucyA9IE5BTkRfU0FNU1VOR19MUF9PUFRJT05TOworCW5hbmQtPmVjY21vZGUgPSBOQU5EX0VDQ19TT0ZUOworCW5hbmQtPmh3Y29udHJvbCA9IG5ldHN0YXJfbmFuZF9od2NvbnRyb2w7CisvKgluYW5kLT5kZXZfcmVhZHkgPSBuZXRzdGFyX25hbmRfcmVhZHk7ICovCisJbmFuZC0+Y2hpcF9kZWxheSA9IDE4OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC9uZXRzdGFyL25ldHN0YXIuYyBiL2JvYXJkL25ldHN0YXIvbmV0c3Rhci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNjE1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9uZXRzdGFyL25ldHN0YXIuYwpAQCAtMCwwICsxLDY4IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1IDJOIFRFTEVLT01VTklLQUNFLCBMYWRpc2xhdiBNaWNobAorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworaW50IGJvYXJkX2luaXQodm9pZCkKK3sKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworCS8qIGFyY2ggbnVtYmVyIG9mIE5ldFN0YXIgYm9hcmQgKi8KKwkvKiBUT0RPOiB1c2UgZGVmaW5lIGZyb20gYXNtL21hY2gtdHlwZXMuaCAqLworCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSA2OTI7CisKKwkvKiBhZHJlc3Mgb2YgYm9vdCBwYXJhbWV0ZXJzICovCisJZ2QtPmJkLT5iaV9ib290X3BhcmFtcyA9IDB4MTAwMDAxMDA7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGRyYW1faW5pdCh2b2lkKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJZ2QtPmJkLT5iaV9kcmFtWzBdLnN0YXJ0ID0gUEhZU19TRFJBTV8xOworCWdkLT5iZC0+YmlfZHJhbVswXS5zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7CisKKwkvKiBUYWtlIHRoZSBFdGhlcm5ldCBjb250cm9sbGVyIG91dCBvZiByZXNldCBhbmQgd2FpdAorCSAqIGZvciB0aGUgRUVQUk9NIGxvYWQgdG8gY29tcGxldGUuICovCisJKigodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgR1BJT19EQVRBX09VVFBVVF9SRUcpIHw9IDB4ODA7CisJdWRlbGF5KDEwKTsJLyogZG9lc24ndCB3b3JrIGJlZm9yZSBpbnRlcnJ1cHRfaW5pdCBjYWxsICovCisJKigodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgR1BJT19EQVRBX09VVFBVVF9SRUcpICY9IH4weDgwOworCXVkZWxheSg1MDApOworCisJcmV0dXJuIDA7Cit9CisKK2V4dGVybiB2b2lkIHBhcnRpdGlvbl9mbGFzaCh2b2lkKTsKKworaW50IG1pc2NfaW5pdF9yKHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK2V4dGVybiB2b2lkIG5hbmRfaW5pdCh2b2lkKTsKKworaW50IGJvYXJkX2xhdGVfaW5pdCh2b2lkKQoreworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3Rhci9zZXR1cC5TIGIvYm9hcmQvbmV0c3Rhci9zZXR1cC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2Nzc4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9uZXRzdGFyL3NldHVwLlMKQEAgLTAsMCArMSwyODcgQEAKKy8qCisgKiBCb2FyZCBzcGVjaWZpYyBzZXR1cCBpbmZvCisgKgorICogKEMpIENvcHlyaWdodCAyMDA0IEFsZXMgSmluZHJhIDxqaW5kcmFAMm4uY3o+CisgKiAoQykgQ29weXJpZ2h0IDIwMDUgTGFkaXNsYXYgTWljaGwgPG1pY2hsQDJuLmN6PgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKyNpbmNsdWRlIDx2ZXJzaW9uLmg+CisKK19URVhUX0JBU0U6CisJLndvcmQJVEVYVF9CQVNFCS8qIFNEUkFNIGxvYWQgYWRkciBmcm9tIGNvbmZpZy5tayAqLworCitPTUFQNTkxMF9MUEcxX0JBU0U6CQkud29yZCAweGZmZmJkMDAwCitPTUFQNTkxMF9USVBCX1NXSVRDSEVTX0JBU0U6CS53b3JkIDB4ZmZmYmM4MDAKK09NQVA1OTEwX01QVV9UQ19CQVNFOgkJLndvcmQgMHhmZmZlY2MwMAorT01BUDU5MTBfTVBVX0NMS01fQkFTRToJCS53b3JkIDB4ZmZmZWNlMDAKK09NQVA1OTEwX1VMUERfUFdSX01OR19CQVNFOgkud29yZCAweGZmZmUwODAwCitPTUFQNTkxMF9EUExMMV9CQVNFOgkJLndvcmQgMHhmZmZlY2YwMAorT01BUDU5MTBfR1BJT19CQVNFOgkJLndvcmQgMHhmZmZjZTAwMAorT01BUDU5MTBfTVBVX1dEX1RJTUVSX0JBU0U6CS53b3JkIDB4ZmZmZWM4MDAKK09NQVA1OTEwX01QVUlfQkFTRToJCS53b3JkIDB4ZmZmZWM5MDAKKworX09NQVA1OTEwX0FSTV9DS0NUTDoJCS53b3JkIE9NQVA1OTEwX0FSTV9DS0NUTAorX09NQVA1OTEwX0FSTV9FTl9DTEs6CQkud29yZCBPTUFQNTkxMF9BUk1fRU5fQ0xLCisKK09NQVA1OTEwX01QVUlfQ1RSTDoJCS53b3JkIDB4MDAwMGZmMWIKKworVkFMX0VNSUZTX0NTMF9DT05GSUc6CQkud29yZCAweDAwMDA5MDkwCitWQUxfRU1JRlNfQ1MxX0NPTkZJRzoJCS53b3JkIDB4MDAwMDMwMzEKK1ZBTF9FTUlGU19DUzJfQ09ORklHOgkJLndvcmQgMHgwMDAwYTBhMQorVkFMX0VNSUZTX0NTM19DT05GSUc6CQkud29yZCAweDAwMDBjMGMwCitWQUxfRU1JRlNfRFlOX1dBSVQ6CQkud29yZCAweDAwMDAwMDAwCisvKiBhdXRvcmVmcmVzaCBjb3VudGVyIDB4MjQ2ICgoNjQwMDAwMDAvMTMuNCktNDAwKS84MTkyKSAqLworCQkJCS8qICAgICBTTFJGICAgICAgIFNEX1JFVCAgICAgQVJFICAgICAgICBTRFJBTV9UWVBFICAgQVJDViAgICAgICAgICAgU0RSQU1fRlJFUVVFTkNZIFBXRCAgICAgQ0xLICovCisKKyNpZiAoUEhZU19TRFJBTV8xX1NJWkUgPT0gU1pfMzJNKQorVkFMX0VNSUZGX1NEUkFNX0NPTkZJRzoJCS53b3JkICgoMCA8PCAwKSB8ICgwIDw8IDEpIHwgKDMgPDwgMikgfCAoMHhmIDw8IDQpIHwgKDB4MjQ2IDw8IDgpIHwgKDAgPDwgMjQpIHwgKDAgPDwgMjYpIHwgKDAgPDwgMjcpKQorI2Vsc2UKK1ZBTF9FTUlGRl9TRFJBTV9DT05GSUc6CQkud29yZCAoKDAgPDwgMCkgfCAoMCA8PCAxKSB8ICgzIDw8IDIpIHwgKDB4ZCA8PCA0KSB8ICgweDI0NiA8PCA4KSB8ICgwIDw8IDI0KSB8ICgwIDw8IDI2KSB8ICgwIDw8IDI3KSkKKyNlbmRpZgorCitWQUxfRU1JRkZfU0RSQU1fQ09ORklHMjoJLndvcmQgMHgwMDAwMDAwMworVkFMX0VNSUZGX01SUzoJCQkud29yZCAweDAwMDAwMDM3CisKKy8qCisgKiBHUElPMDQgLSBHcmVlbiBMRUQgKFJlZCBMRUQgaXMgY29ubmVjdGVkIHRvIExFRCBQdWxzZSBHZW5lcmF0b3IpCisgKiBHUElPMDcgLSBMQU45MUMxMTEgcmVzZXQKKyAqLworR1BJT19ESVJFQ1RJT046CisJLndvcmQgMHgwMDAwZmY2ZgorLyoKKyAqIERpc2FibGUgZXZlcnl0aGluZyAoZ3JlZW4gTEVEIGlzIGNvbm5lY3RlZCB2aWEgaW52ZXJ0b3IpCisgKi8KK0dQSU9fT1VUUFVUOgorCS53b3JkIDB4MDAwMDAwMTAKKworTVVYX0NPTkZJR19CQVNFOgorCS53b3JkIDB4ZmZmZTEwMDAKKworTVVYX0NPTkZJR19WQUxVRVM6CisJLmFsaWduIDQKKwkud29yZCAweDAwMDAwMDAwCUAgRlVOQ19NVVhfQ1RSTF8wCisJLndvcmQgMHgwMDAwMDAwMAlAIEZVTkNfTVVYX0NUUkxfMQorCS53b3JkIDB4MDAwMDAwMDAJQCBGVU5DX01VWF9DVFJMXzIKKwkud29yZCAweDAwMDAwMDAwCUAgRlVOQ19NVVhfQ1RSTF8zCisJLndvcmQgMHgwMDAwMDAwMAlAIEZVTkNfTVVYX0NUUkxfNAorCS53b3JkIDB4MDIwODA0ODAJQCBGVU5DX01VWF9DVFJMXzUKKwkud29yZCAweDAxMDAwMDFjCUAgRlVOQ19NVVhfQ1RSTF82CisJLndvcmQgMHgwMDA0ODAwYglAIEZVTkNfTVVYX0NUUkxfNworCS53b3JkIDB4MTAwMDEyMDAJQCBGVU5DX01VWF9DVFJMXzgKKwkud29yZCAweDAxMjAxMDEyCUAgRlVOQ19NVVhfQ1RSTF85CisJLndvcmQgMHgwMjA4MjI0OAlAIEZVTkNfTVVYX0NUUkxfQQorCS53b3JkIDB4MDAwMDAyNDgJQCBGVU5DX01VWF9DVFJMX0IKKwkud29yZCAweDEyMjQwMDAwCUAgRlVOQ19NVVhfQ1RSTF9DCisJLndvcmQgMHgwMDAwMjAwMAlAIEZVTkNfTVVYX0NUUkxfRAorCS53b3JkIDB4MDAwMDAwMDAJQCBQVUxMX0RXTl9DVFJMXzAKKwkud29yZCAweDAwMDAwODAwCUAgUFVMTF9EV05fQ1RSTF8xCisJLndvcmQgMHgwMTgwMTAwMAlAIFBVTExfRFdOX0NUUkxfMgorCS53b3JkIDB4MDAwMDAwMDAJQCBQVUxMX0RXTl9DVFJMXzMKKwkud29yZCAweDAwMDAwMDAwCUAgR0FURV9JTkhfQ1RSTF8wCisJLndvcmQgMHgwMDAwMDAwMAlAIFZPTFRBR0VfQ1RSTF8wCisJLndvcmQgMHgwMDAwMDAwMAlAIFRFU1RfREJHX0NUUkxfMAorCS53b3JkIDB4MDAwMDAwMDYJQCBNT0RfQ09ORl9DVFJMXzAKKwkud29yZCAweDAwMDBlYWVmCUAgQ09NUF9NT0RFX0NUUkxfMAorCitNVVhfQ09ORklHX09GRlNFVFM6CisJLmFsaWduIDEKKwkuYnl0ZSAweDAwCQlAIEZVTkNfTVVYX0NUUkxfMAorCS5ieXRlIDB4MDQJCUAgRlVOQ19NVVhfQ1RSTF8xCisJLmJ5dGUgMHgwOAkJQCBGVU5DX01VWF9DVFJMXzIKKwkuYnl0ZSAweDEwCQlAIEZVTkNfTVVYX0NUUkxfMworCS5ieXRlIDB4MTQJCUAgRlVOQ19NVVhfQ1RSTF80CisJLmJ5dGUgMHgxOAkJQCBGVU5DX01VWF9DVFJMXzUKKwkuYnl0ZSAweDFjCQlAIEZVTkNfTVVYX0NUUkxfNgorCS5ieXRlIDB4MjAJCUAgRlVOQ19NVVhfQ1RSTF83CisJLmJ5dGUgMHgyNAkJQCBGVU5DX01VWF9DVFJMXzgKKwkuYnl0ZSAweDI4CQlAIEZVTkNfTVVYX0NUUkxfOQorCS5ieXRlIDB4MmMJCUAgRlVOQ19NVVhfQ1RSTF9BCisJLmJ5dGUgMHgzMAkJQCBGVU5DX01VWF9DVFJMX0IKKwkuYnl0ZSAweDM0CQlAIEZVTkNfTVVYX0NUUkxfQworCS5ieXRlIDB4MzgJCUAgRlVOQ19NVVhfQ1RSTF9ECisJLmJ5dGUgMHg0MAkJQCBQVUxMX0RXTl9DVFJMXzAKKwkuYnl0ZSAweDQ0CQlAIFBVTExfRFdOX0NUUkxfMQorCS5ieXRlIDB4NDgJCUAgUFVMTF9EV05fQ1RSTF8yCisJLmJ5dGUgMHg0YwkJQCBQVUxMX0RXTl9DVFJMXzMKKwkuYnl0ZSAweDUwCQlAIEdBVEVfSU5IX0NUUkxfMAorCS5ieXRlIDB4NjAJCUAgVk9MVEFHRV9DVFJMXzAKKwkuYnl0ZSAweDcwCQlAIFRFU1RfREJHX0NUUkxfMAorCS5ieXRlIDB4ODAJCUAgTU9EX0NPTkZfQ1RSTF8wCisJLmJ5dGUgMHgwYwkJQCBDT01QX01PREVfQ1RSTF8wCisJLmJ5dGUgMHhmZgorCisuZ2xvYmwgbG93bGV2ZWxfaW5pdAorbG93bGV2ZWxfaW5pdDoKKwkvKiBJbXByb3ZlIHBlcmZvcm1hbmNlIGEgYml0Li4uICovCisJbXJjCXAxNSwgMCwgcjEsIGMwLCBjMCwgMAkJQCByZWFkIEMxNSBJRCByZWdpc3RlcgorCW1yYwlwMTUsIDAsIHIxLCBjMCwgYzAsIDEJCUAgcmVhZCBDMTUgQ2FjaGUgaW5mb3JtYXRpb24gcmVnaXN0ZXIKKwltcmMJcDE1LCAwLCByMSwgYzEsIGMwLCAwCQlAIHJlYWQgQzE1IENvbnRyb2wgcmVnaXN0ZXIKKwlvcnIJcjEsIHIxLCAjMHgxMDAwCQkJQCBlbmFibGUgSS1jYWNoZSwgbWFwIGludGVycnVwdCB2ZWN0b3IgMHhmZmZmMDAwMAorCW1jcglwMTUsIDAsIHIxLCBjMSwgYzAsIDAJCUAgd3JpdGUgQzE1IENvbnRyb2wgcmVnaXN0ZXIKKwltb3YJcjEsICMweDAwCisJbWNyCXAxNSwgMCwgcjEsIGM3LCBjNSwgMAkJQCBGbHVzaCBJLWNhY2hlCisJbm9wCisJbm9wCisJbm9wCisJbm9wCisKKwkvKiBTZXR1cCBjbG9ja2luZyBtb2RlICovCisJbGRyCXIwLCBPTUFQNTkxMF9NUFVfQ0xLTV9CQVNFCUAgcHJlcGFyZSBiYXNlIG9mIENMT0NLIHVuaXQKKwlsZHJoCXIxLCBbcjAsICMweDE4XQkJCUAgZ2V0IHJlc2V0IHN0YXR1cworCWJpYwlyMSwgcjEsICMoNyA8PCAxMSkJCUAgY2xlYXIgY2xvY2sgc2VsZWN0CisJb3JyCXIxLCByMSwgIygyIDw8IDExKQkJQCBzZXQgc3luY2hyb25vdXMgc2NhbGFibGUKKwltb3YJcjIsICMwCQkJCUAgc2V0IHdhaXQgY291bnRlciB0byAxMDAgY2xvY2sgY3ljbGVzCisKK2ljYWNoZV9sb29wOgorCWNtcAlyMiwgIzB4MDEKKwlzdHJlcWgJcjEsIFtyMCwgIzB4MThdCisJYWRkCXIyLCByMiwgIzB4MDEKKwljbXAJcjIsICMweDEwCisJYm5lCWljYWNoZV9sb29wCisJbm9wCisKKwkvKiBTZXR1cCBjbG9jayBkaXZpc29ycyAqLworCWxkcglyMCwgT01BUDU5MTBfTVBVX0NMS01fQkFTRQlAIGJhc2Ugb2YgQ0xPQ0sgdW5pdAorCWxkcglyMSwgX09NQVA1OTEwX0FSTV9DS0NUTAorCW9ycglyMSwgcjEsICMweDIwMDAJCQlAIGVuYWJsZSBEU1AgY2xvY2sKKwlzdHJoCXIxLCBbcjAsICMweDAwXQkJCUAgc2V0dXAgY2xvY2sgZGl2aXNvcnMKKworCS8qIFNldHVwIERQTEwgdG8gZ2VuZXJhdGUgcmVxdWVzdGVkIGZyZXEgKi8KKwlsZHIJcjAsIE9NQVA1OTEwX0RQTEwxX0JBU0UJCUAgYmFzZSBvZiBEUExMMSByZWdpc3RlcgorCW1vdglyMSwgIzB4MDAxMAkJCUAgc2V0IFBMTF9FTkFCTEUKKwlvcnIJcjEsIHIxLCAjMHgyMDAwCQkJQCBzZXQgSU9CIHRvIG5ldyBsb2NraW5nCisJb3JyCXIxLCByMSwgIyhPTUFQNTkxMF9EUExMX01VTCA8PCA3KSBAIHNldHVwIG11bHRpcGxpZXIgQ0xLUkVGCisJb3JyCXIxLCByMSwgIyhPTUFQNTkxMF9EUExMX0RJViA8PCA1KSBAIHNldHVwIGRpdmlkZXIgQ0xLUkVGCisJc3RyaAlyMSwgW3IwXQkJCUAgd3JpdGUKKworbG9ja2luZzoKKwlsZHJoCXIxLCBbcjBdCQkJQCBnZXQgRFBMTCB2YWx1ZQorCXRzdAlyMSwgIzB4MDEKKwliZXEJbG9ja2luZwkJCQlAIHdoaWxlIExPQ0sgbm90IHNldAorCisJLyogRW5hYmxlIGNsb2NrICovCisJbGRyCXIwLCBPTUFQNTkxMF9NUFVfQ0xLTV9CQVNFCUAgYmFzZSBvZiBDTE9DSyB1bml0CisJbW92CXIxLCAjKDEgPDwgMTApCQkJQCBkaXNhYmxlIGlkbGUgbW9kZSBkbyBub3QgY2hlY2sKKwkJCQkJCUAgbldBS0VVUCBwaW4sIG90aGVyIHJlbWFpbiBhY3RpdmUKKwlzdHJoCXIxLCBbcjAsICMweDA0XQorCWxkcglyMSwgX09NQVA1OTEwX0FSTV9FTl9DTEsKKwlzdHJoCXIxLCBbcjAsICMweDA4XQorCW1vdglyMSwgIzB4MDAzZgkJCUAgRkxBU0guUlAgbm90IGVuYWJsZWQgaW4gaWRsZSBhbmQKKwkJCQkJCUAgbWF4IGRlbGF5ZWQgKCAzMiB4IENMS0lOICkKKwlzdHJoCXIxLCBbcjAsICMweDBjXQorCisJLyogQ29uZmlndXJlIDU5MTAgcGlucyBmdW5jdGlvbnMgdG8gbWF0Y2ggb3VyIGJvYXJkLiAqLworCWxkciAgICAgcjAsIE1VWF9DT05GSUdfQkFTRQorCWFkcglyMSwgTVVYX0NPTkZJR19WQUxVRVMKKwlhZHIJcjIsIE1VWF9DT05GSUdfT0ZGU0VUUworbmV4dF9tdXhfY2ZnOgorCWxkcmIJcjMsIFtyMl0sICMxCisJbGRyCXI0LCBbcjFdLCAjNAorCWNtcAlyMywgIzB4ZmYKKwlzdHJuZQlyNCwgW3IwLCByM10KKwlibmUJbmV4dF9tdXhfY2ZnCisKKwkvKiBDb25maWd1cmUgR1BJTyBwaW5zIChhbHNvIGRpc2FibGVzIEdyZWVuIExFRCkgKi8KKwlsZHIJcjAsIE9NQVA1OTEwX0dQSU9fQkFTRQorCWxkcglyMSwgR1BJT19PVVRQVVQKKwlzdHJoICAgIHIxLCBbcjAsICMweDA0XQorCWxkcglyMSwgR1BJT19ESVJFQ1RJT04KKwlzdHJoCXIxLCBbcjAsICMweDA4XQorCisJLyogRW5hYmxlUGVyaXBoZXJhbHMgKi8KKwlsZHIJcjAsIE9NQVA1OTEwX01QVV9DTEtNX0JBU0UJQCBDTE9DSyB1bml0CisJbW92CXIxLCAjMHgwMDAxCQkJQCBQZXJpcGhlcmFsIGVuYWJsZQorCXN0cmgJcjEsIFtyMCwgIzB4MTRdCisKKwkvKiBQcm9ncmFtIExFRCBQdWxzZSBHZW5lcmF0b3IgKi8KKwlsZHIJcjAsIE9NQVA1OTEwX0xQRzFfQkFTRQkJQCAxc3QgTEVEIFB1bHNlIEdlbmVyYXRvcgorCW1vdglyMSwgIzB4N0YJCQlAIFNldCBvYnNjdXJlIGZyZXF1ZW5jeSBpbgorCXN0cmIJcjEsIFtyMCwgIzB4MDBdCQkJQCBMQ1IKKwltb3YJcjEsICMweDAxCQkJQCBFbmFibGUgY2xvY2sgKENMS19FTikgaW4KKwlzdHJiICAgIHIxLCBbcjAsICMweDA0XQkJCUAgUE1SCisKKwkvKiBUSVBCIExvY2sgVUFSVDEgKi8KKwlsZHIJcjAsIE9NQVA1OTEwX1RJUEJfU1dJVENIRVNfQkFTRQlAIHByZXBhcmUgYmFzZSBvZiBUSVBCIHN3aXRjaGVzCisJbW92CXIxLCAjMQkJCQlAIEFSTSBhbGxvY2F0ZWQKKwlzdHJoCXIxLCBbcjAsIzB4MDRdCQkJQCBjbGVhciBJUlEgbGluZSBhbmQgc3RhdHVzIGJpdHMKKwlzdHJoCXIxLCBbcjAsIzB4MDBdCisJbGRyaAlyMSwgW3IwLCMweDA0XQorCisJLyogRGlzYWJsZSB3YXRjaGRvZyAqLworCWxkcglyMCwgT01BUDU5MTBfTVBVX1dEX1RJTUVSX0JBU0UKKwltb3YJcjEsICMweGY1CisJc3RyaAlyMSwgW3IwLCAjMHg4XQorCW1vdglyMSwgIzB4YTAKKwlzdHJoCXIxLCBbcjAsICMweDhdCisKKwkvKiBFbmFibGUgTUNMSyAqLworCWxkcglyMCwgT01BUDU5MTBfVUxQRF9QV1JfTU5HX0JBU0UKKwltb3YJcjEsICMweDYKKwlzdHJoCXIxLCBbcjAsICMweDM0XQorCXN0cmgJcjEsIFtyMCwgIzB4MzRdCisKKwkvKiBTZXR1cCBjbG9jayBkaXZpc29ycyAqLworCWxkcglyMCwgT01BUDU5MTBfVUxQRF9QV1JfTU5HX0JBU0UJQCBiYXNlIG9mIFVMRFBMIERQTEwxIHJlZ2lzdGVyCisKKwltb3YJcjEsICMweDAwMTAJCQlAIHNldCBQTExfRU5BQkxFCisJb3JyCXIxLCByMSwgIzB4MjAwMAkJCUAgc2V0IElPQiB0byBuZXcgbG9ja2luZworCXN0cmgJcjEsIFtyMF0JCQlAIHdyaXRlCisKK3Vsb2NraW5nOgorCWxkcmgJcjEsIFtyMF0JCQlAIGdldCBEUExMIHZhbHVlCisJdHN0CXIxLCAjMQorCWJlcQl1bG9ja2luZwkJCUAgd2hpbGUgTE9DSyBub3Qgc2V0CisKKwkvKiBFTUlGIGluaXQgKi8KKwlsZHIJcjAsIE9NQVA1OTEwX01QVV9UQ19CQVNFCisJbGRyaAlyMSwgW3IwLCAjMHgwY10JCQlAIEVNSUZTX0NPTkZJR19SRUcKKwliaWMJcjEsIHIxLCAjMHgwYwkJCUAgcHdyIGRvd24gZGlzYWJsZWQsIGZsYXNoIFdQCisJb3JyCXIxLCByMSwgIzB4MDEKKwlzdHIJcjEsIFtyMCwgIzB4MGNdCisKKwlsZHIJcjEsIFZBTF9FTUlGU19DUzBfQ09ORklHCisJc3RyCXIxLCBbcjAsICMweDEwXQkJCUAgRU1JRlNfQ1MwX0NPTkZJRworCWxkcglyMSwgVkFMX0VNSUZTX0NTMV9DT05GSUcKKwlzdHIJcjEsIFtyMCwgIzB4MTRdCQkJQCBFTUlGU19DUzFfQ09ORklHCisJbGRyCXIxLCBWQUxfRU1JRlNfQ1MyX0NPTkZJRworCXN0cglyMSwgW3IwLCAjMHgxOF0JCQlAIEVNSUZTX0NTMl9DT05GSUcKKwlsZHIJcjEsIFZBTF9FTUlGU19DUzNfQ09ORklHCisJc3RyCXIxLCBbcjAsICMweDFjXQkJCUAgRU1JRlNfQ1MzX0NPTkZJRworCWxkcglyMSwgVkFMX0VNSUZTX0RZTl9XQUlUCisJc3RyCXIxLCBbcjAsICMweDQwXQkJCUAgRU1JRlNfQ0ZHX0RZTl9XQUlUCisKKwkvKiBTZXR1cCBTRFJBTSAqLworCWxkcglyMSwgVkFMX0VNSUZGX1NEUkFNX0NPTkZJRworCXN0cglyMSwgW3IwLCAjMHgyMF0JCQlAIEVNSUZGX1NEUkFNX0NPTkZJRworCWxkcglyMSwgVkFMX0VNSUZGX1NEUkFNX0NPTkZJRzIKKwlzdHIJcjEsIFtyMCwgIzB4M2NdCQkJQCBFTUlGRl9TRFJBTV9DT05GSUcyCisJbGRyCXIxLCBWQUxfRU1JRkZfTVJTCisJc3RyCXIxLCBbcjAsICMweDI0XQkJCUAgRU1JRkZfTVJTCisJLyogU0RSQU0gbmVlZHMgMTAwdXMgdG8gc3RhYmlsaXplICovCisJbW92CXIwLCAjMHg0MDAwCitzZGVsYXk6CisJc3VicwlyMCwgcjAsICMweDEKKwlibmUgCXNkZWxheQorCisJLyogYmFjayB0byBhcmNoIGNhbGxpbmcgY29kZSAqLworCW1vdglwYywgbHIKKy5lbmQKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YXIvdS1ib290LmxkcyBiL2JvYXJkL25ldHN0YXIvdS1ib290LmxkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzE3ZjcyCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvbmV0c3Rhci91LWJvb3QubGRzCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIEdhcnkgSmVubmVqb2huLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8Z2pAZGVueC5kZT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCitPVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIpCitPVVRQVVRfQVJDSChhcm0pCitFTlRSWShfc3RhcnQpCitTRUNUSU9OUworeworCS4gPSAweDAwMDAwMDAwOworCisJLiA9IEFMSUdOKDQpOworCS50ZXh0ICAgICAgOgorCXsKKwkgIGNwdS9hcm05MjV0L3N0YXJ0Lm8JKC50ZXh0KQorCSAgKigudGV4dCkKKwl9CisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9kYXRhKSB9CisKKwkuID0gQUxJR04oNCk7CisJLmRhdGEgOiB7ICooLmRhdGEpIH0KKworCS4gPSBBTElHTig0KTsKKwkuZ290IDogeyAqKC5nb3QpIH0KKworCV9fdV9ib290X2NtZF9zdGFydCA9IC47CisJLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KKwlfX3VfYm9vdF9jbWRfZW5kID0gLjsKKworCS4gPSBBTElHTig0KTsKKwlfX2Jzc19zdGFydCA9IC47CisJLmJzcyA6IHsgKiguYnNzKSB9CisJX2VuZCA9IC47Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9uZXR0YTIvY29uZmlnLm1rIGIvYm9hcmQvbmV0dGEyL2NvbmZpZy5tawppbmRleCA4NDk3ZWJjLi5kZTE3OWMyIDEwMDY0NAotLS0gYS9ib2FyZC9uZXR0YTIvY29uZmlnLm1rCisrKyBiL2JvYXJkL25ldHRhMi9jb25maWcubWsKQEAgLTI2LDMgKzI2LDYgQEAKICMKIAogVEVYVF9CQVNFID0gMHg0MDAwMDAwMAorCisjIENvbXBpbGUgdGhlIGxlZ2FjeSBOQU5EIGNvZGUgKENGR19OQU5EX0xFR0FDWSBtdXN0IGJlIGRlZmluZWQpCitCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHRhMi9uZXR0YTIuYyBiL2JvYXJkL25ldHRhMi9uZXR0YTIuYwppbmRleCBjOWI0MDUxLi4zY2E3YmQzIDEwMDY0NAotLS0gYS9ib2FyZC9uZXR0YTIvbmV0dGEyLmMKKysrIGIvYm9hcmQvbmV0dGEyL25ldHRhMi5jCkBAIC01OTcsNyArNTk3LDcgQEAKIAogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCiAKLSNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgogCiBleHRlcm4gdWxvbmcgbmFuZF9wcm9iZSh1bG9uZyBwaHlzYWRyKTsKIGV4dGVybiBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbQ0ZHX01BWF9OQU5EX0RFVklDRV07CmRpZmYgLS1naXQgYS9ib2FyZC9uZXR2aWEvY29uZmlnLm1rIGIvYm9hcmQvbmV0dmlhL2NvbmZpZy5tawppbmRleCA5ZGRkYWFkLi41ODMxNzRhIDEwMDY0NAotLS0gYS9ib2FyZC9uZXR2aWEvY29uZmlnLm1rCisrKyBiL2JvYXJkL25ldHZpYS9jb25maWcubWsKQEAgLTI2LDMgKzI2LDYgQEAKICMKIAogVEVYVF9CQVNFID0gMHg0MDAwMDAwMAorCisjIENvbXBpbGUgdGhlIGxlZ2FjeSBOQU5EIGNvZGUgKENGR19OQU5EX0xFR0FDWSBtdXN0IGJlIGRlZmluZWQpCitCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHZpYS9uZXR2aWEuYyBiL2JvYXJkL25ldHZpYS9uZXR2aWEuYwppbmRleCBmYjdmNzcwLi4zZTZjNjE2IDEwMDY0NAotLS0gYS9ib2FyZC9uZXR2aWEvbmV0dmlhLmMKKysrIGIvYm9hcmQvbmV0dmlhL25ldHZpYS5jCkBAIC00MTgsNyArNDE4LDcgQEAKIAogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCiAKLSNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgogCiBleHRlcm4gdWxvbmcgbmFuZF9wcm9iZSh1bG9uZyBwaHlzYWRyKTsKIGV4dGVybiBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbQ0ZHX01BWF9OQU5EX0RFVklDRV07CmRpZmYgLS1naXQgYS9ib2FyZC9vbWFwMjQyMGg0L29tYXAyNDIwaDQuYyBiL2JvYXJkL29tYXAyNDIwaDQvb21hcDI0MjBoNC5jCmluZGV4IDZhZTFhNDkuLjIzODcxNzYgMTAwNjQ0Ci0tLSBhL2JvYXJkL29tYXAyNDIwaDQvb21hcDI0MjBoNC5jCisrKyBiL2JvYXJkL29tYXAyNDIwaDQvb21hcDI0MjBoNC5jCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8aTJjLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KICNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQotI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL25hbmRfbGVnYWN5Lmg+CiBleHRlcm4gc3RydWN0IG5hbmRfY2hpcCBuYW5kX2Rldl9kZXNjW0NGR19NQVhfTkFORF9ERVZJQ0VdOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2JvYXJkL3BtNTIwL2ZsYXNoLmMgYi9ib2FyZC9wbTUyMC9mbGFzaC5jCmluZGV4IGNjZDBiZDEuLjM4ZjU3OWIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BtNTIwL2ZsYXNoLmMKKysrIGIvYm9hcmQvcG01MjAvZmxhc2guYwpAQCAtMjQyLDEwICsyNDIsMTEgQEAKIAogCWNhc2UgKEZQVykgSU5URUxfSURfMjhGMjU2SjNBOgogCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF8yOEYyNTZKM0E7Ci0JCWluZm8tPnNlY3Rvcl9jb3VudCA9IDI1NjsKLQkJaW5mby0+c2l6ZSA9IDB4MDQwMDAwMDA7Ci0JCWluZm8tPnN0YXJ0WzBdID0gQ0ZHX0ZMQVNIX0JBU0U7Ci0JCWJyZWFrOwkJCQkvKiA9PiA2NCBNQiAgICAgKi8KKwkJLyogSW4gVS1Cb290IHdlIHN1cHBvcnQgb25seSAzMiBNQiAobm8gYmFuay1zd2l0Y2hpbmcpICovCisJCWluZm8tPnNlY3Rvcl9jb3VudCA9IDI1NiAvIDI7CisJCWluZm8tPnNpemUgPSAgMHgwNDAwMDAwMCAvIDI7CisJCWluZm8tPnN0YXJ0WzBdID0gQ0ZHX0ZMQVNIX0JBU0UgKyAweDAyMDAwMDAwOworCQlicmVhazsJCQkJLyogPT4gMzIgTUIgICAgICovCiAKIAljYXNlIChGUFcpIElOVEVMX0lEXzI4RjEyOEozQToKIAkJaW5mby0+Zmxhc2hfaWQgKz0gRkxBU0hfMjhGMTI4SjNBOwpkaWZmIC0tZ2l0IGEvYm9hcmQvc2hhbm5vbi9mbGFzaC5jIGIvYm9hcmQvc2hhbm5vbi9mbGFzaC5jCmluZGV4IDEzYzAxZDguLjQ3NWI3NmIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NoYW5ub24vZmxhc2guYworKysgYi9ib2FyZC9zaGFubm9uL2ZsYXNoLmMKQEAgLTMxNSw3ICszMTUsNyBAQAogICogQ29weSBtZW1vcnkgdG8gZmxhc2gKICAqLwogCi12b2xhdGlsZSBzdGF0aWMgaW50IHdyaXRlX3dvcmQgKGZsYXNoX2luZm9fdCAqaW5mbywgdWxvbmcgZGVzdCwgdWxvbmcgZGF0YSkKK3N0YXRpYyBpbnQgd3JpdGVfd29yZCAoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCB1bG9uZyBkYXRhKQogewogICAgIHZ1X2xvbmcgKmFkZHIgPSAodnVfbG9uZyAqKWRlc3Q7CiAgICAgdWxvbmcgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvYm9hcmQvc2l4bmV0L2NvbmZpZy5tayBiL2JvYXJkL3NpeG5ldC9jb25maWcubWsKaW5kZXggMGNkOGY0NC4uOGU3M2QyZiAxMDA2NDQKLS0tIGEvYm9hcmQvc2l4bmV0L2NvbmZpZy5taworKysgYi9ib2FyZC9zaXhuZXQvY29uZmlnLm1rCkBAIC0yNiwzICsyNiw2IEBACiAjCiAKIFRFWFRfQkFTRSA9IDB4RjgwMDAwMDAKKworIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQorQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCmRpZmYgLS1naXQgYS9ib2FyZC9zaXhuZXQvc2l4bmV0LmMgYi9ib2FyZC9zaXhuZXQvc2l4bmV0LmMKaW5kZXggODY3NTg5Zi4uYTI1ZGZmZCAxMDA2NDQKLS0tIGEvYm9hcmQvc2l4bmV0L3NpeG5ldC5jCisrKyBiL2JvYXJkL3NpeG5ldC9zaXhuZXQuYwpAQCAtMzQsNyArMzQsNyBAQAogI2VuZGlmCiAKICNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQotI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL25hbmRfbGVnYWN5Lmg+CiBleHRlcm4gc3RydWN0IG5hbmRfY2hpcCBuYW5kX2Rldl9kZXNjW0NGR19NQVhfTkFORF9ERVZJQ0VdOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2JvYXJkL3NtZGsyNDAwL2ZsYXNoLmMgYi9ib2FyZC9zbWRrMjQwMC9mbGFzaC5jCmluZGV4IGExMDhhZjcuLmZkOTk5MmQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NtZGsyNDAwL2ZsYXNoLmMKKysrIGIvYm9hcmQvc21kazI0MDAvZmxhc2guYwpAQCAtMzUzLDggKzM1Myw3IEBACiAgKiBDb3B5IG1lbW9yeSB0byBmbGFzaAogICovCiAKLXZvbGF0aWxlIHN0YXRpYyBpbnQgd3JpdGVfd29yZCAoZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgZGVzdCwKLQkJCQkJCQkJdWxvbmcgZGF0YSkKK3N0YXRpYyBpbnQgd3JpdGVfd29yZCAoZmxhc2hfaW5mb190ICogaW5mbywgdWxvbmcgZGVzdCwgdWxvbmcgZGF0YSkKIHsKIAl2dV9sb25nICphZGRyID0gKHZ1X2xvbmcgKikgZGVzdDsKIAl1bG9uZyByZXN1bHQ7CmRpZmYgLS1naXQgYS9ib2FyZC9zdGFtcC9NYWtlZmlsZSBiL2JvYXJkL3N0YW1wL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiOTdlMWIKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9zdGFtcC9NYWtlZmlsZQpAQCAtMCwwICsxLDY4IEBACisjCisjIFUtYm9vdCAtIE1ha2VmaWxlCisjCisjIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworIworIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCisjCisjIChDKSBDb3B5cmlnaHQgMjAwMQorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCitpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKKworTElCCT0gbGliJChCT0FSRCkuYQorCitPQkpTCT0gJChCT0FSRCkubyBzdGFtcC5vCitTT0JKUwk9CisKKyQoTElCKToJLmRlcGVuZCAkKE9CSlMpCisJJChBUikgY3J2ICRAICQoT0JKUykKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisuZGVwZW5kOglNYWtlZmlsZSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpCisJCSQoQ0MpIC1NICQoQ0ZMQUdTKSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKKworc2luY2x1ZGUgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC9zdGFtcC9jb25maWcubWsgYi9ib2FyZC9zdGFtcC9jb25maWcubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQwMDczMAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3N0YW1wL2NvbmZpZy5tawpAQCAtMCwwICsxLDI1IEBACisjCisjIChDKSBDb3B5cmlnaHQgMjAwMQorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCitURVhUX0JBU0UgPSAweDA3RkMwMDAwCitQTEFURk9STV9DUFBGTEFHUyArPSAtSSQoVE9QRElSKQpkaWZmIC0tZ2l0IGEvYm9hcmQvc3RhbXAvc3RhbXAuYyBiL2JvYXJkL3N0YW1wL3N0YW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZlMDEzNAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3N0YW1wL3N0YW1wLmMKQEAgLTAsMCArMSwyNzUgQEAKKy8qCisgKiBVLWJvb3QgLSBzdGFtcC5jIFNUQU1QIGJvYXJkIHNwZWNpZmljIHJvdXRpbmVzCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9tZW1faW5pdC5oPgorI2luY2x1ZGUgInN0YW1wLmgiCisKKyNkZWZpbmUgU1RBVFVTX0xFRF9PRkYgMAorI2RlZmluZSBTVEFUVVNfTEVEX09OICAxCisKKyNpZmRlZiBDT05GSUdfU0hPV19CT09UX1BST0dSRVNTCisjIGRlZmluZSBTSE9XX0JPT1RfUFJPR1JFU1MoYXJnKQlzaG93X2Jvb3RfcHJvZ3Jlc3MoYXJnKQorI2Vsc2UKKyMgZGVmaW5lIFNIT1dfQk9PVF9QUk9HUkVTUyhhcmcpCisjZW5kaWYKKworaW50IGNoZWNrYm9hcmQgKHZvaWQpCit7CisJcHJpbnRmICgiQ1BVOiAgIEFEU1AgQkY1MzMgUmV2LjogMC4lZFxuIiwgKnBDSElQSUQgPj4gMjgpOworCXByaW50ZiAoIkJvYXJkOiBBREkgQkY1MzMgU3RhbXAgYm9hcmRcbiIpOworCXByaW50ZiAoIiAgICAgICBTdXBwb3J0OiBodHRwOi8vYmxhY2tmaW4udWNsaW51eC5vcmcvXG4iKTsKKwlwcmludGYgKCIgICAgICAgUmljaGFyZCBLbGluZ2xlciA8cmljaGFyZEB1Y2xpbnV4Lm5ldD5cbiIpOworCXJldHVybiAwOworfQorCitsb25nIGludCBpbml0ZHJhbSAoaW50IGJvYXJkX3R5cGUpCit7CisJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisjaWZkZWYgREVCVUcKKwlwcmludGYgKCJTRFJBTSBhdHRyaWJ1dGVzOlxuIik7CisJcHJpbnRmICgiICB0UkNEOiVkIEN5Y2xlczsgdFJQOiVkIEN5Y2xlczsgdFJBUzolZCBDeWNsZXM7IHRXUjolZCBDeWNsZXM7ICIKKwkJIkNBUyBMYXRlbmN5OiVkIGN5Y2xlc1xuIiwKKwkJKFNEUkFNX3RSQ0QgPj4gMTUpLAorCQkoU0RSQU1fdFJQID4+IDExKSwKKwkJKFNEUkFNX3RSQVMgPj4gNiksCisJCShTRFJBTV90V1IgPj4gMTkpLAorCQkoU0RSQU1fQ0wgPj4gMikpOworCXByaW50ZiAoIlNEUkFNIEJlZ2luOiAweCV4XG4iLCBDRkdfU0RSQU1fQkFTRSk7CisJcHJpbnRmICgiQmFuayBzaXplID0gJWQgTUJcbiIsIDEyOCk7CisjZW5kaWYKKwlnZC0+YmQtPmJpX21lbXN0YXJ0ID0gQ0ZHX1NEUkFNX0JBU0U7CisJZ2QtPmJkLT5iaV9tZW1zaXplID0gQ0ZHX01BWF9SQU1fU0laRTsKKwlyZXR1cm4gKGdkLT5iZC0+YmlfbWVtc2l6ZSk7Cit9CisKK3ZvaWQgc3dhcF90byAoaW50IGRldmljZV9pZCkKK3sKKworCWlmIChkZXZpY2VfaWQgPT0gRVRIRVJORVQpIHsKKwkJKnBGSU9fRElSID0gUEYwOworCQlhc20gKCJzc3luYzsiKTsKKwkJKnBGSU9fRkxBR19TID0gUEYwOworCQlhc20gKCJzc3luYzsiKTsKKwl9IGVsc2UgaWYgKGRldmljZV9pZCA9PSBGTEFTSCkgeworCQkqcEZJT19ESVIgPSAoUEY0IHwgUEYzIHwgUEYyIHwgUEYxIHwgUEYwKTsKKwkJKnBGSU9fRkxBR19TID0gKFBGNCB8IFBGMyB8IFBGMik7CisJCSpwRklPX01BU0tBX0QgPSAoUEY4IHwgUEY2IHwgUEY1KTsKKwkJKnBGSU9fTUFTS0JfRCA9IChQRjcpOworCQkqcEZJT19QT0xBUiA9IChQRjggfCBQRjYgfCBQRjUpOworCQkqcEZJT19FREdFID0gKFBGOCB8IFBGNyB8IFBGNiB8IFBGNSk7CisJCSpwRklPX0lORU4gPSAoUEY4IHwgUEY3IHwgUEY2IHwgUEY1KTsKKwkJKnBGSU9fRkxBR19EID0gKFBGNCB8IFBGMyB8IFBGMik7CisJCWFzbSAoInNzeW5jOyIpOworCX0gZWxzZSB7CisJCXByaW50ZiAoIlVua25vd24gYmFuayB0byBzd2l0Y2hcbiIpOworCX0KKworCXJldHVybjsKK30KKworI2lmIGRlZmluZWQoQ09ORklHX01JU0NfSU5JVF9SKQorLyogbWlzY2VsbGFuZW91cyBwbGF0Zm9ybSBkZXBlbmRlbnQgaW5pdGlhbGlzYXRpb25zICovCitpbnQgbWlzY19pbml0X3IgKHZvaWQpCit7CisJaW50IGk7CisJaW50IGNmX3N0YXQgPSAwOworCisJLyogQ2hlY2sgd2hldGhlciBDRiBjYXJkIGlzIGluc2VydGVkICovCisJKnBGSU9fRURHRSA9IEZJT19FREdFX0NGX0JJVFM7CisJKnBGSU9fUE9MQVIgPSBGSU9fUE9MQVJfQ0ZfQklUUzsKKwlmb3IgKGkgPSAwOyBpIDwgMHgzMDA7IGkrKykKKwkJYXNtICgibm9wOyIpOworCisJaWYgKCgqcEZJT19GTEFHX1MpICYgQ0ZfU1RBVF9CSVRTKSB7CisJCWNmX3N0YXQgPSAwOworCX0gZWxzZSB7CisJCWNmX3N0YXQgPSAxOworCX0KKworCSpwRklPX0VER0UgPSBGSU9fRURHRV9CSVRTOworCSpwRklPX1BPTEFSID0gRklPX1BPTEFSX0JJVFM7CisKKworCWlmIChjZl9zdGF0KSB7CisJCXByaW50ZiAoIkJvb3RpbmcgZnJvbSBDT01QQUNUIGZsYXNoXG4iKTsKKworCQkvKiBTZXQgY3ljbGUgdGltZSBmb3IgQ0YgKi8KKwkJKih2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopIGFtYmN0bDEgPSBDRl9BTUJDVEwxVkFMOworCisJCWZvciAoaSA9IDA7IGkgPCAweDEwMDA7IGkrKykKKwkJCWFzbSAoIm5vcDsiKTsKKwkJZm9yIChpID0gMDsgaSA8IDB4MTAwMDsgaSsrKQorCQkJYXNtICgibm9wOyIpOworCQlmb3IgKGkgPSAwOyBpIDwgMHgxMDAwOyBpKyspCisJCQlhc20gKCJub3A7Iik7CisKKwkJc2VyaWFsX3NldGJyZyAoKTsKKwkJaWRlX2luaXQgKCk7CisKKwkJc2V0ZW52ICgiYm9vdGFyZ3MiLCAiIik7CisJCXNldGVudiAoImJvb3RjbWQiLAorCQkJImZhdGxvYWQgaWRlIDA6MSAweDEwMDAwMDAgdUltYWdlLXN0YW1wO2Jvb3RtIDB4MTAwMDAwMDtib290bSAweDIwMTAwMDAwIik7CisJfSBlbHNlIHsKKwkJcHJpbnRmICgiQm9vdGluZyBmcm9tIEZMQVNIXG4iKTsKKwl9CisKKwlyZXR1cm4gMTsKK30KKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NUQU1QX0NGCisKK3ZvaWQgY2Zfb3V0YiAodW5zaWduZWQgY2hhciB2YWwsIHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKmFkZHIpCit7CisJLyoKKwkgKiBTZXQgUEYxIFBGMCByZXNwZWN0aXZlbHkgdG8gMCAxIHRvIGRpdmVydCBhZGRyZXNzCisJICogdG8gdGhlIGV4cGFuc2lvbiBtZW1vcnkgYmFua3MKKwkgKi8KKwkqcEZJT19GTEFHX1MgPSBDRl9QRjA7CisJKnBGSU9fRkxBR19DID0gQ0ZfUEYxOworCWFzbSAoInNzeW5jOyIpOworCisJKihhZGRyKSA9IHZhbDsKKwlhc20gKCJzc3luYzsiKTsKKworCS8qIFNldGJhY2sgUEYxIFBGMCB0byAwIDAgdG8gYWRkcmVzcyBleHRlcm5hbAorCSAqIG1lbW9yeSBiYW5rcyAgKi8KKwkqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopIHBGSU9fRkxBR19DID0gQ0ZfUEYxX1BGMDsKKwlhc20gKCJzc3luYzsiKTsKK30KKwordW5zaWduZWQgY2hhciBjZl9pbmIgKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKmFkZHIpCit7CisJdm9sYXRpbGUgdW5zaWduZWQgY2hhciBjOworCisJKnBGSU9fRkxBR19TID0gQ0ZfUEYwOworCSpwRklPX0ZMQUdfQyA9IENGX1BGMTsKKwlhc20gKCJzc3luYzsiKTsKKworCWMgPSAqKGFkZHIpOworCWFzbSAoInNzeW5jOyIpOworCisJKnBGSU9fRkxBR19DID0gQ0ZfUEYxX1BGMDsKKwlhc20gKCJzc3luYzsiKTsKKworCXJldHVybiBjOworfQorCit2b2lkIGNmX2luc3cgKHVuc2lnbmVkIHNob3J0ICpzZWN0X2J1ZiwgdW5zaWduZWQgc2hvcnQgKmFkZHIsIGludCB3b3JkcykKK3sKKwlpbnQgaTsKKworCSpwRklPX0ZMQUdfUyA9IENGX1BGMDsKKwkqcEZJT19GTEFHX0MgPSBDRl9QRjE7CisJYXNtICgic3N5bmM7Iik7CisKKwlmb3IgKGkgPSAwOyBpIDwgd29yZHM7IGkrKykgeworCQkqKHNlY3RfYnVmICsgaSkgPSAqKGFkZHIpOworCQlhc20gKCJzc3luYzsiKTsKKwl9CisKKwkqcEZJT19GTEFHX0MgPSBDRl9QRjFfUEYwOworCWFzbSAoInNzeW5jOyIpOworfQorCit2b2lkIGNmX291dHN3ICh1bnNpZ25lZCBzaG9ydCAqYWRkciwgdW5zaWduZWQgc2hvcnQgKnNlY3RfYnVmLCBpbnQgd29yZHMpCit7CisJaW50IGk7CisKKwkqcEZJT19GTEFHX1MgPSBDRl9QRjA7CisJKnBGSU9fRkxBR19DID0gQ0ZfUEYxOworCWFzbSAoInNzeW5jOyIpOworCisJZm9yIChpID0gMDsgaSA8IHdvcmRzOyBpKyspIHsKKwkJKihhZGRyKSA9ICooc2VjdF9idWYgKyBpKTsKKwkJYXNtICgic3N5bmM7Iik7CisJfQorCisJKnBGSU9fRkxBR19DID0gQ0ZfUEYxX1BGMDsKKwlhc20gKCJzc3luYzsiKTsKK30KKyNlbmRpZgorCit2b2lkIHN0YW1wX2xlZF9zZXQgKGludCBMRUQxLCBpbnQgTEVEMiwgaW50IExFRDMpCit7CisJKnBGSU9fSU5FTiAmPSB+KFBGMiB8IFBGMyB8IFBGNCk7CisJKnBGSU9fRElSIHw9IChQRjIgfCBQRjMgfCBQRjQpOworCisJaWYgKExFRDEgPT0gU1RBVFVTX0xFRF9PRkYpCisJCSpwRklPX0ZMQUdfUyA9IFBGMjsKKwllbHNlCisJCSpwRklPX0ZMQUdfQyA9IFBGMjsKKwlpZiAoTEVEMiA9PSBTVEFUVVNfTEVEX09GRikKKwkJKnBGSU9fRkxBR19TID0gUEYzOworCWVsc2UKKwkJKnBGSU9fRkxBR19DID0gUEYzOworCWlmIChMRUQzID09IFNUQVRVU19MRURfT0ZGKQorCQkqcEZJT19GTEFHX1MgPSBQRjQ7CisJZWxzZQorCQkqcEZJT19GTEFHX0MgPSBQRjQ7CisJYXNtICgic3N5bmM7Iik7Cit9CisKK3ZvaWQgc2hvd19ib290X3Byb2dyZXNzIChpbnQgc3RhdHVzKQoreworCXN3aXRjaCAoc3RhdHVzKSB7CisJY2FzZSAxOgorCQlzdGFtcF9sZWRfc2V0IChTVEFUVVNfTEVEX09GRiwgU1RBVFVTX0xFRF9PRkYsIFNUQVRVU19MRURfT04pOworCQlicmVhazsKKwljYXNlIDI6CisJCXN0YW1wX2xlZF9zZXQgKFNUQVRVU19MRURfT0ZGLCBTVEFUVVNfTEVEX09OLCBTVEFUVVNfTEVEX09GRik7CisJCWJyZWFrOworCWNhc2UgMzoKKwkJc3RhbXBfbGVkX3NldCAoU1RBVFVTX0xFRF9PRkYsIFNUQVRVU19MRURfT04sIFNUQVRVU19MRURfT04pOworCQlicmVhazsKKwljYXNlIDQ6CisJCXN0YW1wX2xlZF9zZXQgKFNUQVRVU19MRURfT04sIFNUQVRVU19MRURfT0ZGLCBTVEFUVVNfTEVEX09GRik7CisJCWJyZWFrOworCWNhc2UgNToKKwljYXNlIDY6CisJCXN0YW1wX2xlZF9zZXQgKFNUQVRVU19MRURfT04sIFNUQVRVU19MRURfT0ZGLCBTVEFUVVNfTEVEX09OKTsKKwkJYnJlYWs7CisJY2FzZSA3OgorCWNhc2UgODoKKwkJc3RhbXBfbGVkX3NldCAoU1RBVFVTX0xFRF9PTiwgU1RBVFVTX0xFRF9PTiwgU1RBVFVTX0xFRF9PRkYpOworCQlicmVhazsKKwljYXNlIDk6CisJY2FzZSAxMDoKKwljYXNlIDExOgorCWNhc2UgMTI6CisJY2FzZSAxMzoKKwljYXNlIDE0OgorCWNhc2UgMTU6CisJCXN0YW1wX2xlZF9zZXQgKFNUQVRVU19MRURfT0ZGLCBTVEFUVVNfTEVEX09GRiwKKwkJCSAgICAgICBTVEFUVVNfTEVEX09GRik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXN0YW1wX2xlZF9zZXQgKFNUQVRVU19MRURfT04sIFNUQVRVU19MRURfT04sIFNUQVRVU19MRURfT04pOworCQlicmVhazsKKwl9Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9zdGFtcC9zdGFtcC5oIGIvYm9hcmQvc3RhbXAvc3RhbXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmMzM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvc3RhbXAvc3RhbXAuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogVS1ib290IC0gc3RhbXAuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19TVEFNUF9IX18KKyNkZWZpbmUgX19TVEFNUF9IX18KKworZXh0ZXJuIHZvaWQgaW5pdF9GbGFncyh2b2lkKTsKKworZXh0ZXJuIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFtYmN0bDA7CitleHRlcm4gdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYW1iY3RsMTsKK2V4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphbWdjdGw7CisKK2V4dGVybiB1bnNpZ25lZCBsb25nIHBsbF9kaXZfZmFjdDsKK2V4dGVybiB2b2lkIHNlcmlhbF9zZXRicmcodm9pZCk7CitleHRlcm4gdm9pZCBwbGxfc2V0KGludCB2Y28sIGludCBjcnlzdGFsX2ZycSwgaW50IHBsbF9kaXYpOworCisvKiBEZWZpbml0aW9ucyB1c2VkIGluICBDb21wYWN0IEZsYXNoIEJvb3Qgc3VwcG9ydCAqLworI2RlZmluZSBGSU9fRURHRV9DRl9CSVRTIAkweDAwMDAKKyNkZWZpbmUgRklPX1BPTEFSX0NGX0JJVFMgCTB4MDAwMAorI2RlZmluZQlGSU9fRURHRV9CSVRTICAJCTB4MUUwCisjZGVmaW5lCUZJT19QT0xBUl9CSVRTICAJMHgxNjAKKworLyogQ29tcGFjdCBmbGFzaCBzdGF0dXMgYml0cyBpbiBzdGF0dXMgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0ZfU1RBVF9CSVRTIAkJMHgwMDAwMDA2MAorCisvKiBDRiBGbGFncyB1c2VkIHRvIHN3aXRjaCBiZXR3ZWVuIGV4cGFuc2lvbiBhbmQgZXh0ZXJuYWwKKyAqIG1lbW9yeSBiYW5rcworICovCisjZGVmaW5lIENGX1BGMAkJCTB4MDAwMQorI2RlZmluZSBDRl9QRjEJCQkweDAwMDIKKyNkZWZpbmUgQ0ZfUEYxX1BGMAkJMHgwMDAzCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYm9hcmQvc3RhbXAvdS1ib290LmxkcyBiL2JvYXJkL3N0YW1wL3UtYm9vdC5sZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWEyMmU1MAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3N0YW1wL3UtYm9vdC5sZHMKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBVLWJvb3QgLSB1LWJvb3QubGRzCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworT1VUUFVUX0FSQ0goYmZpbikKK1NFQVJDSF9ESVIoL2xpYik7IFNFQVJDSF9ESVIoL3Vzci9saWIpOyBTRUFSQ0hfRElSKC91c3IvbG9jYWwvbGliKTsKKy8qIERvIHdlIG5lZWQgYW55IG9mIHRoZXNlIGZvciBlbGY/CisgICBfX0RZTkFNSUMgPSAwOyAgICAqLworU0VDVElPTlMKK3sKKyAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCisgIC4gPSArIFNJWkVPRl9IRUFERVJTOworICAuaW50ZXJwIDogeyAqKC5pbnRlcnApIH0KKyAgLmhhc2ggICAgICAgICAgOiB7ICooLmhhc2gpCQl9CisgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CisgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CisgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KKyAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CisgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KKyAgLnJlbGEuY3RvcnMgICAgOiB7ICooLnJlbGEuY3RvcnMpCX0KKyAgLnJlbC5kdG9ycyAgICAgOiB7ICooLnJlbC5kdG9ycykJfQorICAucmVsYS5kdG9ycyAgICA6IHsgKigucmVsYS5kdG9ycykJfQorICAucmVsLmJzcyAgICAgICA6IHsgKigucmVsLmJzcykJfQorICAucmVsYS5ic3MgICAgICA6IHsgKigucmVsYS5ic3MpCX0KKyAgLnJlbC5wbHQgICAgICAgOiB7ICooLnJlbC5wbHQpCX0KKyAgLnJlbGEucGx0ICAgICAgOiB7ICooLnJlbGEucGx0KQl9CisgIC5pbml0ICAgICAgICAgIDogeyAqKC5pbml0KQkJfQorICAucGx0IDogeyAqKC5wbHQpIH0KKyAgLnRleHQgICAgICA6CisgIHsKKyAgICAvKiBXQVJOSU5HIC0gdGhlIGZvbGxvd2luZyBpcyBoYW5kLW9wdGltaXplZCB0byBmaXQgd2l0aGluCSovCisgICAgLyogdGhlIHNlY3RvciBiZWZvcmUgdGhlIGVudmlyb25tZW50IHNlY3Rvci4gSWYgaXQgdGhyb3dzIAkqLworICAgIC8qIGFuIGVycm9yIGR1cmluZyBjb21waWxhdGlvbiByZW1vdmUgYW4gb2JqZWN0IGhlcmUgdG8gZ2V0CSovCisgICAgLyogaXQgbGlua2VkIGFmdGVyIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rvci4JCSovCisKKyAgICBjcHUvYmY1MzMvc3RhcnQubwkJKC50ZXh0KQorICAgIGNwdS9iZjUzMy9zdGFydDEubwkJKC50ZXh0KQorICAgIGNwdS9iZjUzMy90cmFwcy5vCQkoLnRleHQpCisgICAgY3B1L2JmNTMzL2ludGVycnVwdC5vCSgudGV4dCkKKyAgICBjcHUvYmY1MzMvc2VyaWFsLm8JCSgudGV4dCkKKyAgICBjb21tb24vZGxtYWxsb2MubwkJKC50ZXh0KQorICAgIGxpYl9nZW5lcmljL3ZzcHJpbnRmLm8JKC50ZXh0KQorICAgIGxpYl9nZW5lcmljL2NyYzMyLm8JCSgudGV4dCkKKyAgICBsaWJfZ2VuZXJpYy96bGliLm8JCSgudGV4dCkKKworICAgIC4gPSBERUZJTkVEKGVudl9vZmZzZXQpID8gZW52X29mZnNldCA6IC47CisgICAgY29tbW9uL2Vudmlyb25tZW50Lm8JKC50ZXh0KQorCisgICAgKigudGV4dCkKKyAgICAqKC5maXh1cCkKKyAgICAqKC5nb3QxKQorICB9CisgIF9ldGV4dCA9IC47CisgIFBST1ZJREUgKGV0ZXh0ID0gLik7CisgIC5yb2RhdGEgICAgOgorICB7CisgICAgKigucm9kYXRhKQorICAgICooLnJvZGF0YTEpCisgICAgKigucm9kYXRhLnN0cjEuNCkKKyAgfQorICAuZmluaSAgICAgIDogeyAqKC5maW5pKSAgICB9ID0wCisgIC5jdG9ycyAgICAgOiB7ICooLmN0b3JzKSAgIH0KKyAgLmR0b3JzICAgICA6IHsgKiguZHRvcnMpICAgfQorCisgIC8qIFJlYWQtd3JpdGUgc2VjdGlvbiwgbWVyZ2VkIGludG8gZGF0YSBzZWdtZW50OiAqLworICAuID0gKC4gKyAweDAwRkYpICYgMHhGRkZGRkYwMDsKKyAgX2Vyb3RleHQgPSAuOworICBQUk9WSURFIChlcm90ZXh0ID0gLik7CisgIC5yZWxvYyAgIDoKKyAgeworICAgICooLmdvdCkKKyAgICBfR09UMl9UQUJMRV8gPSAuOworICAgICooLmdvdDIpCisgICAgX0ZJWFVQX1RBQkxFXyA9IC47CisgICAgKiguZml4dXApCisgIH0KKyAgX19nb3QyX2VudHJpZXMgPSAoX0ZJWFVQX1RBQkxFXyAtIF9HT1QyX1RBQkxFXykgPj4yOworICBfX2ZpeHVwX2VudHJpZXMgPSAoLiAtIF9GSVhVUF9UQUJMRV8pPj4yOworCisgIC5kYXRhICAgIDoKKyAgeworICAgICooLmRhdGEpCisgICAgKiguZGF0YTEpCisgICAgKiguc2RhdGEpCisgICAgKiguc2RhdGEyKQorICAgICooLmR5bmFtaWMpCisgICAgQ09OU1RSVUNUT1JTCisgIH0KKyAgX2VkYXRhICA9ICAuOworICBQUk9WSURFIChlZGF0YSA9IC4pOworCisgIF9fdV9ib290X2NtZF9zdGFydCA9IC47CisgIC51X2Jvb3RfY21kIDogeyAqKC51X2Jvb3RfY21kKSB9CisgIF9fdV9ib290X2NtZF9lbmQgPSAuOworCisKKyAgX19zdGFydF9fX2V4X3RhYmxlID0gLjsKKyAgX19leF90YWJsZSA6IHsgKihfX2V4X3RhYmxlKSB9CisgIF9fc3RvcF9fX2V4X3RhYmxlID0gLjsKKworICAuID0gQUxJR04oMjU2KTsKKyAgX19pbml0X2JlZ2luID0gLjsKKyAgLnRleHQuaW5pdCA6IHsgKigudGV4dC5pbml0KSB9CisgIC5kYXRhLmluaXQgOiB7ICooLmRhdGEuaW5pdCkgfQorICAuID0gQUxJR04oMjU2KTsKKyAgX19pbml0X2VuZCA9IC47CisKKyAgX19ic3Nfc3RhcnQgPSAuOworICAuYnNzICAgICAgIDoKKyAgeworICAgKiguc2JzcykgKiguc2NvbW1vbikKKyAgICooLmR5bmJzcykKKyAgICooLmJzcykKKyAgICooQ09NTU9OKQorICB9CisgIF9lbmQgPSAuIDsKKyAgUFJPVklERSAoZW5kID0gLik7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9zdHh4dGMvc3R4eHRjLmMgYi9ib2FyZC9zdHh4dGMvc3R4eHRjLmMKaW5kZXggYWEzZDEyOS4uN2NhZjA2YSAxMDA2NDQKLS0tIGEvYm9hcmQvc3R4eHRjL3N0eHh0Yy5jCisrKyBiL2JvYXJkL3N0eHh0Yy9zdHh4dGMuYwpAQCAtNTc2LDcgKzU3Niw3IEBACiAKICNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQogCi0jaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZF9sZWdhY3kuaD4KIAogZXh0ZXJuIHVsb25nIG5hbmRfcHJvYmUodWxvbmcgcGh5c2Fkcik7CiBleHRlcm4gc3RydWN0IG5hbmRfY2hpcCBuYW5kX2Rldl9kZXNjW0NGR19NQVhfTkFORF9ERVZJQ0VdOwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHFtODV4eC90cW04NXh4LmMgYi9ib2FyZC90cW04NXh4L3RxbTg1eHguYwppbmRleCAxM2VhNmY0Li5jMDNiNjBkIDEwMDY0NAotLS0gYS9ib2FyZC90cW04NXh4L3RxbTg1eHguYworKysgYi9ib2FyZC90cW04NXh4L3RxbTg1eHguYwpAQCAtMjk2LDcgKzI5Niw3IEBACiAKIAkJLyogTW9uaXRvciBwcm90ZWN0aW9uIE9OIGJ5IGRlZmF1bHQgKi8KIAkJZmxhc2hfcHJvdGVjdCAoRkxBR19QUk9URUNUX1NFVCwKLQkJCSAgICAgICBDRkdfTU9OSVRPUl9CQVNFLCAweGZmZmZmZmZmLAorCQkJICAgICAgIENGR19NT05JVE9SX0JBU0UsIENGR19NT05JVE9SX0JBU0UgKyBtb25pdG9yX2ZsYXNoX2xlbiAtIDEsCiAJCQkgICAgICAgJmZsYXNoX2luZm9bQ0ZHX01BWF9GTEFTSF9CQU5LUyAtIDFdKTsKIAogCQkvKiBFbnZpcm9ubWVudCBwcm90ZWN0aW9uIE9OIGJ5IGRlZmF1bHQgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3RyYWIvTWFrZWZpbGUgYi9ib2FyZC90cmFiL01ha2VmaWxlCmluZGV4IGNlZDliYzUuLjE1OTQwNGIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvTWFrZWZpbGUKKysrIGIvYm9hcmQvdHJhYi9NYWtlZmlsZQpAQCAtNDcsNyArNDcsNyBAQAogCSQoT0JKQ09QWSkgLU8gc3JlYyAkKDw6Lm89KSAkQAogCiB0cmFiX2ZrdC5iaW46CXRyYWJfZmt0LnNyZWMKLQkkKE9CSkNPUFkpIC1PIGJpbmFyeSAkPCAkQCAyPi9kZXYvbnVsbAorCSQoT0JKQ09QWSkgLUkgc3JlYyAtTyBiaW5hcnkgJDwgJEAKIAogY2xlYW46CiAJcm0gLWYgJChTT0JKUykgJChPQkpTKQpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJhYi9mbGFzaC5jIGIvYm9hcmQvdHJhYi9mbGFzaC5jCmluZGV4IGI0NDM1ZTMuLjhjZGQ4MjQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvZmxhc2guYworKysgYi9ib2FyZC90cmFiL2ZsYXNoLmMKQEAgLTMwOCw4ICszMDgsNyBAQAogICogQ29weSBtZW1vcnkgdG8gZmxhc2gKICAqLwogCi12b2xhdGlsZSBzdGF0aWMgaW50IHdyaXRlX3dvcmQgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGRlc3QsCi0JCQkJCQkJCXVsb25nIGRhdGEpCitzdGF0aWMgaW50IHdyaXRlX3dvcmQgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGRlc3QsIHVsb25nIGRhdGEpCiB7CiAJdnVfbG9uZyAqYWRkciA9ICh2dV9sb25nICopIGRlc3Q7CiAJdWxvbmcgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvYm9hcmQveGlsaW54L3hpbGlueF9lbmV0L2VtYWNfYWRhcHRlci5jIGIvYm9hcmQveGlsaW54L3hpbGlueF9lbmV0L2VtYWNfYWRhcHRlci5jCmluZGV4IDEwNzYzNDUuLjVjNDkyZWIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hpbGlueC94aWxpbnhfZW5ldC9lbWFjX2FkYXB0ZXIuYworKysgYi9ib2FyZC94aWxpbngveGlsaW54X2VuZXQvZW1hY19hZGFwdGVyLmMKQEAgLTE0OCw3ICsxNDgsNyBAQAogCVJlY3ZGcmFtZUxlbmd0aCA9IFBLVFNJWkU7CiAJUmVzdWx0ID0gWEVtYWNfUG9sbFJlY3YoJkVtYWMsICh1OCAqKSBldGhlcnJ4YnVmZiwgJlJlY3ZGcmFtZUxlbmd0aCk7CiAJaWYgKFJlc3VsdCA9PSBYU1RfU1VDQ0VTUykgewotCQlOZXRSZWNlaXZlKCh1Y2hhcilldGhlcnJ4YnVmZiwgUmVjdkZyYW1lTGVuZ3RoKTsKKwkJTmV0UmVjZWl2ZSgodWNoYXIgKilldGhlcnJ4YnVmZiwgUmVjdkZyYW1lTGVuZ3RoKTsKIAkJcmV0dXJuICgxKTsKIAl9IGVsc2UgewogCQlyZXR1cm4gKDApOwpkaWZmIC0tZ2l0IGEvYm9hcmQvenBjMTkwMC9jb25maWcubWsgYi9ib2FyZC96cGMxOTAwL2NvbmZpZy5tawppbmRleCAxMDcyZGM3Li4zZTUzYjJiIDEwMDY0NAotLS0gYS9ib2FyZC96cGMxOTAwL2NvbmZpZy5taworKysgYi9ib2FyZC96cGMxOTAwL2NvbmZpZy5tawpAQCAtMjcsNCArMjcsNCBAQAogIyBaUEMuMTkwMCBib2FyZAogIwogCi1URVhUX0JBU0UgPSAweEZGRTAwMDAwCitURVhUX0JBU0UgPSAweEZFMDAwMDAwCmRpZmYgLS1naXQgYS9ib2FyZC96cGMxOTAwL3pwYzE5MDAuYyBiL2JvYXJkL3pwYzE5MDAvenBjMTkwMC5jCmluZGV4IDZkMTZhMGQuLjdkYjUzNWUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3pwYzE5MDAvenBjMTkwMC5jCisrKyBiL2JvYXJkL3pwYzE5MDAvenBjMTkwMC5jCkBAIC0yLDcgKzIsNyBAQAogICogKEMpIENvcHlyaWdodCAyMDAxLTIwMDMKICAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCiAgKgotICogKEMpIENvcHlyaWdodCAyMDAzIEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KKyAqIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA1IEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KICAqIFl1bGkgQmFyY29oZW4gPHl1bGlAYXJhYmVsbGFzdy5jb20+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKQEAgLTI3LDkgKzI3LDYgQEAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxpb3BvcnRzLmg+CiAjaW5jbHVkZSA8bXBjODI2MC5oPgotI2luY2x1ZGUgPGFzbS9tODI2MF9wY2kuaD4KLSNpbmNsdWRlIDxpMmMuaD4KLSNpbmNsdWRlIDxzcGQuaD4KICNpbmNsdWRlIDxtaWlwaHkuaD4KIAogLyoKQEAgLTE2Nyw4ICsxNjQsOCBAQAogCS8qIFBEMTggKi8geyAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwICAgfSwgLyogUEQxOCAqLwogCS8qIFBEMTcgKi8geyAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwICAgfSwgLyogRkNDMSBBVE1SWFBSVFkgKi8KIAkvKiBQRDE2ICovIHsgICAwLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMCAgIH0sIC8qIEZDQzEgQVRNVFhQUlRZICovCi0JLyogUEQxNSAqLyB7ICAgMSwgICAxLCAgIDEsICAgMCwgICAxLCAgIDAgICB9LCAvKiBJMkMgU0RBICovCi0JLyogUEQxNCAqLyB7ICAgMSwgICAxLCAgIDEsICAgMCwgICAxLCAgIDAgICB9LCAvKiBJMkMgU0NMICovCisJLyogUEQxNSAqLyB7ICAgMCwgICAxLCAgIDEsICAgMCwgICAxLCAgIDAgICB9LCAvKiBJMkMgU0RBICovCisJLyogUEQxNCAqLyB7ICAgMCwgICAxLCAgIDEsICAgMCwgICAxLCAgIDAgICB9LCAvKiBJMkMgU0NMICovCiAJLyogUEQxMyAqLyB7ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgICB9LCAvKiBQRDEzICovCiAJLyogUEQxMiAqLyB7ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgICB9LCAvKiBQRDEyICovCiAJLyogUEQxMSAqLyB7ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgICB9LCAvKiBQRDExICovCkBAIC0yMzEsMTEgKzIyOCwxMCBAQAogCXZ1X2NoYXIgKnJhbWFkZHI7CiAJdWNoYXIgYyA9IDB4RkY7CiAJbG9uZyBpbnQgbXNpemUgPSBDRkdfU0RSQU1fU0laRTsKLQl1aW50IHBzZG1yID0gQ0ZHX1BTRE1SOwogCWludCBpOwogCiAJaWYgKGJjc3JbNF0gJiBCQ1NSX1BDSV9NT0RFKSB7IC8qIFBDSSBtb2RlIHNlbGVjdGVkIGJ5IEpQOSAqLwotCQlpbW1hcC0+aW1fY2xrcnN0LmNhcl9zY2NyIHw9IE04MjZYX1NDQ1JfUENJX01PREVfRU47CisJCWltbWFwLT5pbV9jbGtyc3QuY2FyX3NjY3IgfD0gU0NDUl9QQ0lfTU9ERTsKIAkJaW1tYXAtPmltX3NpdV9jb25mLnNjX3NpdW1jciA9CiAJCQkoaW1tYXAtPmltX3NpdV9jb25mLnNjX3NpdW1jciAmIH5TSVVNQ1JfTEJQQzExKQogCQkJfCBTSVVNQ1JfTEJQQzAxOwpAQCAtMjU1LDEwICsyNTEsMTAgQEAKIAkqLwogCWlmICgoaW1tYXAtPmltX3NpdV9jb25mLnNjX3NpdW1jciAmIFNJVU1DUl9MQlBDMTEpID09IFNJVU1DUl9MQlBDMDApIHsKIAkJbWVtY3RsLT5tZW1jX2xzcnQgID0gQ0ZHX0xTUlQ7Ci0JCW1lbWN0bC0+bWVtY19vcjQgICA9IDB4RkZDMDE0ODA7Ci0JCW1lbWN0bC0+bWVtY19icjQgICA9IENGR19MU0RSQU1fQkFTRSB8IDB4MDAwMDE4NjE7Ci0JCW1lbWN0bC0+bWVtY19sc2RtciA9IENGR19MU0RNUiB8IFBTRE1SX09QX1BSRUE7CisJCW1lbWN0bC0+bWVtY19vcjQgICA9IENGR19MU0RSQU1fT1I7CisJCW1lbWN0bC0+bWVtY19icjQgICA9IENGR19MU0RSQU1fQlI7CiAJCXJhbWFkZHIgPSAodnVfY2hhciAqKUNGR19MU0RSQU1fQkFTRTsKKwkJbWVtY3RsLT5tZW1jX2xzZG1yID0gQ0ZHX0xTRE1SIHwgUFNETVJfT1BfUFJFQTsKIAkJKnJhbWFkZHIgPSBjOwogCQltZW1jdGwtPm1lbWNfbHNkbXIgPSBDRkdfTFNETVIgfCBQU0RNUl9PUF9DQlJSOwogCQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQpAQCAtMjcxLDggKzI2Nyw4IEBACiAKIAkvKiBJbml0aWFsaXNlIDYweCBidXMgU0RSQU0gKi8KIAltZW1jdGwtPm1lbWNfcHNydCA9IENGR19QU1JUOwotCW1lbWN0bC0+bWVtY19vcjIgID0gMHhGQzAwMjhDMDsKLQltZW1jdGwtPm1lbWNfYnIyICA9IENGR19TRFJBTV9CQVNFIHwgMHgwMDAwMDA0MTsKKwltZW1jdGwtPm1lbWNfb3IyICA9IENGR19QU0RSQU1fT1I7CisJbWVtY3RsLT5tZW1jX2JyMiAgPSBDRkdfUFNEUkFNX0JSOwogCS8qCiAJICogVGhlIG1vZGUgZGF0YSBmb3IgTW9kZSBSZWdpc3RlciBXcml0ZSBjb21tYW5kIG11c3QgYXBwZWFyIG9uCiAJICogdGhlIGFkZHJlc3MgbGluZXMgZHVyaW5nIGEgbW9kZS1zZXQgY3ljbGUuIEl0IGlzIGRyaXZlbiBieQpAQCAtMjgzLDE1ICsyNzksMTUgQEAKIAkgKiBsZW5ndGggbXVzdCBiZSA0LgogCSAqLwogCXJhbWFkZHIgPSAodnVfY2hhciAqKShDRkdfU0RSQU1fQkFTRSB8Ci0JCQkgICAgICAoKHBzZG1yICYgUFNETVJfQ0xfTVNLKSA8PCA3KSB8IDB4MTApOwotCW1lbWN0bC0+bWVtY19wc2RtciA9IHBzZG1yIHwgUFNETVJfT1BfUFJFQTsgLyogUHJlY2hhcmdlIGFsbCBiYW5rcyAqLworCQkJICAgICAgKChDRkdfUFNETVIgJiBQU0RNUl9DTF9NU0spIDw8IDcpIHwgMHgxMCk7CisJbWVtY3RsLT5tZW1jX3BzZG1yID0gQ0ZHX1BTRE1SIHwgUFNETVJfT1BfUFJFQTsgLyogUHJlY2hhcmdlIGFsbCBiYW5rcyAqLwogCSpyYW1hZGRyID0gYzsKLQltZW1jdGwtPm1lbWNfcHNkbXIgPSBwc2RtciB8IFBTRE1SX09QX0NCUlI7IC8qIENCUiByZWZyZXNoICovCisJbWVtY3RsLT5tZW1jX3BzZG1yID0gQ0ZHX1BTRE1SIHwgUFNETVJfT1BfQ0JSUjsgLyogQ0JSIHJlZnJlc2ggKi8KIAlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQogCQkqcmFtYWRkciA9IGM7Ci0JbWVtY3RsLT5tZW1jX3BzZG1yID0gcHNkbXIgfCBQU0RNUl9PUF9NUlc7ICAvKiBNb2RlIFJlZ2lzdGVyIHdyaXRlICovCisJbWVtY3RsLT5tZW1jX3BzZG1yID0gQ0ZHX1BTRE1SIHwgUFNETVJfT1BfTVJXOyAgLyogTW9kZSBSZWdpc3RlciB3cml0ZSAqLwogCSpyYW1hZGRyID0gYzsKLQltZW1jdGwtPm1lbWNfcHNkbXIgPSBwc2RtciB8IFBTRE1SX1JGRU47ICAgIC8qIFJlZnJlc2ggZW5hYmxlICovCisJbWVtY3RsLT5tZW1jX3BzZG1yID0gQ0ZHX1BTRE1SIHwgUFNETVJfUkZFTjsgICAgLyogUmVmcmVzaCBlbmFibGUgKi8KIAkqcmFtYWRkciA9IGM7CiAjZW5kaWYgLyogQ0ZHX1JBTUJPT1QgKi8KIApkaWZmIC0tZ2l0IGEvYm9hcmQvenlsb25pdGUvTWFrZWZpbGUgYi9ib2FyZC96eWxvbml0ZS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTk2NDdmCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvenlsb25pdGUvTWFrZWZpbGUKQEAgLTAsMCArMSw0OCBAQAorCisjCisjIChDKSBDb3B5cmlnaHQgMjAwMAorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCitpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKKworTElCCT0gbGliJChCT0FSRCkuYQorCitPQkpTCTo9IHp5bG9uaXRlLm8gZmxhc2gubworU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vCisKKyQoTElCKToJJChPQkpTKSAkKFNPQkpTKQorCSQoQVIpIGNydiAkQCAkKE9CSlMpICQoU09CSlMpCisKK2NsZWFuOgorCXJtIC1mICQoU09CSlMpICQoT0JKUykKKworZGlzdGNsZWFuOgljbGVhbgorCXJtIC1mICQoTElCKSBjb3JlICouYmFrIC5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisuZGVwZW5kOglNYWtlZmlsZSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpCisJCSQoQ0MpIC1NICQoQ1BQRkxBR1MpICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykgPiAkQAorCistaW5jbHVkZSAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2JvYXJkL3p5bG9uaXRlL2NvbmZpZy5tayBiL2JvYXJkL3p5bG9uaXRlL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWIwZjcxCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvenlsb25pdGUvY29uZmlnLm1rCkBAIC0wLDAgKzEsNCBAQAorI1RFWFRfQkFTRSA9IDB4MAorI1RFWFRfQkFTRSA9IDB4YTE3MDAwMDAKKyNURVhUX0JBU0UgPSAweGEzMDgwMDAwCitURVhUX0JBU0UgPSAweGEzMDA4MDAwCmRpZmYgLS1naXQgYS9ib2FyZC96eWxvbml0ZS9mbGFzaC5jIGIvYm9hcmQvenlsb25pdGUvZmxhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODNjMWJhCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvenlsb25pdGUvZmxhc2guYwpAQCAtMCwwICsxLDQzNCBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMQorICogS3lsZSBIYXJyaXMsIE5leHVzIFRlY2hub2xvZ2llcywgSW5jLiBraGFycmlzQG5leHVzLXRlY2gubmV0CisgKgorICogKEMpIENvcHlyaWdodCAyMDAxCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxsaW51eC9ieXRlb3JkZXIvc3dhYi5oPgorCisKK2ZsYXNoX2luZm9fdCBmbGFzaF9pbmZvW0NGR19NQVhfRkxBU0hfQkFOS1NdOwkvKiBpbmZvIGZvciBGTEFTSCBjaGlwcyAgICAqLworCisvKiBCb2FyZCBzdXBwb3J0IGZvciAxIG9yIDIgZmxhc2ggZGV2aWNlcyAqLworI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRIMzIKKyN1bmRlZiBGTEFTSF9QT1JUX1dJRFRIMTYKKworI2lmZGVmIEZMQVNIX1BPUlRfV0lEVEgxNgorI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRICQl1c2hvcnQKKyNkZWZpbmUgRkxBU0hfUE9SVF9XSURUSFYJCXZ1X3Nob3J0CisjZGVmaW5lIFNXQVAoeCkgICAgICAgICAgICAgICBfX3N3YWIxNih4KQorI2Vsc2UKKyNkZWZpbmUgRkxBU0hfUE9SVF9XSURUSAkJdWxvbmcKKyNkZWZpbmUgRkxBU0hfUE9SVF9XSURUSFYJCXZ1X2xvbmcKKyNkZWZpbmUgU1dBUCh4KSAgICAgICAgICAgICAgIF9fc3dhYjMyKHgpCisjZW5kaWYKKworI2RlZmluZSBGUFcJICAgRkxBU0hfUE9SVF9XSURUSAorI2RlZmluZSBGUFdWICAgRkxBU0hfUE9SVF9XSURUSFYKKworI2RlZmluZSBtYigpIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6IDogOiAibWVtb3J5IikKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRnVuY3Rpb25zCisgKi8KK3N0YXRpYyB1bG9uZyBmbGFzaF9nZXRfc2l6ZSAoRlBXICphZGRyLCBmbGFzaF9pbmZvX3QgKmluZm8pOworc3RhdGljIGludCB3cml0ZV9kYXRhIChmbGFzaF9pbmZvX3QgKmluZm8sIHVsb25nIGRlc3QsIEZQVyBkYXRhKTsKK3N0YXRpYyB2b2lkIGZsYXNoX2dldF9vZmZzZXRzICh1bG9uZyBiYXNlLCBmbGFzaF9pbmZvX3QgKmluZm8pOwordm9pZCBpbmxpbmUgc3Bpbl93aGVlbCAodm9pZCk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCit1bnNpZ25lZCBsb25nIGZsYXNoX2luaXQgKHZvaWQpCit7CisjaWYgMAorCWludCBpOworCXVsb25nIHNpemUgPSAwOworCisJZm9yIChpID0gMDsgaSA8IENGR19NQVhfRkxBU0hfQkFOS1M7IGkrKykgeworCQlzd2l0Y2ggKGkpIHsKKwkJY2FzZSAwOgorCQkJZmxhc2hfZ2V0X3NpemUgKChGUFcgKikgUEhZU19GTEFTSF8xLCAmZmxhc2hfaW5mb1tpXSk7CisJCQlmbGFzaF9nZXRfb2Zmc2V0cyAoUEhZU19GTEFTSF8xLCAmZmxhc2hfaW5mb1tpXSk7CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJZmxhc2hfZ2V0X3NpemUgKChGUFcgKikgUEhZU19GTEFTSF8yLCAmZmxhc2hfaW5mb1tpXSk7CisJCQlmbGFzaF9nZXRfb2Zmc2V0cyAoUEhZU19GTEFTSF8yLCAmZmxhc2hfaW5mb1tpXSk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXBhbmljICgiY29uZmlndXJlZCB0b28gbWFueSBmbGFzaCBiYW5rcyFcbiIpOworCQkJYnJlYWs7CisJCX0KKwkJc2l6ZSArPSBmbGFzaF9pbmZvW2ldLnNpemU7CisJfQorCisJLyogUHJvdGVjdCBtb25pdG9yIGFuZCBlbnZpcm9ubWVudCBzZWN0b3JzCisJICovCisJZmxhc2hfcHJvdGVjdCAoIEZMQUdfUFJPVEVDVF9TRVQsCisJCQlDRkdfRkxBU0hfQkFTRSwKKwkJCUNGR19GTEFTSF9CQVNFICsgbW9uaXRvcl9mbGFzaF9sZW4gLSAxLAorCQkJJmZsYXNoX2luZm9bMF0gKTsKKworCWZsYXNoX3Byb3RlY3QgKCBGTEFHX1BST1RFQ1RfU0VULAorCQkJQ0ZHX0VOVl9BRERSLAorCQkJQ0ZHX0VOVl9BRERSICsgQ0ZHX0VOVl9TSVpFIC0gMSwgJmZsYXNoX2luZm9bMF0gKTsKKworCXJldHVybiBzaXplOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQgZmxhc2hfZ2V0X29mZnNldHMgKHVsb25nIGJhc2UsIGZsYXNoX2luZm9fdCAqaW5mbykKK3sKKwlpbnQgaTsKKworCWlmIChpbmZvLT5mbGFzaF9pZCA9PSBGTEFTSF9VTktOT1dOKSB7CisJCXJldHVybjsKKwl9CisKKwlpZiAoKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVkVORE1BU0spID09IEZMQVNIX01BTl9JTlRFTCkgeworCQlmb3IgKGkgPSAwOyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKKwkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIChpICogUEhZU19GTEFTSF9TRUNUX1NJWkUpOworCQkJaW5mby0+cHJvdGVjdFtpXSA9IDA7CisJCX0KKwl9Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZCBmbGFzaF9wcmludF9pbmZvIChmbGFzaF9pbmZvX3QgKmluZm8pCit7CisJaW50IGk7CisKKwlpZiAoaW5mby0+Zmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTikgeworCQlwcmludGYgKCJtaXNzaW5nIG9yIHVua25vd24gRkxBU0ggdHlwZVxuIik7CisJCXJldHVybjsKKwl9CisKKwlzd2l0Y2ggKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVkVORE1BU0spIHsKKwljYXNlIEZMQVNIX01BTl9JTlRFTDoKKwkJcHJpbnRmICgiSU5URUwgIik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ZiAoIlVua25vd24gVmVuZG9yICIpOworCQlicmVhazsKKwl9CisKKwlzd2l0Y2ggKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVFlQRU1BU0spIHsKKwljYXNlIEZMQVNIXzI4RjEyOEozQToKKwkJcHJpbnRmICgiMjhGMTI4SjNBXG4iKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRmICgiVW5rbm93biBDaGlwIFR5cGVcbiIpOworCQlicmVhazsKKwl9CisKKwlwcmludGYgKCIgIFNpemU6ICVsZCBNQiBpbiAlZCBTZWN0b3JzXG4iLAorCQkJaW5mby0+c2l6ZSA+PiAyMCwgaW5mby0+c2VjdG9yX2NvdW50KTsKKworCXByaW50ZiAoIiAgU2VjdG9yIFN0YXJ0IEFkZHJlc3NlczoiKTsKKwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyArK2kpIHsKKwkJaWYgKChpICUgNSkgPT0gMCkKKwkJCXByaW50ZiAoIlxuICAgIik7CisJCXByaW50ZiAoIiAlMDhsWCVzIiwKKwkJCWluZm8tPnN0YXJ0W2ldLAorCQkJaW5mby0+cHJvdGVjdFtpXSA/ICIgKFJPKSIgOiAiICAgICAiKTsKKwl9CisJcHJpbnRmICgiXG4iKTsKKwlyZXR1cm47Cit9CisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGNvZGUgY2Fubm90IGJlIHJ1biBmcm9tIEZMQVNIIQorICovCitzdGF0aWMgdWxvbmcgZmxhc2hfZ2V0X3NpemUgKEZQVyAqYWRkciwgZmxhc2hfaW5mb190ICppbmZvKQoreworCXZvbGF0aWxlIEZQVyB2YWx1ZTsKKworCS8qIFdyaXRlIGF1dG8gc2VsZWN0IGNvbW1hbmQ6IHJlYWQgTWFudWZhY3R1cmVyIElEICovCisJYWRkclsweDU1NTVdID0gKEZQVykgMHgwMEFBMDBBQTsKKwlhZGRyWzB4MkFBQV0gPSAoRlBXKSAweDAwNTUwMDU1OworCWFkZHJbMHg1NTU1XSA9IChGUFcpIDB4MDA5MDAwOTA7CisKKwltYiAoKTsKKwl2YWx1ZSA9IGFkZHJbMF07CisKKwlzd2l0Y2ggKHZhbHVlKSB7CisKKwljYXNlIChGUFcpIElOVEVMX01BTlVGQUNUOgorCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX01BTl9JTlRFTDsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX1VOS05PV047CisJCWluZm8tPnNlY3Rvcl9jb3VudCA9IDA7CisJCWluZm8tPnNpemUgPSAwOworCQlhZGRyWzBdID0gKEZQVykgMHgwMEZGMDBGRjsJLyogcmVzdG9yZSByZWFkIG1vZGUgKi8KKwkJcmV0dXJuICgwKTsJCQkvKiBubyBvciB1bmtub3duIGZsYXNoICAqLworCX0KKworCW1iICgpOworCXZhbHVlID0gYWRkclsxXTsJCQkvKiBkZXZpY2UgSUQgICAgICAgICovCisKKwlzd2l0Y2ggKHZhbHVlKSB7CisKKwljYXNlIChGUFcpIElOVEVMX0lEXzI4RjEyOEozQToKKwkJaW5mby0+Zmxhc2hfaWQgKz0gRkxBU0hfMjhGMTI4SjNBOworCQlpbmZvLT5zZWN0b3JfY291bnQgPSAxMjg7CisJCWluZm8tPnNpemUgPSAweDAyMDAwMDAwOworCQlicmVhazsJCQkJLyogPT4gMTYgTUIgICAgICovCisKKwlkZWZhdWx0OgorCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX1VOS05PV047CisJCWJyZWFrOworCX0KKworCWlmIChpbmZvLT5zZWN0b3JfY291bnQgPiBDRkdfTUFYX0ZMQVNIX1NFQ1QpIHsKKwkJcHJpbnRmICgiKiogRVJST1I6IHNlY3RvciBjb3VudCAlZCA+IG1heCAoJWQpICoqXG4iLAorCQkJaW5mby0+c2VjdG9yX2NvdW50LCBDRkdfTUFYX0ZMQVNIX1NFQ1QpOworCQlpbmZvLT5zZWN0b3JfY291bnQgPSBDRkdfTUFYX0ZMQVNIX1NFQ1Q7CisJfQorCisJYWRkclswXSA9IChGUFcpIDB4MDBGRjAwRkY7CQkvKiByZXN0b3JlIHJlYWQgbW9kZSAqLworCisJcmV0dXJuIChpbmZvLT5zaXplKTsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworaW50IGZsYXNoX2VyYXNlIChmbGFzaF9pbmZvX3QgKmluZm8sIGludCBzX2ZpcnN0LCBpbnQgc19sYXN0KQoreworCWludCBmbGFnLCBwcm90LCBzZWN0OworCXVsb25nIHR5cGUsIHN0YXJ0LCBsYXN0OworCWludCByY29kZSA9IDA7CisKKwlpZiAoKHNfZmlyc3QgPCAwKSB8fCAoc19maXJzdCA+IHNfbGFzdCkpIHsKKwkJaWYgKGluZm8tPmZsYXNoX2lkID09IEZMQVNIX1VOS05PV04pIHsKKwkJCXByaW50ZiAoIi0gbWlzc2luZ1xuIik7CisJCX0gZWxzZSB7CisJCQlwcmludGYgKCItIG5vIHNlY3RvcnMgdG8gZXJhc2VcbiIpOworCQl9CisJCXJldHVybiAxOworCX0KKworCXR5cGUgPSAoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSyk7CisJaWYgKCh0eXBlICE9IEZMQVNIX01BTl9JTlRFTCkpIHsKKwkJcHJpbnRmICgiQ2FuJ3QgZXJhc2UgdW5rbm93biBmbGFzaCB0eXBlICUwOGx4IC0gYWJvcnRlZFxuIiwKKwkJCWluZm8tPmZsYXNoX2lkKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcHJvdCA9IDA7CisJZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdCA8PSBzX2xhc3Q7ICsrc2VjdCkgeworCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSkgeworCQkJcHJvdCsrOworCQl9CisJfQorCisJaWYgKHByb3QpIHsKKwkJcHJpbnRmICgiLSBXYXJuaW5nOiAlZCBwcm90ZWN0ZWQgc2VjdG9ycyB3aWxsIG5vdCBiZSBlcmFzZWQhXG4iLAorCQkJcHJvdCk7CisJfSBlbHNlIHsKKwkJcHJpbnRmICgiXG4iKTsKKwl9CisKKwlzdGFydCA9IGdldF90aW1lciAoMCk7CisJbGFzdCA9IHN0YXJ0OworCisJLyogRGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWNoIG1pZ2h0IGNhdXNlIGEgdGltZW91dCBoZXJlICovCisJZmxhZyA9IGRpc2FibGVfaW50ZXJydXB0cyAoKTsKKworCS8qIFN0YXJ0IGVyYXNlIG9uIHVucHJvdGVjdGVkIHNlY3RvcnMgKi8KKwlmb3IgKHNlY3QgPSBzX2ZpcnN0OyBzZWN0IDw9IHNfbGFzdDsgc2VjdCsrKSB7CisJCWlmIChpbmZvLT5wcm90ZWN0W3NlY3RdID09IDApIHsJLyogbm90IHByb3RlY3RlZCAqLworCQkJRlBXViAqYWRkciA9IChGUFdWICopIChpbmZvLT5zdGFydFtzZWN0XSk7CisJCQlGUFcgc3RhdHVzOworCisJCQlwcmludGYgKCJFcmFzaW5nIHNlY3RvciAlMmQgLi4uICIsIHNlY3QpOworCisJCQkvKiBhcm0gc2ltcGxlLCBub24gaW50ZXJydXB0IGRlcGVuZGVudCB0aW1lciAqLworCQkJcmVzZXRfdGltZXJfbWFza2VkICgpOworCisJCQkqYWRkciA9IChGUFcpIDB4MDA1MDAwNTA7CS8qIGNsZWFyIHN0YXR1cyByZWdpc3RlciAqLworCQkJKmFkZHIgPSAoRlBXKSAweDAwMjAwMDIwOwkvKiBlcmFzZSBzZXR1cCAqLworCQkJKmFkZHIgPSAoRlBXKSAweDAwRDAwMEQwOwkvKiBlcmFzZSBjb25maXJtICovCisKKwkJCXdoaWxlICgoKHN0YXR1cyA9ICphZGRyKSAmIChGUFcpIDB4MDA4MDAwODApICE9IChGUFcpIDB4MDA4MDAwODApIHsKKwkJCQlpZiAoZ2V0X3RpbWVyX21hc2tlZCAoKSA+IENGR19GTEFTSF9FUkFTRV9UT1VUKSB7CisJCQkJCXByaW50ZiAoIlRpbWVvdXRcbiIpOworCQkJCQkqYWRkciA9IChGUFcpIDB4MDBCMDAwQjA7CS8qIHN1c3BlbmQgZXJhc2UgICAgICovCisJCQkJCSphZGRyID0gKEZQVykgMHgwMEZGMDBGRjsJLyogcmVzZXQgdG8gcmVhZCBtb2RlICovCisJCQkJCXJjb2RlID0gMTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCisJCQkqYWRkciA9IDB4MDA1MDAwNTA7CS8qIGNsZWFyIHN0YXR1cyByZWdpc3RlciBjbWQuICAgKi8KKwkJCSphZGRyID0gMHgwMEZGMDBGRjsJLyogcmVzZXN0IHRvIHJlYWQgbW9kZSAgICAgICAgICAqLworCisJCQlwcmludGYgKCIgZG9uZVxuIik7CisJCX0KKwl9CisJcmV0dXJuIHJjb2RlOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5IG1lbW9yeSB0byBmbGFzaCwgcmV0dXJuczoKKyAqIDAgLSBPSworICogMSAtIHdyaXRlIHRpbWVvdXQKKyAqIDIgLSBGbGFzaCBub3QgZXJhc2VkCisgKiA0IC0gRmxhc2ggbm90IGlkZW50aWZpZWQKKyAqLworCitpbnQgd3JpdGVfYnVmZiAoZmxhc2hfaW5mb190ICppbmZvLCB1Y2hhciAqc3JjLCB1bG9uZyBhZGRyLCB1bG9uZyBjbnQpCit7CisJdWxvbmcgY3AsIHdwOworCUZQVyBkYXRhOworCWludCBjb3VudCwgaSwgbCwgcmMsIHBvcnRfd2lkdGg7CisKKwlpZiAoaW5mby0+Zmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTikgeworCQlyZXR1cm4gNDsKKwl9CisvKiBnZXQgbG93ZXIgd29yZCBhbGlnbmVkIGFkZHJlc3MgKi8KKyNpZmRlZiBGTEFTSF9QT1JUX1dJRFRIMTYKKwl3cCA9IChhZGRyICYgfjEpOworCXBvcnRfd2lkdGggPSAyOworI2Vsc2UKKwl3cCA9IChhZGRyICYgfjMpOworCXBvcnRfd2lkdGggPSA0OworI2VuZGlmCisKKwkvKgorCSAqIGhhbmRsZSB1bmFsaWduZWQgc3RhcnQgYnl0ZXMKKwkgKi8KKwlpZiAoKGwgPSBhZGRyIC0gd3ApICE9IDApIHsKKwkJZGF0YSA9IDA7CisJCWZvciAoaSA9IDAsIGNwID0gd3A7IGkgPCBsOyArK2ksICsrY3ApIHsKKwkJCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICgqKHVjaGFyICopIGNwKTsKKwkJfQorCQlmb3IgKDsgaSA8IHBvcnRfd2lkdGggJiYgY250ID4gMDsgKytpKSB7CisJCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAqc3JjKys7CisJCQktLWNudDsKKwkJCSsrY3A7CisJCX0KKwkJZm9yICg7IGNudCA9PSAwICYmIGkgPCBwb3J0X3dpZHRoOyArK2ksICsrY3ApIHsKKwkJCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICgqKHVjaGFyICopIGNwKTsKKwkJfQorCisJCWlmICgocmMgPSB3cml0ZV9kYXRhIChpbmZvLCB3cCwgU1dBUCAoZGF0YSkpKSAhPSAwKSB7CisJCQlyZXR1cm4gKHJjKTsKKwkJfQorCQl3cCArPSBwb3J0X3dpZHRoOworCX0KKworCS8qCisJICogaGFuZGxlIHdvcmQgYWxpZ25lZCBwYXJ0CisJICovCisJY291bnQgPSAwOworCXdoaWxlIChjbnQgPj0gcG9ydF93aWR0aCkgeworCQlkYXRhID0gMDsKKwkJZm9yIChpID0gMDsgaSA8IHBvcnRfd2lkdGg7ICsraSkgeworCQkJZGF0YSA9IChkYXRhIDw8IDgpIHwgKnNyYysrOworCQl9CisJCWlmICgocmMgPSB3cml0ZV9kYXRhIChpbmZvLCB3cCwgU1dBUCAoZGF0YSkpKSAhPSAwKSB7CisJCQlyZXR1cm4gKHJjKTsKKwkJfQorCQl3cCArPSBwb3J0X3dpZHRoOworCQljbnQgLT0gcG9ydF93aWR0aDsKKwkJaWYgKGNvdW50KysgPiAweDgwMCkgeworCQkJc3Bpbl93aGVlbCAoKTsKKwkJCWNvdW50ID0gMDsKKwkJfQorCX0KKworCWlmIChjbnQgPT0gMCkgeworCQlyZXR1cm4gKDApOworCX0KKworCS8qCisJICogaGFuZGxlIHVuYWxpZ25lZCB0YWlsIGJ5dGVzCisJICovCisJZGF0YSA9IDA7CisJZm9yIChpID0gMCwgY3AgPSB3cDsgaSA8IHBvcnRfd2lkdGggJiYgY250ID4gMDsgKytpLCArK2NwKSB7CisJCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICpzcmMrKzsKKwkJLS1jbnQ7CisJfQorCWZvciAoOyBpIDwgcG9ydF93aWR0aDsgKytpLCArK2NwKSB7CisJCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICgqKHVjaGFyICopIGNwKTsKKwl9CisKKwlyZXR1cm4gKHdyaXRlX2RhdGEgKGluZm8sIHdwLCBTV0FQIChkYXRhKSkpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBXcml0ZSBhIHdvcmQgb3IgaGFsZndvcmQgdG8gRmxhc2gsIHJldHVybnM6CisgKiAwIC0gT0sKKyAqIDEgLSB3cml0ZSB0aW1lb3V0CisgKiAyIC0gRmxhc2ggbm90IGVyYXNlZAorICovCitzdGF0aWMgaW50IHdyaXRlX2RhdGEgKGZsYXNoX2luZm9fdCAqaW5mbywgdWxvbmcgZGVzdCwgRlBXIGRhdGEpCit7CisJRlBXViAqYWRkciA9IChGUFdWICopIGRlc3Q7CisJdWxvbmcgc3RhdHVzOworCWludCBmbGFnOworCisJLyogQ2hlY2sgaWYgRmxhc2ggaXMgKHN1ZmZpY2llbnRseSkgZXJhc2VkICovCisJaWYgKCgqYWRkciAmIGRhdGEpICE9IGRhdGEpIHsKKwkJcHJpbnRmICgibm90IGVyYXNlZCBhdCAlMDhseCAoJWx4KVxuIiwgKHVsb25nKSBhZGRyLCAqYWRkcik7CisJCXJldHVybiAoMik7CisJfQorCS8qIERpc2FibGUgaW50ZXJydXB0cyB3aGljaCBtaWdodCBjYXVzZSBhIHRpbWVvdXQgaGVyZSAqLworCWZsYWcgPSBkaXNhYmxlX2ludGVycnVwdHMgKCk7CisKKwkqYWRkciA9IChGUFcpIDB4MDA0MDAwNDA7CS8qIHdyaXRlIHNldHVwICovCisJKmFkZHIgPSBkYXRhOworCisJLyogYXJtIHNpbXBsZSwgbm9uIGludGVycnVwdCBkZXBlbmRlbnQgdGltZXIgKi8KKwlyZXNldF90aW1lcl9tYXNrZWQgKCk7CisKKwkvKiB3YWl0IHdoaWxlIHBvbGxpbmcgdGhlIHN0YXR1cyByZWdpc3RlciAqLworCXdoaWxlICgoKHN0YXR1cyA9ICphZGRyKSAmIChGUFcpIDB4MDA4MDAwODApICE9IChGUFcpIDB4MDA4MDAwODApIHsKKwkJaWYgKGdldF90aW1lcl9tYXNrZWQgKCkgPiBDRkdfRkxBU0hfV1JJVEVfVE9VVCkgeworCQkJKmFkZHIgPSAoRlBXKSAweDAwRkYwMEZGOwkvKiByZXN0b3JlIHJlYWQgbW9kZSAqLworCQkJcmV0dXJuICgxKTsKKwkJfQorCX0KKworCSphZGRyID0gKEZQVykgMHgwMEZGMDBGRjsJLyogcmVzdG9yZSByZWFkIG1vZGUgKi8KKworCXJldHVybiAoMCk7Cit9CisKK3ZvaWQgaW5saW5lIHNwaW5fd2hlZWwgKHZvaWQpCit7CisJc3RhdGljIGludCBwID0gMDsKKwlzdGF0aWMgY2hhciB3W10gPSAiXFwvLSI7CisKKwlwcmludGYgKCJcMDEwJWMiLCB3W3BdKTsKKwkoKytwID09IDMpID8gKHAgPSAwKSA6IDA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC96eWxvbml0ZS9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC96eWxvbml0ZS9sb3dsZXZlbF9pbml0LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNiYjRlYgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3p5bG9uaXRlL2xvd2xldmVsX2luaXQuUwpAQCAtMCwwICsxLDM3MSBAQAorLyoKKyAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCisgKgorICogTk9URTogSSBoYXZlbid0IGNsZWFuIHRoaXMgdXAgY29uc2lkZXJhYmx5LCBqdXN0IGVub3VnaCB0byBnZXQgaXQKKyAqIHJ1bm5pbmcuIFNlZSBoYWxfcGxhdGZvcm1fc2V0dXAuaCBmb3IgdGhlIHNvdXJjZS4gU2VlCisgKiBib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCisgKiBtdWNoIGNsZWFuZXIuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorCitEUkFNX1NJWkU6ICAubG9uZyAgIENGR19EUkFNX1NJWkUKKworLyogd2FpdCBmb3IgY29wcm9jZXNzb3Igd3JpdGUgY29tcGxldGUgKi8KKy5tYWNybyBDUFdBSVQgcmVnCisJbXJjCXAxNSwwLFxyZWcsYzIsYzAsMAorCW1vdglccmVnLFxyZWcKKwlzdWIJcGMscGMsIzQKKy5lbmRtCisKKworLm1hY3JvIHdhaXQgdGltZQorCWxkcgkJcjIsID1PU0NSCisJbW92CQlyMywgIzAKKwlzdHIJCXIzLCBbcjJdCiswOgorCWxkcgkJcjMsIFtyMl0KKwljbXAJCXIzLCBcdGltZQorCWJscwkJMGIKKy5lbmRtCisKKy8qCisgKglNZW1vcnkgc2V0dXAKKyAqLworCisuZ2xvYmwgbG93bGV2ZWxfaW5pdAorbG93bGV2ZWxfaW5pdDoKKwkvKiBTZXQgdXAgR1BJTyBwaW5zIGZpcnN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJbW92CSByMTAsIGxyCisKKwkvKiAgQ29uZmlndXJlIEdQSU8gUGlucyA0MSAtIDQ4IGFzIFVBUlQxIC8gYWx0ZXJuLiBGa3QuIDIgKi8KKwlsZHIJCXIwLCA9MHg0MEUxMDQzOCBAIEdQSU80MSBGRlJYRAorCWxkcgkJcjEsID0weDgwMgorCXN0cgkJcjEsIFtyMF0KKworCWxkcgkJcjAsID0weDQwRTEwNDNDIEAgR1BJTzQyIEZGVFhECisJbGRyCQlyMSwgPTB4ODAyCisJc3RyCQlyMSwgW3IwXQorCisJbGRyCQlyMCwgPTB4NDBFMTA0NDAgQCBHUElPNDMgRkZDVFMKKwlsZHIJCXIxLCA9MHg4MDIKKwlzdHIJCXIxLCBbcjBdCisKKwlsZHIJCXIwLCA9MHg0MEUxMDQ0NCBAIEdQSU8gNDQgRkZEQ0QKKwlsZHIJCXIxLCA9MHg4MDIKKwlzdHIJCXIxLCBbcjBdCisKKwlsZHIJCXIwLCA9MHg0MEUxMDQ0OCBAIEdQSU8gNDUgRkZEU1IKKwlsZHIJCXIxLCA9MHg4MDIKKwlzdHIJCXIxLCBbcjBdCisKKwlsZHIJCXIwLCA9MHg0MEUxMDQ0QyBAIEdQSU8gNDYgRkZSSQorCWxkcgkJcjEsID0weDgwMgorCXN0cgkJcjEsIFtyMF0KKworCWxkcgkJcjAsID0weDQwRTEwNDUwIEAgR1BJTyA0NyBGRkRUUgorCWxkcgkJcjEsID0weDgwMgorCXN0cgkJcjEsIFtyMF0KKworCWxkcgkJcjAsID0weDQwRTEwNDU0IEAgR1BJTyA0OAorCWxkcgkJcjEsID0weDgwMgorCXN0cgkJcjEsIFtyMF0KKworCS8qIHRlYnJhbmR0IC0gQVNDUiwgY2xlYXIgdGhlIFJESCBiaXQgKi8KKwlsZHIJCXIwLCA9QVNDUgorCWxkcgkJcjEsIFtyMF0KKwliaWMJCXIxLCByMSwgIzB4ODAwMDAwMDAKKwlzdHIJCXIxLCBbcjBdCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogRW5hYmxlIG1lbW9yeSBpbnRlcmZhY2UJCQkJCSAgICAqLworCS8qCQkJCQkJCQkgICAgKi8KKwkvKiBUaGUgc2VxdWVuY2UgYmVsb3cgaXMgYmFzZWQgb24gdGhlIHJlY29tbWVuZGVkIGluaXQgc3RlcHMJICAgICovCisJLyogZGV0YWlsZWQgaW4gdGhlIEludGVsIFBYQTI1MCBPcGVyYXRpbmcgU3lzdGVtcyBEZXZlbG9wZXJzIEd1aWRlLCAqLworCS8qIENoYXB0ZXIgMTAuCQkJCQkJCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBTdGVwIDE6IFdhaXQgZm9yIGF0IGxlYXN0IDIwMCBtaWNyb3NlZG9uZHMgdG8gYWxsb3cgaW50ZXJuYWwJICAgICovCisJLyoJICAgY2xvY2tzIHRvIHNldHRsZS4gT25seSBuZWNlc3NhcnkgYWZ0ZXIgaGFyZCByZXNldC4uLgkgICAgKi8KKwkvKgkgICBGSVhNRTogY2FuIGJlIG9wdGltaXplZCBsYXRlcgkJCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIG1rOgkgcmVwbGFjZWQgd2l0aCB3YWl0IG1hY3JvICovCisvKglsZHIgcjMsID1PU0NSCQkJL1wqIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICpcLyAqLworLyoJbW92IHIyLCAjMCAqLworLyoJc3RyIHIyLCBbcjNdICovCisvKglsZHIgcjQsID0weDMwMAkJCS9cKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqXC8gKi8KKy8qCQkJCQkvXCogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQkgICAgICpcLyAqLworLyogMTogKi8KKy8qCWxkciByMiwgW3IzXSAqLworLyoJY21wIHI0LCByMiAqLworLyoJYmd0IDFiICovCisJd2FpdCAjMzAwCisKK21lbV9pbml0OgorCisJLyogY29uZmlndXJlIHRoZSBNRU1DTEtDRkcgcmVnaXN0ZXIgKi8KKwlsZHIJCXIxLCA9TUVNQ0xLQ0ZHCisJbGRyCQlyMiwgPTB4MDAwMTAwMDEKKwlzdHIJCXIyLCBbcjFdCSAgICAgQCBXUklURQorCWxkcgkJcjIsIFtyMV0JICAgICBAIERFTEFZIFVOVElMIFdSSVRURU4KKworCS8qIHNldCBDU0FEUkNGR1swXSB0byBkYXRhIGZsYXNoIFNSQU0gbW9kZSAqLworCWxkcgkJcjEsID1DU0FEUkNGRzAKKwlsZHIJCXIyLCA9MHgwMDMyMDgwOQorCXN0cgkJcjIsIFtyMV0JICAgICBAIFdSSVRFCisJbGRyCQlyMiwgW3IxXQkgICAgIEAgREVMQVkgVU5USUwgV1JJVFRFTgorCisJLyogc2V0IENTQURSQ0ZHWzFdIHRvIGRhdGEgZmxhc2ggU1JBTSBtb2RlICovCisJbGRyCQlyMSwgPUNTQURSQ0ZHMQorCWxkcgkJcjIsID0weDAwMzIwODA5CisJc3RyCQlyMiwgW3IxXQkgICAgIEAgV1JJVEUKKwlsZHIJCXIyLCBbcjFdCSAgICAgQCBERUxBWSBVTlRJTCBXUklUVEVOCisKKwkvKiBzZXQgTVNDIDAgcmVnaXN0ZXIgZm9yIFNSQU0gbWVtb3J5ICovCisJbGRyCQlyMSwgPU1TQzAKKwlsZHIJCXIyLCA9MHgxMTE5MTExOQorCXN0cgkJcjIsIFtyMV0JICAgICBAIFdSSVRFCisJbGRyCQlyMiwgW3IxXQkgICAgIEAgREVMQVkgVU5USUwgV1JJVFRFTgorCisJLyogc2V0IENTQURSQ0ZHWzJdIHRvIGRhdGEgZmxhc2ggU1JBTSBtb2RlICovCisJbGRyCQlyMSwgPUNTQURSQ0ZHMgorCWxkcgkJcjIsID0weDAwMzIwODA5CisJc3RyCQlyMiwgW3IxXQkgICAgIEAgV1JJVEUKKwlsZHIJCXIyLCBbcjFdCSAgICAgQCBERUxBWSBVTlRJTCBXUklUVEVOCisKKwkvKiBzZXQgQ1NBRFJDRkdbM10gdG8gVkxJTyBtb2RlICovCisJbGRyCQlyMSwgPUNTQURSQ0ZHMworCWxkcgkJcjIsID0weDAwMzIwODBCCisJc3RyCQlyMiwgW3IxXQkgICAgIEAgV1JJVEUKKwlsZHIJCXIyLCBbcjFdCSAgICAgQCBERUxBWSBVTlRJTCBXUklUVEVOCisKKwkvKiBzZXQgTVNDIDEgcmVnaXN0ZXIgZm9yIFZMSU8gbWVtb3J5ICovCisJbGRyCQlyMSwgPU1TQzEKKwlsZHIJCXIyLCA9MHgxMjNDMTExOQorCXN0cgkJcjIsIFtyMV0JICAgICBAIFdSSVRFCisJbGRyCQlyMiwgW3IxXQkgICAgIEAgREVMQVkgVU5USUwgV1JJVFRFTgorCisjaWYgMAorCS8qIFRoaXMgZG9lcyBub3Qgd29yayBpbiBaeWxvbml0ZS4gLVNDICovCisJbGRyCQlyMCwgPTB4MTVmZmZmZjAKKwlsZHIJCXIxLCA9MHhiMTBiCisJc3RyCQlyMSwgW3IwXQorCXN0cgkJcjEsIFtyMCwgIzRdCisjZW5kaWYKKworCS8qIENvbmZpZ3VyZSBBQ0NSIFJlZ2lzdGVyICovCisJbGRyCQlyMCwgPUFDQ1IJCUAgQUNDUgorCWxkcgkJcjEsID0weDAxODBiMTA4CisJc3RyCQlyMSwgW3IwXQorCWxkcgkJcjEsIFtyMF0KKworCS8qIENvbmZpZ3VyZSBNRENORkcgUmVnaXN0ZXIgKi8KKwlsZHIJCXIwLCA9TURDTkZHCQlAIE1EQ05GRworCWxkcgkJcjEsID0weDQwMworCXN0cgkJcjEsIFtyMF0KKwlsZHIJCXIxLCBbcjBdCisKKwkvKiBQZXJmb3JtIFJlc2lzdGl2ZSBDb21wZW5zYXRpb24gYnkgY29uZmlndXJpbmcgUkNPTVAgcmVnaXN0ZXIgKi8KKwlsZHIJCXIxLCA9UkNPTVAJCUAgUkNPTVAKKwlsZHIJCXIyLCA9MHgwMDAwMDBmZgorCXN0cgkJcjIsIFtyMV0KKwlsZHIJCXIyLCBbcjFdCisKKwkvKiBDb25maWd1cmUgTURNUlMgUmVnaXN0ZXIgZm9yIFNEQ1MwICovCisJbGRyCQlyMSwgPU1ETVJTCQlAIE1ETVJTCisJbGRyCQlyMiwgPTB4NjAwMDAwMjMKKwlsZHIJCXIzLCBbcjFdCisJb3JyCQlyMiwgcjIsIHIzCisJc3RyCQlyMiwgW3IxXQorCWxkcgkJcjIsIFtyMV0KKworCS8qIENvbmZpZ3VyZSBNRE1SUyBSZWdpc3RlciBmb3IgU0RDUzEgKi8KKwlsZHIJCXIxLCA9TURNUlMJCUAgTURNUlMKKwlsZHIJCXIyLCA9MHhhMDAwMDAyMworCWxkcgkJcjMsIFtyMV0KKwlvcnIJCXIyLCByMiwgcjMKKwlzdHIJCXIyLCBbcjFdCisJbGRyCQlyMiwgW3IxXQorCisJLyogQ29uZmlndXJlIE1EUkVGUiAqLworCWxkcgkJcjEsID1NRFJFRlIJCUAgTURSRUZSCisJbGRyCQlyMiwgPTB4MDAwMDAwMDYKKwlzdHIJCXIyLCBbcjFdCisJbGRyCQlyMiwgW3IxXQorCisJLyogQ29uZmlndXJlIEVNUEkgKi8KKwlsZHIJCXIxLCA9RU1QSQkJQCBFTVBJCisJbGRyCQlyMiwgPTB4ODAwMDAwMDAKKwlzdHIJCXIyLCBbcjFdCisJbGRyCQlyMiwgW3IxXQorCisJLyogSGFyZHdhcmUgRERSIFJlYWQtU3Ryb2JlIERlbGF5IENhbGlicmF0aW9uICovCisJbGRyCQlyMCwgPUREUl9IQ0FMCQlAIEREUl9IQ0FMCisJbGRyCQlyMSwgPTB4ODAzZmZjMDcJICAgIEAgdGhlIG9mZnNldCBpcyBjb3JyZWN0PyAtU0MKKwlzdHIJCXIxLCBbcjBdCisJd2FpdAkJIzUKKwlsZHIJCXIxLCBbcjBdCisKKwkvKiBIZXJlIHdlIGFzc3VtZSB0aGUgaGFyZHdhcmUgY2FsaWJyYXRpb24gYWx3YXN5IGJlIHN1Y2Nlc3NmdWwuIC1TQyAqLworCS8qIFNldCBETUNFTiBiaXQgaW4gTURDTkZHIFJlZ2lzdGVyICovCisJbGRyCQlyMCwgPU1EQ05GRwkJQCBNRENORkcKKwlsZHIJCXIxLCBbcjBdCisJb3JyCQlyMSwgcjEsICMweDQwMDAwMDAwCUAgZW5hYmxlIFNEUkFNIGZvciBOb3JtYWwgQWNjZXNzCisJc3RyCQlyMSwgW3IwXQorCisJLyogc2NydWIvaW5pdCBTRFJBTSBpZiBlbmFibGVkL3ByZXNlbnQgKi8KKy8qCWxkcglyMTEsID0weGEwMDAwMDAwIC9cKiBiYXNlIGFkZHJlc3Mgb2YgU0RSQU0gKENGR19EUkFNX0JBU0UpICpcLyAqLworLyoJbGRyCXIxMiwgPTB4MDQwMDAwMDAgL1wqIHNpemUgb2YgbWVtb3J5IHRvIHNjcnViIChDRkdfRFJBTV9TSVpFKSAqXC8gKi8KKy8qCW1vdglyOCxyMTIJCSAvXCogc2F2ZSBEUkFNIHNpemUgKG1rOiB3aHk/Pz8pICpcLyAqLworCWxkcglyOCwgPTB4YTAwMDAwMDAJIC8qIGJhc2UgYWRkcmVzcyBvZiBTRFJBTSAoQ0ZHX0RSQU1fQkFTRSkgKi8KKwlsZHIJcjksID0weDA0MDAwMDAwCSAvKiBzaXplIG9mIG1lbW9yeSB0byBzY3J1YiAoQ0ZHX0RSQU1fU0laRSkgKi8KKwltb3YJcjAsICMwCQkgLyogc2NydWIgd2l0aCAweDAwMDA6MDAwMCAqLworCW1vdglyMSwgIzAKKwltb3YJcjIsICMwCisJbW92CXIzLCAjMAorCW1vdglyNCwgIzAKKwltb3YJcjUsICMwCisJbW92CXI2LCAjMAorCW1vdglyNywgIzAKKzEwOgkvKiBmYXN0U2NydWJMb29wICovCisJc3VicwlyOSwgcjksICMzMgkvKiAzMiBieXRlcy9saW5lICovCisJc3RtaWEJcjghLCB7cjAtcjd9CisJYmVxCTE1ZgorCWIJMTBiCisKKzE1OgorCS8qIE1hc2sgYWxsIGludGVycnVwdHMgKi8KKwltb3YJcjEsICMwCisJbWNyCXA2LCAwLCByMSwgYzEsIGMwLCAwCUAgSUNNUgorCisJLyogRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLworCW1vdglyMCwgIzAKKwltY3IJcDE1LDAscjAsYzE0LGM4LDAgIC8qIGliY3IwICovCisJbWNyCXAxNSwwLHIwLGMxNCxjOSwwICAvKiBpYmNyMSAqLworCW1jcglwMTUsMCxyMCxjMTQsYzQsMCAgLyogZGJjb24gKi8KKworCS8qIEVuYWJsZSBhbGwgZGVidWcgZnVuY3Rpb25hbGl0eSAqLworCW1vdglyMCwjMHg4MDAwMDAwMAorCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLworCisJLyogV2UgYXJlIGZpbmlzaGVkIHdpdGggSW50ZWwncyBtZW1vcnkgY29udHJvbGxlciBpbml0aWFsaXNhdGlvbiAgICAqLworCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIEVuZCBsb3dsZXZlbF9pbml0CQkJCQkJCSAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworZW5kbG93bGV2ZWxfaW5pdDoKKworCW1vdglwYywgbHIKKworLyoKK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQCBERFIgY2FsaWJyYXRpb24KK0AKK0AgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjYWxpYnJhdGUgRFFTIGRlbGF5IGxpbmVzLgorQCBNb25haGFucyBzdXBwb3J0cyB0aHJlZSB3YXlzIHRvIGRvIGl0LiBPbmUgaXMgc29mdHdhcmUKK0AgY2FsaWJyYXRpb24uIFR3byBpcyBoYXJkd2FyZSBjYWxpYnJhdGlvbi4gVGhyZWUgaXMgaHlicmlkCitAIGNhbGlicmF0aW9uLgorQAorQCBUQkQKK0AgLVNDCitkZHJfY2FsaWJyYXRpb246CisKKwlAIENhc2UgMToJV3JpdGUgdGhlIGNvcnJlY3QgZGVsYXkgdmFsdWUgb25jZQorCUAgQ29uZmlndXJlIEREUl9TQ0FMIFJlZ2lzdGVyCisJbGRyCXIwLCA9RERSX1NDQUwJCUAgRERSX1NDQUwKK3EJbGRyCXIxLCA9MHhhZjJmMmYyZgorCXN0cglyMSwgW3IwXQorCWxkcglyMSwgW3IwXQorKi8KKy8qCUAgQ2FzZSAyOglTb2Z0d2FyZSBDYWxpYnJhdGlvbgorCUAgV3JpdGUgdGVzdCBwYXR0ZXJuIHRvIG1lbW9yeQorCWxkcglyNSwgPTB4MGZhZjBmYWYJCUAgRGF0YSBQYXR0ZXJuCisJbGRyCXI0LCA9MHhhMDAwMDAwMAkJQCBERFIgcmFtCisJc3RyCXI1LCBbcjRdCisKKwltb3YJcjEsID0weDAJCUAgZGVsYXkgY291bnQKKwltb3YJcjYsID0weDAKKwltb3YJcjcsID0weDAKK2Rkcl9sb29wMToKKwlhZGQJcjEsIHIxLCA9MHgxCisJY21wCXIxLCA9MHhmCisJYmxlCWVuZF9sb29wCisJbW92CXIzLCByMQorCW1vdglyMCwgcjEsIGxzbCAjMzAKKwlvcnIJcjMsIHIzLCByMAorCW1vdglyMCwgcjEsIGxzbCAjMjIKKwlvcnIJcjMsIHIzLCByMAorCW1vdglyMCwgcjEsIGxzbCAjMTQKKwlvcnIJcjMsIHIzLCByMAorCW9ycglyMywgcjMsID0weDgwMDAwMDAwCisJbGRyCXIyLCA9RERSX1NDQUwKKwlzdHIJcjMsIFtyMl0KKworCWxkcglyMiwgW3I0XQorCWNtcAlyMiwgcjUKKwlibmUJZGRyX2xvb3AxCisJbW92CXI2LCByMQorZGRyX2xvb3AyOgorCWFkZAlyMSwgcjEsID0weDEKKwljbXAJcjEsID0weGYKKwlibGUJZW5kX2xvb3AKKwltb3YJcjMsIHIxCisJbW92CXIwLCByMSwgbHNsICMzMAorCW9ycglyMywgcjMsIHIwCisJbW92CXIwLCByMSwgbHNsICMyMgorCW9ycglyMywgcjMsIHIwCisJbW92CXIwLCByMSwgbHNsICMxNAorCW9ycglyMywgcjMsIHIwCisJb3JyCXIzLCByMywgPTB4ODAwMDAwMDAKKwlsZHIJcjIsID1ERFJfU0NBTAorCXN0cglyMywgW3IyXQorCisJbGRyCXIyLCBbcjRdCisJY21wCXIyLCByNQorCWJlCWRkcl9sb29wMgorCW1vdglyNywgcjIKKworCWFkZAlyMywgcjYsIHI3CisJbHNyCXIzLCByMywgPTB4MQorCW1vdglyMCwgcjEsIGxzbCAjMzAKKwlvcnIJcjMsIHIzLCByMAorCW1vdglyMCwgcjEsIGxzbCAjMjIKKwlvcnIJcjMsIHIzLCByMAorCW1vdglyMCwgcjEsIGxzbCAjMTQKKwlvcnIJcjMsIHIzLCByMAorCW9ycglyMywgcjMsID0weDgwMDAwMDAwCisJbGRyCXIyLCA9RERSX1NDQUwKKworZW5kX2xvb3A6CisKKwlAIENhc2UgMzoJSGFyZHdhcmUgQ2FsaWJyYXRvaW4KKwlsZHIJcjAsID1ERFJfSENBTAkJQCBERFJfSENBTAorCWxkcglyMSwgPTB4ODAzZmZjMDcJICAgIEAgdGhlIG9mZnNldCBpcyBjb3JyZWN0PyAtU0MKKwlzdHIJcjEsIFtyMF0KKwl3YWl0CSM1CisJbGRyCXIxLCBbcjBdCisJbW92CXBjLCBscgorKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3p5bG9uaXRlL3UtYm9vdC5sZHMgYi9ib2FyZC96eWxvbml0ZS91LWJvb3QubGRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMTAyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC96eWxvbml0ZS91LWJvb3QubGRzCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDAKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworT1VUUFVUX0ZPUk1BVCgiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1saXR0bGVhcm0iKQorT1VUUFVUX0FSQ0goYXJtKQorRU5UUlkoX3N0YXJ0KQorU0VDVElPTlMKK3sKKwkuID0gMHgwMDAwMDAwMDsKKworCS4gPSBBTElHTig0KTsKKwkudGV4dCAgICAgIDoKKwl7CisJICBjcHUvcHhhL3N0YXJ0Lm8JKC50ZXh0KQorCSAgKigudGV4dCkKKwl9CisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9kYXRhKSB9CisKKwkuID0gQUxJR04oNCk7CisJLmRhdGEgOiB7ICooLmRhdGEpIH0KKworCS4gPSBBTElHTig0KTsKKwkuZ290IDogeyAqKC5nb3QpIH0KKworCS4gPSAuOworCV9fdV9ib290X2NtZF9zdGFydCA9IC47CisJLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KKwlfX3VfYm9vdF9jbWRfZW5kID0gLjsKKworCS4gPSBBTElHTig0KTsKKwlfX2Jzc19zdGFydCA9IC47CisJLmJzcyA6IHsgKiguYnNzKSB9CisJX2VuZCA9IC47Cit9CmRpZmYgLS1naXQgYS9ib2FyZC96eWxvbml0ZS96eWxvbml0ZS5jIGIvYm9hcmQvenlsb25pdGUvenlsb25pdGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjE4YWI5Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvenlsb25pdGUvenlsb25pdGUuYwpAQCAtMCwwICsxLDc1IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBLeWxlIEhhcnJpcywgTmV4dXMgVGVjaG5vbG9naWVzLCBJbmMuIGtoYXJyaXNAbmV4dXMtdGVjaC5uZXQKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgorICogTWFyaXVzIEdyb2VnZXIgPG1ncm9lZ2VyQHN5c2dvLmRlPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisKKy8qCisgKiBNaXNjZWxhbmVvdXMgcGxhdGZvcm0gZGVwZW5kZW50IGluaXRpYWxpc2F0aW9ucworICovCisKK2ludCBib2FyZF9pbml0ICh2b2lkKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJLyogbWVtb3J5IGFuZCBjcHUtc3BlZWQgYXJlIHNldHVwIGJlZm9yZSByZWxvY2F0aW9uICovCisJLyogc28gd2UgZG8gX25vdGhpbmdfIGhlcmUgKi8KKworCS8qIGFyY2ggbnVtYmVyIG9mIEx1YmJvY2stQm9hcmQgKi8KKwlnZC0+YmQtPmJpX2FyY2hfbnVtYmVyID0gTUFDSF9UWVBFX0xVQkJPQ0s7CisKKwkvKiBhZHJlc3Mgb2YgYm9vdCBwYXJhbWV0ZXJzICovCisJZ2QtPmJkLT5iaV9ib290X3BhcmFtcyA9IDB4YTAwMDAxMDA7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGJvYXJkX2xhdGVfaW5pdCh2b2lkKQoreworCXNldGVudigic3Rkb3V0IiwgInNlcmlhbCIpOworCXNldGVudigic3RkZXJyIiwgInNlcmlhbCIpOworCXJldHVybiAwOworfQorCisKK2ludCBkcmFtX2luaXQgKHZvaWQpCit7CisJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7CisJZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bMV0uc3RhcnQgPSBQSFlTX1NEUkFNXzI7CisJZ2QtPmJkLT5iaV9kcmFtWzFdLnNpemUgPSBQSFlTX1NEUkFNXzJfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bMl0uc3RhcnQgPSBQSFlTX1NEUkFNXzM7CisJZ2QtPmJkLT5iaV9kcmFtWzJdLnNpemUgPSBQSFlTX1NEUkFNXzNfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bM10uc3RhcnQgPSBQSFlTX1NEUkFNXzQ7CisJZ2QtPmJkLT5iaV9kcmFtWzNdLnNpemUgPSBQSFlTX1NEUkFNXzRfU0laRTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9ib290bS5jIGIvY29tbW9uL2NtZF9ib290bS5jCmluZGV4IDg1OTlhNDkuLmEyMGU1ODQgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfYm9vdG0uYworKysgYi9jb21tb24vY21kX2Jvb3RtLmMKQEAgLTI1Miw2ICsyNTIsOCBAQAogCWlmIChoZHItPmloX2FyY2ggIT0gSUhfQ1BVX01JQ1JPQkxBWkUpCiAjZWxpZiBkZWZpbmVkKF9fbmlvczJfXykKIAlpZiAoaGRyLT5paF9hcmNoICE9IElIX0NQVV9OSU9TMikKKyNlbGlmIGRlZmluZWQoX19ibGFja2Zpbl9fKQorCWlmIChoZHItPmloX2FyY2ggIT0gSUhfQ1BVX0JMQUNLRklOKQogI2Vsc2UKICMgZXJyb3IgVW5rbm93biBDUFUgdHlwZQogI2VuZGlmCkBAIC02MDYsNyArNjA4LDcgQEAKICNlbmRpZiAvKiBDT05GSUdfTVBDNXh4eCAqLwogCX0KIAotCWtlcm5lbCA9ICh2b2lkICgqKShiZF90ICosIHVsb25nLCB1bG9uZywgdWxvbmcsIHVsb25nKSloZHItPmloX2VwOworCWtlcm5lbCA9ICh2b2lkICgqKShiZF90ICosIHVsb25nLCB1bG9uZywgdWxvbmcsIHVsb25nKSkgbnRvaGwoaGRyLT5paF9lcCk7CiAKIAkvKgogCSAqIENoZWNrIGlmIHRoZXJlIGlzIGFuIGluaXRyZCBpbWFnZQpAQCAtNjIxLDcgKzYyMyw3IEBACiAJCS8qIENvcHkgaGVhZGVyIHNvIHdlIGNhbiBibGFuayBDUkMgZmllbGQgZm9yIHJlLWNhbGN1bGF0aW9uICovCiAJCW1lbW1vdmUgKCZoZWFkZXIsIChjaGFyICopYWRkciwgc2l6ZW9mKGltYWdlX2hlYWRlcl90KSk7CiAKLQkJaWYgKGhkci0+aWhfbWFnaWMgICE9IElIX01BR0lDKSB7CisJCWlmIChudG9obChoZHItPmloX21hZ2ljKSAgIT0gSUhfTUFHSUMpIHsKIAkJCXB1dHMgKCJCYWQgTWFnaWMgTnVtYmVyXG4iKTsKIAkJCVNIT1dfQk9PVF9QUk9HUkVTUyAoLTEwKTsKIAkJCWRvX3Jlc2V0IChjbWR0cCwgZmxhZywgYXJnYywgYXJndik7CkBAIC02MzAsNyArNjMyLDcgQEAKIAkJZGF0YSA9ICh1bG9uZykmaGVhZGVyOwogCQlsZW4gID0gc2l6ZW9mKGltYWdlX2hlYWRlcl90KTsKIAotCQljaGVja3N1bSA9IGhkci0+aWhfaGNyYzsKKwkJY2hlY2tzdW0gPSBudG9obChoZHItPmloX2hjcmMpOwogCQloZHItPmloX2hjcmMgPSAwOwogCiAJCWlmIChjcmMzMiAoMCwgKHVjaGFyICopZGF0YSwgbGVuKSAhPSBjaGVja3N1bSkgewpAQCAtNjQ0LDcgKzY0Niw3IEBACiAJCXByaW50X2ltYWdlX2hkciAoaGRyKTsKIAogCQlkYXRhID0gYWRkciArIHNpemVvZihpbWFnZV9oZWFkZXJfdCk7Ci0JCWxlbiAgPSBoZHItPmloX3NpemU7CisJCWxlbiAgPSBudG9obChoZHItPmloX3NpemUpOwogCiAJCWlmICh2ZXJpZnkpIHsKIAkJCXVsb25nIGNzdW0gPSAwOwpAQCAtNjcwLDcgKzY3Miw3IEBACiAJCQljc3VtID0gY3JjMzIgKDAsICh1Y2hhciAqKWRhdGEsIGxlbik7CiAjZW5kaWYJLyogQ09ORklHX0hXX1dBVENIRE9HIHx8IENPTkZJR19XQVRDSERPRyAqLwogCi0JCQlpZiAoY3N1bSAhPSBoZHItPmloX2RjcmMpIHsKKwkJCWlmIChjc3VtICE9IG50b2hsKGhkci0+aWhfZGNyYykpIHsKIAkJCQlwdXRzICgiQmFkIERhdGEgQ1JDXG4iKTsKIAkJCQlTSE9XX0JPT1RfUFJPR1JFU1MgKC0xMik7CiAJCQkJZG9fcmVzZXQgKGNtZHRwLCBmbGFnLCBhcmdjLCBhcmd2KTsKQEAgLTgxOSw3ICs4MjEsNyBAQAogCSgqa2VybmVsKSAoa2JkLCBpbml0cmRfc3RhcnQsIGluaXRyZF9lbmQsIGNtZF9zdGFydCwgY21kX2VuZCk7CiAKICNlbHNlCi0JZnRfc2V0dXAob2ZfZmxhdF90cmVlLCBPRl9GTEFUX1RSRUVfTUFYX1NJWkUsIGtiZCk7CisJZnRfc2V0dXAob2ZfZmxhdF90cmVlLCBPRl9GTEFUX1RSRUVfTUFYX1NJWkUsIGtiZCwgaW5pdHJkX3N0YXJ0LCBpbml0cmRfZW5kKTsKIAkvKiBmdF9kdW1wX2Jsb2Iob2ZfZmxhdF90cmVlKTsgKi8KIAogI2lmIGRlZmluZWQoQ0ZHX0lOSVRfUkFNX0xPQ0spICYmICFkZWZpbmVkKENPTkZJR19FNTAwKQpAQCAtODI4LDEyICs4MzAsMTYgQEAKIAkvKgogCSAqIExpbnV4IEtlcm5lbCBQYXJhbWV0ZXJzOgogCSAqICAgcjM6IHB0ciB0byBPRiBmbGF0IHRyZWUsIGZvbGxvd2VkIGJ5IHRoZSBib2FyZCBpbmZvIGRhdGEKLQkgKiAgIHI0OiBpbml0cmRfc3RhcnQgb3IgMCBpZiBubyBpbml0cmQKLQkgKiAgIHI1OiBpbml0cmRfZW5kIC0gdW51c2VkIGlmIHI0IGlzIDAKLQkgKiAgIHI2OiBTdGFydCBvZiBjb21tYW5kIGxpbmUgc3RyaW5nCi0JICogICByNzogRW5kICAgb2YgY29tbWFuZCBsaW5lIHN0cmluZworCSAqICAgcjQ6IHBoeXNpY2FsIHBvaW50ZXIgdG8gdGhlIGtlcm5lbCBpdHNlbGYKKwkgKiAgIHI1OiBOVUxMCisJICogICByNjogTlVMTAorCSAqICAgcjc6IE5VTEwKIAkgKi8KLQkoKmtlcm5lbCkgKChiZF90ICopb2ZfZmxhdF90cmVlLCBpbml0cmRfc3RhcnQsIGluaXRyZF9lbmQsIGNtZF9zdGFydCwgY21kX2VuZCk7CisJaWYgKGdldGVudigiZGlzYWJsZV9vZiIpICE9IE5VTEwpCisJCSgqa2VybmVsKSAoKGJkX3QgKilvZl9mbGF0X3RyZWUsIGluaXRyZF9zdGFydCwgaW5pdHJkX2VuZCwKKwkJCWNtZF9zdGFydCwgY21kX2VuZCk7CisJZWxzZQorCQkoKmtlcm5lbCkgKChiZF90ICopb2ZfZmxhdF90cmVlLCAodWxvbmcpa2VybmVsLCAwLCAwLCAwKTsKIAogI2VuZGlmCiB9CkBAIC05MDIsNyArOTA4LDcgQEAKIAkJY21kbGluZSA9ICIiOwogCX0KIAotCWxvYWRlciA9ICh2b2lkICgqKShiZF90ICosIGltYWdlX2hlYWRlcl90ICosIGNoYXIgKiwgY2hhciAqKSkgaGRyLT5paF9lcDsKKwlsb2FkZXIgPSAodm9pZCAoKikoYmRfdCAqLCBpbWFnZV9oZWFkZXJfdCAqLCBjaGFyICosIGNoYXIgKikpIG50b2hsKGhkci0+aWhfZXApOwogCiAJcHJpbnRmICgiIyMgVHJhbnNmZXJyaW5nIGNvbnRyb2wgdG8gTmV0QlNEIHN0YWdlLTIgbG9hZGVyIChhdCBhZGRyZXNzICUwOGx4KSAuLi5cbiIsCiAJCSh1bG9uZylsb2FkZXIpOwpAQCAtMTM2NCw3ICsxMzcwLDcgQEAKIAlpbWFnZV9oZWFkZXJfdCAqaGRyID0gJmhlYWRlcjsKIAl2b2lkCSgqZW50cnlfcG9pbnQpKGJkX3QgKik7CiAKLQllbnRyeV9wb2ludCA9ICh2b2lkICgqKShiZF90ICopKSBoZHItPmloX2VwOworCWVudHJ5X3BvaW50ID0gKHZvaWQgKCopKGJkX3QgKikpIG50b2hsKGhkci0+aWhfZXApOwogCiAJcHJpbnRmICgiIyMgVHJhbnNmZXJyaW5nIGNvbnRyb2wgdG8gUlRFTVMgKGF0IGFkZHJlc3MgJTA4bHgpIC4uLlxuIiwKIAkJKHVsb25nKWVudHJ5X3BvaW50KTsKQEAgLTEzODcsNyArMTM5Myw3IEBACiAJaW1hZ2VfaGVhZGVyX3QgKmhkciA9ICZoZWFkZXI7CiAJY2hhciBzdHJbODBdOwogCi0Jc3ByaW50ZihzdHIsICIleCIsIGhkci0+aWhfZXApOyAvKiB3cml0ZSBlbnRyeS1wb2ludCBpbnRvIHN0cmluZyAqLworCXNwcmludGYoc3RyLCAiJXgiLCBudG9obChoZHItPmloX2VwKSk7IC8qIHdyaXRlIGVudHJ5LXBvaW50IGludG8gc3RyaW5nICovCiAJc2V0ZW52KCJsb2FkYWRkciIsIHN0cik7CiAJZG9fYm9vdHZ4KGNtZHRwLCAwLCAwLCBOVUxMKTsKIH0KQEAgLTE0MDAsNyArMTQwNiw3IEBACiAJY2hhciAqbG9jYWxfYXJnc1syXTsKIAljaGFyIHN0clsxNl07CiAKLQlzcHJpbnRmKHN0ciwgIiV4IiwgaGRyLT5paF9lcCk7IC8qIHdyaXRlIGVudHJ5LXBvaW50IGludG8gc3RyaW5nICovCisJc3ByaW50ZihzdHIsICIleCIsIG50b2hsKGhkci0+aWhfZXApKTsgLyogd3JpdGUgZW50cnktcG9pbnQgaW50byBzdHJpbmcgKi8KIAlsb2NhbF9hcmdzWzBdID0gYXJndlswXTsKIAlsb2NhbF9hcmdzWzFdID0gc3RyOwkvKiBhbmQgcHJvdmlkZSBpdCB2aWEgdGhlIGFyZ3VtZW50cyAqLwogCWRvX2Jvb3RlbGYoY21kdHAsIDAsIDIsIGxvY2FsX2FyZ3MpOwpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9kb2MuYyBiL2NvbW1vbi9jbWRfZG9jLmMKaW5kZXggNWU5YmVhMy4uMzdiNzMyNSAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9kb2MuYworKysgYi9jb21tb24vY21kX2RvYy5jCkBAIC0yMiw4ICsyMiw5IEBACiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfRE9DKQogCiAjaW5jbHVkZSA8bGludXgvbXRkL25mdGwuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgogI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2lkcy5oPgorCiAjaW5jbHVkZSA8bGludXgvbXRkL2RvYzIwMDAuaD4KICNpbmNsdWRlIDxsaW51eC9tdGQvbmZ0bC5oPgogCkBAIC0yNDksNyArMjUwLDcgQEAKIAogCQlwcmludF9pbWFnZV9oZHIgKGhkcik7CiAKLQkJY250ID0gKGhkci0+aWhfc2l6ZSArIHNpemVvZihpbWFnZV9oZWFkZXJfdCkpOworCQljbnQgPSAobnRvaGwoaGRyLT5paF9zaXplKSArIHNpemVvZihpbWFnZV9oZWFkZXJfdCkpOwogCQljbnQgLT0gU0VDVE9SU0laRTsKIAl9IGVsc2UgewogCQlwdXRzICgiXG4qKiBCYWQgTWFnaWMgTnVtYmVyICoqXG4iKTsKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfZmRjLmMgYi9jb21tb24vY21kX2ZkYy5jCmluZGV4IDAyZGZmYTMuLjAzZjRjZTYgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfZmRjLmMKKysrIGIvY29tbW9uL2NtZF9mZGMuYwpAQCAtODM2LDEzICs4MzYsMTMgQEAKIAkJcmV0dXJuIDE7CiAJfQogCWhkciA9IChpbWFnZV9oZWFkZXJfdCAqKWFkZHI7Ci0JaWYgKGhkci0+aWhfbWFnaWMgICE9IElIX01BR0lDKSB7CisJaWYgKG50b2hsKGhkci0+aWhfbWFnaWMpICAhPSBJSF9NQUdJQykgewogCQlwcmludGYgKCJCYWQgTWFnaWMgTnVtYmVyXG4iKTsKIAkJcmV0dXJuIDE7CiAJfQogCXByaW50X2ltYWdlX2hkcihoZHIpOwogCi0JaW1zaXplPSBoZHItPmloX3NpemUrc2l6ZW9mKGltYWdlX2hlYWRlcl90KTsKKwlpbXNpemU9IG50b2hsKGhkci0+aWhfc2l6ZSkrc2l6ZW9mKGltYWdlX2hlYWRlcl90KTsKIAlucm9mYmxrPWltc2l6ZS81MTI7CiAJaWYoKGltc2l6ZSU1MTIpPjApCiAJCW5yb2ZibGsrKzsKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfamZmczIuYyBiL2NvbW1vbi9jbWRfamZmczIuYwppbmRleCAzNDkyMGIxLi4yMDFjM2MxIDEwMDY0NAotLS0gYS9jb21tb24vY21kX2pmZnMyLmMKKysrIGIvY29tbW9uL2NtZF9qZmZzMi5jCkBAIC05MSw3ICs5MSw2IEBACiAjaW5jbHVkZSA8Y29tbWFuZC5oPgogI2luY2x1ZGUgPG1hbGxvYy5oPgogI2luY2x1ZGUgPGpmZnMyL2pmZnMyLmg+Ci0jaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CiAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KIApAQCAtOTksMTEgKzk4LDE5IEBACiAKICNpbmNsdWRlIDxjcmFtZnMvY3JhbWZzX2ZzLmg+CiAKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQorI2lmZGVmIENGR19OQU5EX0xFR0FDWQorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgorI2Vsc2UgLyogIUNGR19OQU5EX0xFR0FDWSAqLworI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bmFuZC5oPgorI2VuZGlmIC8qICFDRkdfTkFORF9MRUdBQ1kgKi8KKyNlbmRpZiAvKiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKSAqLwogLyogZW5hYmxlL2Rpc2FibGUgZGVidWdnaW5nIG1lc3NhZ2VzICovCi0jZGVmaW5lCURFQlVHCi0jdW5kZWYJREVCVUcKKyNkZWZpbmUJREVCVUdfSkZGUworI3VuZGVmCURFQlVHX0pGRlMKIAotI2lmZGVmICBERUJVRworI2lmZGVmICBERUJVR19KRkZTCiAjIGRlZmluZSBERUJVR0YoZm10LCBhcmdzLi4uKQlwcmludGYoZm10ICwjI2FyZ3MpCiAjZWxzZQogIyBkZWZpbmUgREVCVUdGKGZtdCwgYXJncy4uLikKQEAgLTEyMyw3ICsxMzAsNyBAQAogCiAvKiB0aGlzIGZsYWcgbmVlZHMgdG8gYmUgc2V0IGluIHBhcnRfaW5mbyBzdHJ1Y3QgbWFza19mbGFncwogICogZmllbGQgZm9yIHJlYWQtb25seSBwYXJ0aXRpb25zICovCi0jZGVmaW5lIE1URF9XUklURUFCTEUJCTEKKyNkZWZpbmUgTVREX1dSSVRFQUJMRV9DTUQJCTEKIAogI2lmZGVmIENPTkZJR19KRkZTMl9DTURMSU5FCiAvKiBkZWZhdWx0IHZhbHVlcyBmb3IgbXRkaWRzIGFuZCBtdGRwYXJ0cyB2YXJpYWJsZXMgKi8KQEAgLTM2NSwxMCArMzcyLDkgQEAKIHsKICNpZiBkZWZpbmVkKENPTkZJR19KRkZTMl9OQU5EKSAmJiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQogCS8qIGluZm8gZm9yIE5BTkQgY2hpcHMgKi8KLQlleHRlcm4gc3RydWN0IG5hbmRfY2hpcCBuYW5kX2Rldl9kZXNjW0NGR19NQVhfTkFORF9ERVZJQ0VdOwotCXN0cnVjdCBuYW5kX2NoaXAgKm5hbmQ7CisJbmFuZF9pbmZvX3QgKm5hbmQ7CiAKLQluYW5kID0gJm5hbmRfZGV2X2Rlc2NbaWQtPm51bV07CisJbmFuZCA9ICZuYW5kX2luZm9baWQtPm51bV07CiAKIAlpZiAoKHVuc2lnbmVkIGxvbmcpKHBhcnQtPm9mZnNldCkgJSBuYW5kLT5lcmFzZXNpemUpIHsKIAkJcHJpbnRmKCIlcyVkOiBwYXJ0aXRpb24gKCVzKSBzdGFydCBvZmZzZXQgYWxpZ25tZW50IGluY29ycmVjdFxuIiwKQEAgLTQ2NCw3ICs0NzAsOSBAQAogCQl9CiAJfQogCisjaWZkZWYgQ0ZHX05BTkRfTEVHQUNZCiAJamZmczJfZnJlZV9jYWNoZShwYXJ0KTsKKyNlbmRpZgogCWxpc3RfZGVsKCZwYXJ0LT5saW5rKTsKIAlmcmVlKHBhcnQpOwogCWRldi0+bnVtX3BhcnRzLS07CkBAIC00OTEsNyArNDk5LDkgQEAKIAlsaXN0X2Zvcl9lYWNoX3NhZmUoZW50cnksIG4sIGhlYWQpIHsKIAkJcGFydF90bXAgPSBsaXN0X2VudHJ5KGVudHJ5LCBzdHJ1Y3QgcGFydF9pbmZvLCBsaW5rKTsKIAorI2lmZGVmIENGR19OQU5EX0xFR0FDWQogCQlqZmZzMl9mcmVlX2NhY2hlKHBhcnRfdG1wKTsKKyNlbmRpZgogCQlsaXN0X2RlbChlbnRyeSk7CiAJCWZyZWUocGFydF90bXApOwogCX0KQEAgLTY0Niw3ICs2NTYsNyBAQAogCS8qIHRlc3QgZm9yIG9wdGlvbnMgKi8KIAltYXNrX2ZsYWdzID0gMDsKIAlpZiAoc3RybmNtcChwLCAicm8iLCAyKSA9PSAwKSB7Ci0JCW1hc2tfZmxhZ3MgfD0gTVREX1dSSVRFQUJMRTsKKwkJbWFza19mbGFncyB8PSBNVERfV1JJVEVBQkxFX0NNRDsKIAkJcCArPSAyOwogCX0KIApAQCAtNzEzLDYgKzcyMyw3IEBACiAJCWlmIChudW0gPCBDRkdfTUFYX0ZMQVNIX0JBTktTKSB7CiAJCQlleHRlcm4gZmxhc2hfaW5mb190IGZsYXNoX2luZm9bXTsKIAkJCSpzaXplID0gZmxhc2hfaW5mb1tudW1dLnNpemU7CisKIAkJCXJldHVybiAwOwogCQl9CiAKQEAgLTcyNCw4ICs3MzUsMTIgQEAKIAl9IGVsc2UgaWYgKHR5cGUgPT0gTVREX0RFVl9UWVBFX05BTkQpIHsKICNpZiBkZWZpbmVkKENPTkZJR19KRkZTMl9OQU5EKSAmJiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQogCQlpZiAobnVtIDwgQ0ZHX01BWF9OQU5EX0RFVklDRSkgeworI2lmbmRlZiBDRkdfTkFORF9MRUdBQ1kKKwkJCSpzaXplID0gbmFuZF9pbmZvW251bV0uc2l6ZTsKKyNlbHNlCiAJCQlleHRlcm4gc3RydWN0IG5hbmRfY2hpcCBuYW5kX2Rldl9kZXNjW0NGR19NQVhfTkFORF9ERVZJQ0VdOwogCQkJKnNpemUgPSBuYW5kX2Rldl9kZXNjW251bV0udG90bGVuOworI2VuZGlmCiAJCQlyZXR1cm4gMDsKIAkJfQogCkBAIC0xMTY5LDcgKzExODQsNyBAQAogCQkJfQogCiAJCQkvKiBybyBtYXNrIGZsYWcgKi8KLQkJCWlmIChwYXJ0LT5tYXNrX2ZsYWdzICYmIE1URF9XUklURUFCTEUpIHsKKwkJCWlmIChwYXJ0LT5tYXNrX2ZsYWdzICYmIE1URF9XUklURUFCTEVfQ01EKSB7CiAJCQkJbGVuID0gMjsKIAkJCQlpZiAobGVuID4gbWF4bGVuKQogCQkJCQlnb3RvIGNsZWFudXA7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX25hbmQuYyBiL2NvbW1vbi9jbWRfbmFuZC5jCmluZGV4IGIwYzAxZDEuLjIxYWRiMWIgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfbmFuZC5jCisrKyBiL2NvbW1vbi9jbWRfbmFuZC5jCkBAIC05LDYgKzksMzg3IEBACiAgKi8KIAogI2luY2x1ZGUgPGNvbW1vbi5oPgorCisKKyNpZm5kZWYgQ0ZHX05BTkRfTEVHQUNZCisvKgorICoKKyAqIE5ldyBOQU5EIHN1cHBvcnQKKyAqCisgKi8KKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCisKKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8d2F0Y2hkb2cuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisKKyNpZmRlZiBDT05GSUdfU0hPV19CT09UX1BST0dSRVNTCisjIGluY2x1ZGUgPHN0YXR1c19sZWQuaD4KKyMgZGVmaW5lIFNIT1dfQk9PVF9QUk9HUkVTUyhhcmcpCXNob3dfYm9vdF9wcm9ncmVzcyhhcmcpCisjZWxzZQorIyBkZWZpbmUgU0hPV19CT09UX1BST0dSRVNTKGFyZykKKyNlbmRpZgorCisjaW5jbHVkZSA8amZmczIvamZmczIuaD4KKyNpbmNsdWRlIDxuYW5kLmg+CisKK2V4dGVybiBuYW5kX2luZm9fdCBuYW5kX2luZm9bXTsgICAgICAgLyogaW5mbyBmb3IgTkFORCBjaGlwcyAqLworCitzdGF0aWMgaW50IG5hbmRfZHVtcF9vb2IobmFuZF9pbmZvX3QgKm5hbmQsIHVsb25nIG9mZikKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuYW5kX2R1bXAobmFuZF9pbmZvX3QgKm5hbmQsIHVsb25nIG9mZikKK3sKKwlpbnQgaTsKKwl1X2NoYXIgKmJ1ZiwgKnA7CisKKwlidWYgPSBtYWxsb2MobmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplKTsKKwlpZiAoIWJ1ZikgeworCQlwdXRzKCJObyBtZW1vcnkgZm9yIHBhZ2UgYnVmZmVyXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCW9mZiAmPSB+KG5hbmQtPm9vYmJsb2NrIC0gMSk7CisJaSA9IG5hbmRfcmVhZF9yYXcobmFuZCwgYnVmLCBvZmYsIG5hbmQtPm9vYmJsb2NrLCBuYW5kLT5vb2JzaXplKTsKKwlpZiAoaSA8IDApIHsKKwkJcHJpbnRmKCJFcnJvciAoJWQpIHJlYWRpbmcgcGFnZSAlMDh4XG4iLCBpLCBvZmYpOworCQlmcmVlKGJ1Zik7CisJCXJldHVybiAxOworCX0KKwlwcmludGYoIlBhZ2UgJTA4eCBkdW1wOlxuIiwgb2ZmKTsKKwlpID0gbmFuZC0+b29iYmxvY2sgPj4gNDsgcCA9IGJ1ZjsKKwl3aGlsZSAoaS0tKSB7CisJCXByaW50ZiggIlx0JTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4IgorCQkJIiAgJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4XG4iLAorCQkJcFswXSwgcFsxXSwgcFsyXSwgcFszXSwgcFs0XSwgcFs1XSwgcFs2XSwgcFs3XSwKKwkJCXBbOF0sIHBbOV0sIHBbMTBdLCBwWzExXSwgcFsxMl0sIHBbMTNdLCBwWzE0XSwgcFsxNV0pOworCQlwICs9IDE2OworCX0KKwlwdXRzKCJPT0I6XG4iKTsKKwlpID0gbmFuZC0+b29ic2l6ZSA+PiAzOworCXdoaWxlIChpLS0pIHsKKwkJcHJpbnRmKCAiXHQlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnhcbiIsCisJCQlwWzBdLCBwWzFdLCBwWzJdLCBwWzNdLCBwWzRdLCBwWzVdLCBwWzZdLCBwWzddKTsKKwkJcCArPSA4OworCX0KKwlmcmVlKGJ1Zik7CisKKwlyZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgdm9pZAorYXJnX29mZl9zaXplKGludCBhcmdjLCBjaGFyICphcmd2W10sIHVsb25nICpvZmYsIHVsb25nICpzaXplLCB1bG9uZyB0b3RzaXplKQoreworCSpvZmYgPSAwOworCSpzaXplID0gMDsKKworI2lmIGRlZmluZWQoQ09ORklHX0pGRlMyX05BTkQpICYmIGRlZmluZWQoQ0ZHX0pGRlNfQ1VTVE9NX1BBUlQpCisJaWYgKGFyZ2MgPj0gMSAmJiBzdHJjbXAoYXJndlswXSwgInBhcnRpdGlvbiIpID09IDApIHsKKwkJaW50IHBhcnRfbnVtOworCQlzdHJ1Y3QgcGFydF9pbmZvICpwYXJ0OworCQljb25zdCBjaGFyICpwYXJ0c3RyOworCisJCWlmIChhcmdjID49IDIpCisJCQlwYXJ0c3RyID0gYXJndlsxXTsKKwkJZWxzZQorCQkJcGFydHN0ciA9IGdldGVudigicGFydGl0aW9uIik7CisKKwkJaWYgKHBhcnRzdHIpCisJCQlwYXJ0X251bSA9IChpbnQpc2ltcGxlX3N0cnRvdWwocGFydHN0ciwgTlVMTCwgMTApOworCQllbHNlCisJCQlwYXJ0X251bSA9IDA7CisKKwkJcGFydCA9IGpmZnMyX3BhcnRfaW5mbyhwYXJ0X251bSk7CisJCWlmIChwYXJ0ID09IE5VTEwpIHsKKwkJCXByaW50ZigiXG5JbnZhbGlkIHBhcnRpdGlvbiAlZFxuIiwgcGFydF9udW0pOworCQkJcmV0dXJuOworCQl9CisJCSpzaXplID0gcGFydC0+c2l6ZTsKKwkJKm9mZiA9ICh1bG9uZylwYXJ0LT5vZmZzZXQ7CisJfSBlbHNlCisjZW5kaWYKKwl7CisJCWlmIChhcmdjID49IDEpCisJCQkqb2ZmID0gKHVsb25nKXNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMF0sIE5VTEwsIDE2KTsKKwkJZWxzZQorCQkJKm9mZiA9IDA7CisKKwkJaWYgKGFyZ2MgPj0gMikKKwkJCSpzaXplID0gKHVsb25nKXNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMV0sIE5VTEwsIDE2KTsKKwkJZWxzZQorCQkJKnNpemUgPSB0b3RzaXplIC0gKm9mZjsKKworCX0KKworfQorCitpbnQgZG9fbmFuZChjbWRfdGJsX3QgKiBjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50IGksIGRldiwgcmV0OworCXVsb25nIGFkZHIsIG9mZiwgc2l6ZTsKKwljaGFyICpjbWQsICpzOworCW5hbmRfaW5mb190ICpuYW5kOworCisJLyogYXQgbGVhc3QgdHdvIGFyZ3VtZW50cyBwbGVhc2UgKi8KKwlpZiAoYXJnYyA8IDIpCisJCWdvdG8gdXNhZ2U7CisKKwljbWQgPSBhcmd2WzFdOworCisJaWYgKHN0cmNtcChjbWQsICJpbmZvIikgPT0gMCkgeworCisJCXB1dGMoJ1xuJyk7CisJCWZvciAoaSA9IDA7IGkgPCBDRkdfTUFYX05BTkRfREVWSUNFOyBpKyspIHsKKwkJCWlmIChuYW5kX2luZm9baV0ubmFtZSkKKwkJCQlwcmludGYoIkRldmljZSAlZDogJXMsIHNlY3RvciBzaXplICVsdSBLaUJcbiIsCisJCQkJCWksIG5hbmRfaW5mb1tpXS5uYW1lLAorCQkJCQluYW5kX2luZm9baV0uZXJhc2VzaXplID4+IDEwKTsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoc3RyY21wKGNtZCwgImRldmljZSIpID09IDApIHsKKworCQlpZiAoYXJnYyA8IDMpIHsKKwkJCWlmICgobmFuZF9jdXJyX2RldmljZSA8IDApIHx8CisJCQkgICAgKG5hbmRfY3Vycl9kZXZpY2UgPj0gQ0ZHX01BWF9OQU5EX0RFVklDRSkpCisJCQkJcHV0cygiXG5ubyBkZXZpY2VzIGF2YWlsYWJsZVxuIik7CisJCQllbHNlCisJCQkJcHJpbnRmKCJcbkRldmljZSAlZDogJXNcbiIsIG5hbmRfY3Vycl9kZXZpY2UsCisJCQkJCW5hbmRfaW5mb1tuYW5kX2N1cnJfZGV2aWNlXS5uYW1lKTsKKwkJCXJldHVybiAwOworCQl9CisJCWRldiA9IChpbnQpc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTApOworCQlpZiAoZGV2IDwgMCB8fCBkZXYgPj0gQ0ZHX01BWF9OQU5EX0RFVklDRSB8fCAhbmFuZF9pbmZvW2Rldl0ubmFtZSkgeworCQkJcHV0cygiTm8gc3VjaCBkZXZpY2VcbiIpOworCQkJcmV0dXJuIDE7CisJCX0KKwkJcHJpbnRmKCJEZXZpY2UgJWQ6ICVzIiwgZGV2LCBuYW5kX2luZm9bZGV2XS5uYW1lKTsKKwkJcHV0cygiLi4uIGlzIG5vdyBjdXJyZW50IGRldmljZVxuIik7CisJCW5hbmRfY3Vycl9kZXZpY2UgPSBkZXY7CisJCXJldHVybiAwOworCX0KKworCWlmIChzdHJjbXAoY21kLCAiYmFkIikgIT0gMCAmJiBzdHJjbXAoY21kLCAiZXJhc2UiKSAhPSAwICYmCisJICAgIHN0cm5jbXAoY21kLCAiZHVtcCIsIDQpICE9IDAgJiYKKwkgICAgc3RybmNtcChjbWQsICJyZWFkIiwgNCkgIT0gMCAmJiBzdHJuY21wKGNtZCwgIndyaXRlIiwgNSkgIT0gMCkKKwkJZ290byB1c2FnZTsKKworCS8qIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgb3BlcmF0ZSBvbiB0aGUgY3VycmVudCBkZXZpY2UgKi8KKwlpZiAobmFuZF9jdXJyX2RldmljZSA8IDAgfHwgbmFuZF9jdXJyX2RldmljZSA+PSBDRkdfTUFYX05BTkRfREVWSUNFIHx8CisJICAgICFuYW5kX2luZm9bbmFuZF9jdXJyX2RldmljZV0ubmFtZSkgeworCQlwdXRzKCJcbm5vIGRldmljZXMgYXZhaWxhYmxlXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCW5hbmQgPSAmbmFuZF9pbmZvW25hbmRfY3Vycl9kZXZpY2VdOworCisJaWYgKHN0cmNtcChjbWQsICJiYWQiKSA9PSAwKSB7CisJCXByaW50ZigiXG5EZXZpY2UgJWQgYmFkIGJsb2NrczpcbiIsIG5hbmRfY3Vycl9kZXZpY2UpOworCQlmb3IgKG9mZiA9IDA7IG9mZiA8IG5hbmQtPnNpemU7IG9mZiArPSBuYW5kLT5lcmFzZXNpemUpCisJCQlpZiAobmFuZF9ibG9ja19pc2JhZChuYW5kLCBvZmYpKQorCQkJCXByaW50ZigiICAlMDh4XG4iLCBvZmYpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoc3RyY21wKGNtZCwgImVyYXNlIikgPT0gMCkgeworCQlhcmdfb2ZmX3NpemUoYXJnYyAtIDIsIGFyZ3YgKyAyLCAmb2ZmLCAmc2l6ZSwgbmFuZC0+c2l6ZSk7CisJCWlmIChvZmYgPT0gMCAmJiBzaXplID09IDApCisJCQlyZXR1cm4gMTsKKworCQlwcmludGYoIlxuTkFORCBlcmFzZTogZGV2aWNlICVkIG9mZnNldCAweCV4LCBzaXplIDB4JXggIiwKKwkJICAgICAgIG5hbmRfY3Vycl9kZXZpY2UsIG9mZiwgc2l6ZSk7CisJCXJldCA9IG5hbmRfZXJhc2UobmFuZCwgb2ZmLCBzaXplKTsKKwkJcHJpbnRmKCIlc1xuIiwgcmV0ID8gIkVSUk9SIiA6ICJPSyIpOworCisJCXJldHVybiByZXQgPT0gMCA/IDAgOiAxOworCX0KKworCWlmIChzdHJuY21wKGNtZCwgImR1bXAiLCA0KSA9PSAwKSB7CisJCWlmIChhcmdjIDwgMykKKwkJCWdvdG8gdXNhZ2U7CisKKwkJcyA9IHN0cmNocihjbWQsICcuJyk7CisJCW9mZiA9IChpbnQpc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTYpOworCisJCWlmIChzICE9IE5VTEwgJiYgc3RyY21wKHMsICIub29iIikgPT0gMCkKKwkJCXJldCA9IG5hbmRfZHVtcF9vb2IobmFuZCwgb2ZmKTsKKwkJZWxzZQorCQkJcmV0ID0gbmFuZF9kdW1wKG5hbmQsIG9mZik7CisKKwkJcmV0dXJuIHJldCA9PSAwID8gMSA6IDA7CisKKwl9CisKKwkvKiByZWFkIHdyaXRlICovCisJaWYgKHN0cm5jbXAoY21kLCAicmVhZCIsIDQpID09IDAgfHwgc3RybmNtcChjbWQsICJ3cml0ZSIsIDUpID09IDApIHsKKwkJaWYgKGFyZ2MgPCA0KQorCQkJZ290byB1c2FnZTsKKy8qCisJCXMgPSBzdHJjaHIoY21kLCAnLicpOworCQljbGVhbiA9IENMRUFOX05PTkU7CisJCWlmIChzICE9IE5VTEwpIHsKKwkJCWlmIChzdHJjbXAocywgIi5qZmZzMiIpID09IDAgfHwgc3RyY21wKHMsICIuZSIpID09IDAKKwkJCSAgICB8fCBzdHJjbXAocywgIi5pIikpCisJCQkJY2xlYW4gPSBDTEVBTl9KRkZTMjsKKwkJfQorKi8KKwkJYWRkciA9ICh1bG9uZylzaW1wbGVfc3RydG91bChhcmd2WzJdLCBOVUxMLCAxNik7CisKKwkJYXJnX29mZl9zaXplKGFyZ2MgLSAzLCBhcmd2ICsgMywgJm9mZiwgJnNpemUsIG5hbmQtPnNpemUpOworCQlpZiAob2ZmID09IDAgJiYgc2l6ZSA9PSAwKQorCQkJcmV0dXJuIDE7CisKKwkJaSA9IHN0cm5jbXAoY21kLCAicmVhZCIsIDQpID09IDA7CS8qIDEgPSByZWFkLCAwID0gd3JpdGUgKi8KKwkJcHJpbnRmKCJcbk5BTkQgJXM6IGRldmljZSAlZCBvZmZzZXQgJXUsIHNpemUgJXUgLi4uICIsCisJCSAgICAgICBpID8gInJlYWQiIDogIndyaXRlIiwgbmFuZF9jdXJyX2RldmljZSwgb2ZmLCBzaXplKTsKKworCQlpZiAoaSkKKwkJCXJldCA9IG5hbmRfcmVhZChuYW5kLCBvZmYsICZzaXplLCAodV9jaGFyICopYWRkcik7CisJCWVsc2UKKwkJCXJldCA9IG5hbmRfd3JpdGUobmFuZCwgb2ZmLCAmc2l6ZSwgKHVfY2hhciAqKWFkZHIpOworCisJCXByaW50ZigiICVkIGJ5dGVzICVzOiAlc1xuIiwgc2l6ZSwKKwkJICAgICAgIGkgPyAicmVhZCIgOiAid3JpdHRlbiIsIHJldCA/ICJFUlJPUiIgOiAiT0siKTsKKworCQlyZXR1cm4gcmV0ID09IDAgPyAwIDogMTsKKwl9Cit1c2FnZToKKwlwcmludGYoIlVzYWdlOlxuJXNcbiIsIGNtZHRwLT51c2FnZSk7CisJcmV0dXJuIDE7Cit9CisKK1VfQk9PVF9DTUQobmFuZCwgNSwgMSwgZG9fbmFuZCwKKwkibmFuZCAgICAtIE5BTkQgc3ViLXN5c3RlbVxuIiwKKwkiaW5mbyAgICAgICAgICAgICAgICAgIC0gc2hvdyBhdmFpbGFibGUgTkFORCBkZXZpY2VzXG4iCisJIm5hbmQgZGV2aWNlIFtkZXZdICAgICAtIHNob3cgb3Igc2V0IGN1cnJlbnQgZGV2aWNlXG4iCisJIm5hbmQgcmVhZFsuamZmczJdICAgICAtIGFkZHIgb2ZmIHNpemVcbiIKKwkibmFuZCB3cml0ZVsuamZmczJdICAgIC0gYWRkciBvZmYgc2l6ZSAtIHJlYWQvd3JpdGUgYHNpemUnIGJ5dGVzIHN0YXJ0aW5nXG4iCisJIiAgICBhdCBvZmZzZXQgYG9mZicgdG8vZnJvbSBtZW1vcnkgYWRkcmVzcyBgYWRkcidcbiIKKwkibmFuZCBlcmFzZSBbY2xlYW5dIFtvZmYgc2l6ZV0gLSBlcmFzZSBgc2l6ZScgYnl0ZXMgZnJvbVxuIgorCSIgICAgb2Zmc2V0IGBvZmYnIChlbnRpcmUgZGV2aWNlIGlmIG5vdCBzcGVjaWZpZWQpXG4iCisJIm5hbmQgYmFkIC0gc2hvdyBiYWQgYmxvY2tzXG4iCisJIm5hbmQgZHVtcFsub29iXSBvZmYgLSBkdW1wIHBhZ2VcbiIKKwkibmFuZCBzY3J1YiAtIHJlYWxseSBjbGVhbiBOQU5EIGVyYXNpbmcgYmFkIGJsb2NrcyAoVU5TQUZFKVxuIgorCSJuYW5kIG1hcmtiYWQgb2ZmIC0gbWFyayBiYWQgYmxvY2sgYXQgb2Zmc2V0IChVTlNBRkUpXG4iCisJIm5hbmQgYml0ZXJyIG9mZiAtIG1ha2UgYSBiaXQgZXJyb3IgYXQgb2Zmc2V0IChVTlNBRkUpXG4iKTsKKworaW50IGRvX25hbmRib290KGNtZF90YmxfdCAqIGNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwljaGFyICpib290X2RldmljZSA9IE5VTEw7CisJY2hhciAqZXA7CisJaW50IGRldjsKKwlpbnQgcjsKKwl1bG9uZyBhZGRyLCBjbnQsIG9mZnNldCA9IDA7CisJaW1hZ2VfaGVhZGVyX3QgKmhkcjsKKwluYW5kX2luZm9fdCAqbmFuZDsKKworCXN3aXRjaCAoYXJnYykgeworCWNhc2UgMToKKwkJYWRkciA9IENGR19MT0FEX0FERFI7CisJCWJvb3RfZGV2aWNlID0gZ2V0ZW52KCJib290ZGV2aWNlIik7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJYWRkciA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMV0sIE5VTEwsIDE2KTsKKwkJYm9vdF9kZXZpY2UgPSBnZXRlbnYoImJvb3RkZXZpY2UiKTsKKwkJYnJlYWs7CisJY2FzZSAzOgorCQlhZGRyID0gc2ltcGxlX3N0cnRvdWwoYXJndlsxXSwgTlVMTCwgMTYpOworCQlib290X2RldmljZSA9IGFyZ3ZbMl07CisJCWJyZWFrOworCWNhc2UgNDoKKwkJYWRkciA9IHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMV0sIE5VTEwsIDE2KTsKKwkJYm9vdF9kZXZpY2UgPSBhcmd2WzJdOworCQlvZmZzZXQgPSBzaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ZigiVXNhZ2U6XG4lc1xuIiwgY21kdHAtPnVzYWdlKTsKKwkJU0hPV19CT09UX1BST0dSRVNTKC0xKTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKCFib290X2RldmljZSkgeworCQlwdXRzKCJcbioqIE5vIGJvb3QgZGV2aWNlICoqXG4iKTsKKwkJU0hPV19CT09UX1BST0dSRVNTKC0xKTsKKwkJcmV0dXJuIDE7CisJfQorCisJZGV2ID0gc2ltcGxlX3N0cnRvdWwoYm9vdF9kZXZpY2UsICZlcCwgMTYpOworCisJaWYgKGRldiA8IDAgfHwgZGV2ID49IENGR19NQVhfTkFORF9ERVZJQ0UgfHwgIW5hbmRfaW5mb1tkZXZdLm5hbWUpIHsKKwkJcHJpbnRmKCJcbioqIERldmljZSAlZCBub3QgYXZhaWxhYmxlXG4iLCBkZXYpOworCQlTSE9XX0JPT1RfUFJPR1JFU1MoLTEpOworCQlyZXR1cm4gMTsKKwl9CisKKwluYW5kID0gJm5hbmRfaW5mb1tkZXZdOworCXByaW50ZigiXG5Mb2FkaW5nIGZyb20gZGV2aWNlICVkOiAlcyAob2Zmc2V0IDB4JWx4KVxuIiwKKwkgICAgICAgZGV2LCBuYW5kLT5uYW1lLCBvZmZzZXQpOworCisJY250ID0gbmFuZC0+b29iYmxvY2s7CisJciA9IG5hbmRfcmVhZChuYW5kLCBvZmZzZXQsICZjbnQsICh1X2NoYXIgKikgYWRkcik7CisJaWYgKHIpIHsKKwkJcHJpbnRmKCIqKiBSZWFkIGVycm9yIG9uICVkXG4iLCBkZXYpOworCQlTSE9XX0JPT1RfUFJPR1JFU1MoLTEpOworCQlyZXR1cm4gMTsKKwl9CisKKwloZHIgPSAoaW1hZ2VfaGVhZGVyX3QgKikgYWRkcjsKKworCWlmIChudG9obChoZHItPmloX21hZ2ljKSAhPSBJSF9NQUdJQykgeworCQlwcmludGYoIlxuKiogQmFkIE1hZ2ljIE51bWJlciAweCV4ICoqXG4iLCBoZHItPmloX21hZ2ljKTsKKwkJU0hPV19CT09UX1BST0dSRVNTKC0xKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcHJpbnRfaW1hZ2VfaGRyKGhkcik7CisKKwljbnQgPSAobnRvaGwoaGRyLT5paF9zaXplKSArIHNpemVvZiAoaW1hZ2VfaGVhZGVyX3QpKTsKKworCXIgPSBuYW5kX3JlYWQobmFuZCwgb2Zmc2V0LCAmY250LCAodV9jaGFyICopIGFkZHIpOworCWlmIChyKSB7CisJCXByaW50ZigiKiogUmVhZCBlcnJvciBvbiAlZFxuIiwgZGV2KTsKKwkJU0hPV19CT09UX1BST0dSRVNTKC0xKTsKKwkJcmV0dXJuIDE7CisJfQorCisJLyogTG9hZGluZyBvaywgdXBkYXRlIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisKKwlsb2FkX2FkZHIgPSBhZGRyOworCisJLyogQ2hlY2sgaWYgd2Ugc2hvdWxkIGF0dGVtcHQgYW4gYXV0by1zdGFydCAqLworCWlmICgoKGVwID0gZ2V0ZW52KCJhdXRvc3RhcnQiKSkgIT0gTlVMTCkgJiYgKHN0cmNtcChlcCwgInllcyIpID09IDApKSB7CisJCWNoYXIgKmxvY2FsX2FyZ3NbMl07CisJCWV4dGVybiBpbnQgZG9fYm9vdG0oY21kX3RibF90ICosIGludCwgaW50LCBjaGFyICpbXSk7CisKKwkJbG9jYWxfYXJnc1swXSA9IGFyZ3ZbMF07CisJCWxvY2FsX2FyZ3NbMV0gPSBOVUxMOworCisJCXByaW50ZigiQXV0b21hdGljIGJvb3Qgb2YgaW1hZ2UgYXQgYWRkciAweCUwOGx4IC4uLlxuIiwgYWRkcik7CisKKwkJZG9fYm9vdG0oY21kdHAsIDAsIDEsIGxvY2FsX2FyZ3MpOworCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1VfQk9PVF9DTUQobmJvb3QsIDQsIDEsIGRvX25hbmRib290LAorCSJuYm9vdCAgIC0gYm9vdCBmcm9tIE5BTkQgZGV2aWNlXG4iLCAibG9hZEFkZHIgZGV2XG4iKTsKKworCisjZW5kaWYJCQkJLyogKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkgKi8KKworI2Vsc2UgLyogQ0ZHX05BTkRfTEVHQUNZICovCisvKgorICoKKyAqIExlZ2FjeSBOQU5EIHN1cHBvcnQgLSB0byBiZSBwaGFzZWQgb3V0CisgKgorICovCiAjaW5jbHVkZSA8Y29tbWFuZC5oPgogI2luY2x1ZGUgPG1hbGxvYy5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgpAQCAtMjIsMTAgKzQwMywxMSBAQAogI2VuZGlmCiAKICNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQotCi0jaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZF9sZWdhY3kuaD4KKyNpZiAwCiAjaW5jbHVkZSA8bGludXgvbXRkL25hbmRfaWRzLmg+CiAjaW5jbHVkZSA8amZmczIvamZmczIuaD4KKyNlbmRpZgogCiAjaWZkZWYgQ09ORklHX09NQVAxNTEwCiB2b2lkIGFyY2hmbGFzaHdwKHZvaWQgKmFyY2hkYXRhLCBpbnQgd3ApOwpAQCAtMzMsMTUgKzQxNSw2IEBACiAKICNkZWZpbmUgUk9VTkRfRE9XTih2YWx1ZSxib3VuZGFyeSkgICAgICAoKHZhbHVlKSAmICh+KChib3VuZGFyeSktMSkpKQogCi0vKgotICogRGVmaW5pdGlvbiBvZiB0aGUgb3V0IG9mIGJhbmQgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUKLSAqLwotc3RydWN0IG5hbmRfb29iX2NvbmZpZyB7Ci0JaW50IGVjY19wb3NbNl07CQkvKiBwb3NpdGlvbiBvZiBFQ0MgYnl0ZXMgaW5zaWRlIG9vYiAqLwotCWludCBiYWRibG9ja19wb3M7CS8qIHBvc2l0aW9uIG9mIGJhZCBibG9jayBmbGFnIGluc2lkZSBvb2IgLTEgPSBpbmFjdGl2ZSAqLwotCWludCBlY2N2YWxpZF9wb3M7CS8qIHBvc2l0aW9uIG9mIEVDQyB2YWxpZCBmbGFnIGluc2lkZSBvb2IgLTEgPSBpbmFjdGl2ZSAqLwotfSBvb2JfY29uZmlnID0geyB7MH0sIDAsIDB9OwotCiAjdW5kZWYJTkFORF9ERUJVRwogI3VuZGVmCVBTWUNIT19ERUJVRwogCkBAIC02Myw0MSArNDM2LDI4IEBACiAjZGVmaW5lIENPTkZJR19NVERfTkFORF9FQ0MgIC8qIGVuYWJsZSBFQ0MgKi8KICNkZWZpbmUgQ09ORklHX01URF9OQU5EX0VDQ19KRkZTMgogCi0vKiBiaXRzIGZvciBuYW5kX3J3KCkgYGNtZCc7IG9yIHRvZ2V0aGVyIGFzIG5lZWRlZCAqLworLyogYml0cyBmb3IgbmFuZF9sZWdhY3lfcncoKSBgY21kJzsgb3IgdG9nZXRoZXIgYXMgbmVlZGVkICovCiAjZGVmaW5lIE5BTkRSV19SRUFECTB4MDEKICNkZWZpbmUgTkFORFJXX1dSSVRFCTB4MDAKICNkZWZpbmUgTkFORFJXX0pGRlMyCTB4MDIKICNkZWZpbmUgTkFORFJXX0pGRlMyX1NLSVAJMHgwNAogCiAvKgotICogRnVuY3Rpb24gUHJvdG90eXBlcworICogSW1wb3J0cyBmcm9tIG5hbmRfbGVnYWN5LmMKICAqLwotc3RhdGljIHZvaWQgbmFuZF9wcmludChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKTsKLWludCBuYW5kX3J3IChzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBpbnQgY21kLAotCSAgICBzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW4sCi0JICAgIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmKTsKLWludCBuYW5kX2VyYXNlKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIHNpemVfdCBvZnMsIHNpemVfdCBsZW4sIGludCBjbGVhbik7Ci1zdGF0aWMgaW50IG5hbmRfcmVhZF9lY2Moc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuLAotCQkgc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKmJ1ZiwgdV9jaGFyICplY2NfY29kZSk7Ci1zdGF0aWMgaW50IG5hbmRfd3JpdGVfZWNjIChzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBzaXplX3QgdG8sIHNpemVfdCBsZW4sCi0JCQkgICBzaXplX3QgKiByZXRsZW4sIGNvbnN0IHVfY2hhciAqIGJ1ZiwgdV9jaGFyICogZWNjX2NvZGUpOwotc3RhdGljIHZvaWQgbmFuZF9wcmludF9iYWQoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCk7Ci1zdGF0aWMgaW50IG5hbmRfcmVhZF9vb2Ioc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgc2l6ZV90IG9mcywgc2l6ZV90IGxlbiwKLQkJIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmKTsKLXN0YXRpYyBpbnQgbmFuZF93cml0ZV9vb2Ioc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgc2l6ZV90IG9mcywgc2l6ZV90IGxlbiwKLQkJIHNpemVfdCAqIHJldGxlbiwgY29uc3QgdV9jaGFyICogYnVmKTsKLXN0YXRpYyBpbnQgTmFuRF9XYWl0UmVhZHkoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IGFsZV93YWl0KTsKLSNpZmRlZiBDT05GSUdfTVREX05BTkRfRUNDCi1zdGF0aWMgaW50IG5hbmRfY29ycmVjdF9kYXRhICh1X2NoYXIgKmRhdCwgdV9jaGFyICpyZWFkX2VjYywgdV9jaGFyICpjYWxjX2VjYyk7Ci1zdGF0aWMgdm9pZCBuYW5kX2NhbGN1bGF0ZV9lY2MgKGNvbnN0IHVfY2hhciAqZGF0LCB1X2NoYXIgKmVjY19jb2RlKTsKLSNlbmRpZgotCi1zdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbQ0ZHX01BWF9OQU5EX0RFVklDRV0gPSB7ezB9fTsKK2V4dGVybiBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbQ0ZHX01BWF9OQU5EX0RFVklDRV07CitleHRlcm4gaW50IGN1cnJfZGV2aWNlOworZXh0ZXJuIGludCBuYW5kX2xlZ2FjeV9lcmFzZShzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBzaXplX3Qgb2ZzLAorCQkJICAgIHNpemVfdCBsZW4sIGludCBjbGVhbik7CitleHRlcm4gaW50IG5hbmRfbGVnYWN5X3J3KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBjbWQsIHNpemVfdCBzdGFydCwKKwkJCSBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgdV9jaGFyICpidWYpOworZXh0ZXJuIHZvaWQgbmFuZF9wcmludChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKTsKK2V4dGVybiB2b2lkIG5hbmRfcHJpbnRfYmFkKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpOworZXh0ZXJuIGludCBuYW5kX3JlYWRfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHNpemVfdCBvZnMsCisJCQkgICAgICAgc2l6ZV90IGxlbiwgc2l6ZV90ICpyZXRsZW4sIHVfY2hhciAqYnVmKTsKK2V4dGVybiBpbnQgbmFuZF93cml0ZV9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgc2l6ZV90IG9mcywKKwkJCQlzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgY29uc3QgdV9jaGFyICpidWYpOwogCi0vKiBDdXJyZW50IE5BTkQgRGV2aWNlCSovCi1zdGF0aWMgaW50IGN1cnJfZGV2aWNlID0gLTE7Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogaW50IGRvX25hbmQgKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogewpAQCAtMTc0LDcgKzUzNCw3IEBACiAJCXByaW50ZiAoIlxuTkFORCBlcmFzZTogZGV2aWNlICVkIG9mZnNldCAlbGQsIHNpemUgJWxkIC4uLiAiLAogCQkJY3Vycl9kZXZpY2UsIG9mZiwgc2l6ZSk7CiAKLQkJcmV0ID0gbmFuZF9lcmFzZSAobmFuZCwgb2ZmLCBzaXplLCAxKTsKKwkJcmV0ID0gbmFuZF9sZWdhY3lfZXJhc2UgKG5hbmQsIG9mZiwgc2l6ZSwgMSk7CiAKIAkJcHJpbnRmKCIlc1xuIiwgcmV0ID8gIkVSUk9SIiA6ICJPSyIpOwogCkBAIC0yNDAsNyArNjAwLDcgQEAKIAkJCShjbWQgJiBOQU5EUldfUkVBRCkgPyAicmVhZCIgOiAid3JpdGUiLAogCQkJY3Vycl9kZXZpY2UsIG9mZiwgc2l6ZSk7CiAKLQkJcmV0ID0gbmFuZF9ydyhuYW5kX2Rldl9kZXNjICsgY3Vycl9kZXZpY2UsIGNtZCwgb2ZmLCBzaXplLAorCQlyZXQgPSBuYW5kX2xlZ2FjeV9ydyhuYW5kX2Rldl9kZXNjICsgY3Vycl9kZXZpY2UsIGNtZCwgb2ZmLCBzaXplLAogCQkJICAgICAoc2l6ZV90ICopJnRvdGFsLCAodV9jaGFyKilhZGRyKTsKIAogCQlwcmludGYgKCIgJWQgYnl0ZXMgJXM6ICVzXG4iLCB0b3RhbCwKQEAgLTI1OCw3ICs2MTgsOCBAQAogCQlwcmludGYgKCJcbk5BTkQgZXJhc2U6IGRldmljZSAlZCBvZmZzZXQgJWxkLCBzaXplICVsZCAuLi4gIiwKIAkJCWN1cnJfZGV2aWNlLCBvZmYsIHNpemUpOwogCi0JCXJldCA9IG5hbmRfZXJhc2UgKG5hbmRfZGV2X2Rlc2MgKyBjdXJyX2RldmljZSwgb2ZmLCBzaXplLCBjbGVhbik7CisJCXJldCA9IG5hbmRfbGVnYWN5X2VyYXNlIChuYW5kX2Rldl9kZXNjICsgY3Vycl9kZXZpY2UsCisJCQkJCW9mZiwgc2l6ZSwgY2xlYW4pOwogCiAJCXByaW50ZigiJXNcbiIsIHJldCA/ICJFUlJPUiIgOiAiT0siKTsKIApAQCAtMzQwLDggKzcwMSw4IEBACiAJCWRldiwgbmFuZF9kZXZfZGVzY1tkZXZdLm5hbWUsIG5hbmRfZGV2X2Rlc2NbZGV2XS5JT19BRERSLAogCQlvZmZzZXQpOwogCi0JaWYgKG5hbmRfcncgKG5hbmRfZGV2X2Rlc2MgKyBkZXYsIE5BTkRSV19SRUFELCBvZmZzZXQsCi0JCSAgICBTRUNUT1JTSVpFLCBOVUxMLCAodV9jaGFyICopYWRkcikpIHsKKwlpZiAobmFuZF9sZWdhY3lfcncgKG5hbmRfZGV2X2Rlc2MgKyBkZXYsIE5BTkRSV19SRUFELCBvZmZzZXQsCisJCQlTRUNUT1JTSVpFLCBOVUxMLCAodV9jaGFyICopYWRkcikpIHsKIAkJcHJpbnRmICgiKiogUmVhZCBlcnJvciBvbiAlZFxuIiwgZGV2KTsKIAkJU0hPV19CT09UX1BST0dSRVNTICgtMSk7CiAJCXJldHVybiAxOwpAQCAtMzU2LDEzICs3MTcsMTQgQEAKIAkJY250ID0gKG50b2hsKGhkci0+aWhfc2l6ZSkgKyBzaXplb2YoaW1hZ2VfaGVhZGVyX3QpKTsKIAkJY250IC09IFNFQ1RPUlNJWkU7CiAJfSBlbHNlIHsKLQkJcHJpbnRmICgiXG4qKiBCYWQgTWFnaWMgTnVtYmVyIDB4JXggKipcbiIsIGhkci0+aWhfbWFnaWMpOworCQlwcmludGYgKCJcbioqIEJhZCBNYWdpYyBOdW1iZXIgMHgleCAqKlxuIiwgbnRvaGwoaGRyLT5paF9tYWdpYykpOwogCQlTSE9XX0JPT1RfUFJPR1JFU1MgKC0xKTsKIAkJcmV0dXJuIDE7CiAJfQogCi0JaWYgKG5hbmRfcncgKG5hbmRfZGV2X2Rlc2MgKyBkZXYsIE5BTkRSV19SRUFELCBvZmZzZXQgKyBTRUNUT1JTSVpFLCBjbnQsCi0JCSAgICBOVUxMLCAodV9jaGFyICopKGFkZHIrU0VDVE9SU0laRSkpKSB7CisJaWYgKG5hbmRfbGVnYWN5X3J3IChuYW5kX2Rldl9kZXNjICsgZGV2LCBOQU5EUldfUkVBRCwKKwkJCW9mZnNldCArIFNFQ1RPUlNJWkUsIGNudCwgTlVMTCwKKwkJCSh1X2NoYXIgKikoYWRkcitTRUNUT1JTSVpFKSkpIHsKIAkJcHJpbnRmICgiKiogUmVhZCBlcnJvciBvbiAlZFxuIiwgZGV2KTsKIAkJU0hPV19CT09UX1BST0dSRVNTICgtMSk7CiAJCXJldHVybiAxOwpAQCAtMzk0LDE1MDUgKzc1Niw2IEBACiAJImxvYWRBZGRyIGRldlxuIgogKTsKIAotLyogcmV0dXJucyAwIGlmIGJsb2NrIGNvbnRhaW5pbmcgcG9zIGlzIE9LOgotICoJCXZhbGlkIGVyYXNlIGJsb2NrIGFuZAotICoJCW5vdCBtYXJrZWQgYmFkLCBvciBubyBiYWQgbWFyayBwb3NpdGlvbiBpcyBzcGVjaWZpZWQKLSAqIHJldHVybnMgMSBpZiBtYXJrZWQgYmFkIG9yIG90aGVyd2lzZSBpbnZhbGlkCi0gKi8KLWludCBjaGVja19ibG9jayAoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgdW5zaWduZWQgbG9uZyBwb3MpCi17Ci0Jc2l6ZV90IHJldGxlbjsKLQl1aW50OF90IG9vYl9kYXRhOwotCXVpbnQxNl90IG9vYl9kYXRhMTZbNl07Ci0JaW50IHBhZ2UwID0gcG9zICYgKC1uYW5kLT5lcmFzZXNpemUpOwotCWludCBwYWdlMSA9IHBhZ2UwICsgbmFuZC0+b29iYmxvY2s7Ci0JaW50IGJhZHBvcyA9IG9vYl9jb25maWcuYmFkYmxvY2tfcG9zOwotCi0JaWYgKHBvcyA+PSBuYW5kLT50b3RsZW4pCi0JCXJldHVybiAxOwotCi0JaWYgKGJhZHBvcyA8IDApCi0JCXJldHVybiAwOwkvKiBubyB3YXkgdG8gY2hlY2ssIGFzc3VtZSBPSyAqLwotCi0JaWYgKG5hbmQtPmJ1czE2KSB7Ci0JCWlmIChuYW5kX3JlYWRfb29iKG5hbmQsIChwYWdlMCArIDApLCAxMiwgJnJldGxlbiwgKHVpbnQ4X3QgKilvb2JfZGF0YTE2KQotCQkgICAgfHwgKG9vYl9kYXRhMTZbMl0gJiAweGZmMDApICE9IDB4ZmYwMCkKLQkJCXJldHVybiAxOwotCQlpZiAobmFuZF9yZWFkX29vYihuYW5kLCAocGFnZTEgKyAwKSwgMTIsICZyZXRsZW4sICh1aW50OF90ICopb29iX2RhdGExNikKLQkJICAgIHx8IChvb2JfZGF0YTE2WzJdICYgMHhmZjAwKSAhPSAweGZmMDApCi0JCQlyZXR1cm4gMTsKLQl9IGVsc2UgewotCQkvKiBOb3RlIC0gYmFkIGJsb2NrIG1hcmtlciBjYW4gYmUgb24gZmlyc3Qgb3Igc2Vjb25kIHBhZ2UgKi8KLQkJaWYgKG5hbmRfcmVhZF9vb2IobmFuZCwgcGFnZTAgKyBiYWRwb3MsIDEsICZyZXRsZW4sICh1bnNpZ25lZCBjaGFyICopJm9vYl9kYXRhKQotCQkgICAgfHwgb29iX2RhdGEgIT0gMHhmZgotCQkgICAgfHwgbmFuZF9yZWFkX29vYiAobmFuZCwgcGFnZTEgKyBiYWRwb3MsIDEsICZyZXRsZW4sICh1bnNpZ25lZCBjaGFyICopJm9vYl9kYXRhKQotCQkgICAgfHwgb29iX2RhdGEgIT0gMHhmZikKLQkJCXJldHVybiAxOwotCX0KLQotCXJldHVybiAwOwotfQotCi0vKiBwcmludCBiYWQgYmxvY2tzIGluIE5BTkQgZmxhc2ggKi8KLXN0YXRpYyB2b2lkIG5hbmRfcHJpbnRfYmFkKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQpCi17Ci0JdW5zaWduZWQgbG9uZyBwb3M7Ci0KLQlmb3IgKHBvcyA9IDA7IHBvcyA8IG5hbmQtPnRvdGxlbjsgcG9zICs9IG5hbmQtPmVyYXNlc2l6ZSkgewotCQlpZiAoY2hlY2tfYmxvY2sobmFuZCwgcG9zKSkKLQkJCXByaW50ZigiIDB4JTguOGx4XG4iLCBwb3MpOwotCX0KLQlwdXRzKCJcbiIpOwotfQotCi0vKiBjbWQ6IDA6IE5BTkRSV19XUklURQkJCXdyaXRlLCBmYWlsIG9uIGJhZCBibG9jawotICoJMTogTkFORFJXX1JFQUQJCQlyZWFkLCBmYWlsIG9uIGJhZCBibG9jawotICoJMjogTkFORFJXX1dSSVRFIHwgTkFORFJXX0pGRlMyCXdyaXRlLCBza2lwIGJhZCBibG9ja3MKLSAqCTM6IE5BTkRSV19SRUFEIHwgTkFORFJXX0pGRlMyCXJlYWQsIGRhdGEgYWxsIDB4ZmYgZm9yIGJhZCBibG9ja3MKLSAqICAgICAgNzogTkFORFJXX1JFQUQgfCBOQU5EUldfSkZGUzIgfCBOQU5EUldfSkZGUzJfU0tJUCByZWFkLCBza2lwIGJhZCBibG9ja3MKLSAqLwotaW50IG5hbmRfcncgKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIGludCBjbWQsCi0JICAgIHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbiwKLQkgICAgc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKiBidWYpCi17Ci0JaW50IHJldCA9IDAsIG4sIHRvdGFsID0gMDsKLQljaGFyIGVjY2J1Zls2XTsKLQkvKiBlYmxrIChvbmNlIHNldCkgaXMgdGhlIHN0YXJ0IG9mIHRoZSBlcmFzZSBibG9jayBjb250YWluaW5nIHRoZQotCSAqIGRhdGEgYmVpbmcgcHJvY2Vzc2VkLgotCSAqLwotCXVuc2lnbmVkIGxvbmcgZWJsayA9IH4wOwkvKiBmb3JjZSBtaXNtYXRjaCBvbiBmaXJzdCBwYXNzICovCi0JdW5zaWduZWQgbG9uZyBlcmFzZXNpemUgPSBuYW5kLT5lcmFzZXNpemU7Ci0KLQl3aGlsZSAobGVuKSB7Ci0JCWlmICgoc3RhcnQgJiAoLWVyYXNlc2l6ZSkpICE9IGVibGspIHsKLQkJCS8qIGhhdmUgY3Jvc3NlZCBpbnRvIG5ldyBlcmFzZSBibG9jaywgZGVhbCB3aXRoCi0JCQkgKiBpdCBpZiBpdCBpcyBzdXJlIG1hcmtlZCBiYWQuCi0JCQkgKi8KLQkJCWVibGsgPSBzdGFydCAmICgtZXJhc2VzaXplKTsgLyogc3RhcnQgb2YgYmxvY2sgKi8KLQkJCWlmIChjaGVja19ibG9jayhuYW5kLCBlYmxrKSkgewotCQkJCWlmIChjbWQgPT0gKE5BTkRSV19SRUFEIHwgTkFORFJXX0pGRlMyKSkgewotCQkJCQl3aGlsZSAobGVuID4gMCAmJgotCQkJCQkgICAgICAgc3RhcnQgLSBlYmxrIDwgZXJhc2VzaXplKSB7Ci0JCQkJCQkqKGJ1ZisrKSA9IDB4ZmY7Ci0JCQkJCQkrK3N0YXJ0OwotCQkJCQkJKyt0b3RhbDsKLQkJCQkJCS0tbGVuOwotCQkJCQl9Ci0JCQkJCWNvbnRpbnVlOwotCQkJCX0gZWxzZSBpZiAoY21kID09IChOQU5EUldfUkVBRCB8IE5BTkRSV19KRkZTMiB8IE5BTkRSV19KRkZTMl9TS0lQKSkgewotCQkJCQlzdGFydCArPSBlcmFzZXNpemU7Ci0JCQkJCWNvbnRpbnVlOwotCQkJCX0gZWxzZSBpZiAoY21kID09IChOQU5EUldfV1JJVEUgfCBOQU5EUldfSkZGUzIpKSB7Ci0JCQkJCS8qIHNraXAgYmFkIGJsb2NrICovCi0JCQkJCXN0YXJ0ICs9IGVyYXNlc2l6ZTsKLQkJCQkJY29udGludWU7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJcmV0ID0gMTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCS8qIFRoZSBFQ0Mgd2lsbCBub3QgYmUgY2FsY3VsYXRlZCBjb3JyZWN0bHkgaWYKLQkJICAgbGVzcyB0aGFuIDUxMiBpcyB3cml0dGVuIG9yIHJlYWQgKi8KLQkJLyogSXMgcmVxdWVzdCBhdCBsZWFzdCA1MTIgYnl0ZXMgQU5EIGl0IHN0YXJ0cyBvbiBhIHByb3BlciBib3VuZHJ5ICovCi0JCWlmKChzdGFydCAhPSBST1VORF9ET1dOKHN0YXJ0LCAweDIwMCkpIHx8IChsZW4gPCAweDIwMCkpCi0JCQlwcmludGYoIldhcm5pbmcgYmxvY2sgd3JpdGVzIHNob3VsZCBiZSBhdCBsZWFzdCA1MTIgYnl0ZXMgYW5kIHN0YXJ0IG9uIGEgNTEyIGJ5dGUgYm91bmRyeVxuIik7Ci0KLQkJaWYgKGNtZCAmIE5BTkRSV19SRUFEKSB7Ci0JCQlyZXQgPSBuYW5kX3JlYWRfZWNjKG5hbmQsIHN0YXJ0LAotCQkJCQkgICBtaW4obGVuLCBlYmxrICsgZXJhc2VzaXplIC0gc3RhcnQpLAotCQkJCQkgICAoc2l6ZV90ICopJm4sICh1X2NoYXIqKWJ1ZiwgKHVfY2hhciAqKWVjY2J1Zik7Ci0JCX0gZWxzZSB7Ci0JCQlyZXQgPSBuYW5kX3dyaXRlX2VjYyhuYW5kLCBzdGFydCwKLQkJCQkJICAgIG1pbihsZW4sIGVibGsgKyBlcmFzZXNpemUgLSBzdGFydCksCi0JCQkJCSAgICAoc2l6ZV90ICopJm4sICh1X2NoYXIqKWJ1ZiwgKHVfY2hhciAqKWVjY2J1Zik7Ci0JCX0KLQotCQlpZiAocmV0KQotCQkJYnJlYWs7Ci0KLQkJc3RhcnQgICs9IG47Ci0JCWJ1ZiAgICs9IG47Ci0JCXRvdGFsICs9IG47Ci0JCWxlbiAgIC09IG47Ci0JfQotCWlmIChyZXRsZW4pCi0JCSpyZXRsZW4gPSB0b3RhbDsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIG5hbmRfcHJpbnQoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCkKLXsKLQlpZiAobmFuZC0+bnVtY2hpcHMgPiAxKSB7Ci0JCXByaW50ZigiJXMgYXQgMHglbHgsXG4iCi0JCSAgICAgICAiXHQgICVkIGNoaXBzICVzLCBzaXplICVkIE1CLCBcbiIKLQkJICAgICAgICJcdCAgdG90YWwgc2l6ZSAlbGQgTUIsIHNlY3RvciBzaXplICVsZCBrQlxuIiwKLQkJICAgICAgIG5hbmQtPm5hbWUsIG5hbmQtPklPX0FERFIsIG5hbmQtPm51bWNoaXBzLAotCQkgICAgICAgbmFuZC0+Y2hpcHNfbmFtZSwgMSA8PCAobmFuZC0+Y2hpcHNoaWZ0IC0gMjApLAotCQkgICAgICAgbmFuZC0+dG90bGVuID4+IDIwLCBuYW5kLT5lcmFzZXNpemUgPj4gMTApOwotCX0KLQllbHNlIHsKLQkJcHJpbnRmKCIlcyBhdCAweCVseCAoIiwgbmFuZC0+Y2hpcHNfbmFtZSwgbmFuZC0+SU9fQUREUik7Ci0JCXByaW50X3NpemUobmFuZC0+dG90bGVuLCAiLCAiKTsKLQkJcHJpbnRfc2l6ZShuYW5kLT5lcmFzZXNpemUsICIgc2VjdG9yKVxuIik7Ci0JfQotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXN0YXRpYyBpbnQgTmFuRF9XYWl0UmVhZHkoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IGFsZV93YWl0KQotewotCS8qIFRoaXMgaXMgaW5saW5lLCB0byBvcHRpbWlzZSB0aGUgY29tbW9uIGNhc2UsIHdoZXJlIGl0J3MgcmVhZHkgaW5zdGFudGx5ICovCi0JaW50IHJldCA9IDA7Ci0KLSNpZmRlZiBOQU5EX05PX1JCCS8qIGluIGNvbmZpZyBmaWxlLCBzaG9ydGVyIGRlbGF5cyBjdXJyZW50bHkgd3JhcCBhY2Nlc3NlcyAqLwotCWlmKGFsZV93YWl0KQotCQlOQU5EX1dBSVRfUkVBRFkobmFuZCk7CS8qIGRvIHRoZSB3b3JzdCBjYXNlIDI1dXMgd2FpdCAqLwotCWVsc2UKLQkJdWRlbGF5KDEwKTsKLSNlbHNlCS8qIGhhcyBmdW5jdGlvbmFsIHIvYiBzaWduYWwgKi8KLQlOQU5EX1dBSVRfUkVBRFkobmFuZCk7Ci0jZW5kaWYKLQlyZXR1cm4gcmV0OwotfQotCi0vKiBOYW5EX0NvbW1hbmQ6IFNlbmQgYSBmbGFzaCBjb21tYW5kIHRvIHRoZSBmbGFzaCBjaGlwICovCi0KLXN0YXRpYyBpbmxpbmUgaW50IE5hbkRfQ29tbWFuZChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1bnNpZ25lZCBjaGFyIGNvbW1hbmQpCi17Ci0JdW5zaWduZWQgbG9uZyBuYW5kcHRyID0gbmFuZC0+SU9fQUREUjsKLQotCS8qIEFzc2VydCB0aGUgQ0xFIChDb21tYW5kIExhdGNoIEVuYWJsZSkgbGluZSB0byB0aGUgZmxhc2ggY2hpcCAqLwotCU5BTkRfQ1RMX1NFVENMRShuYW5kcHRyKTsKLQotCS8qIFNlbmQgdGhlIGNvbW1hbmQgKi8KLQlXUklURV9OQU5EX0NPTU1BTkQoY29tbWFuZCwgbmFuZHB0cik7Ci0KLQkvKiBMb3dlciB0aGUgQ0xFIGxpbmUgKi8KLQlOQU5EX0NUTF9DTFJDTEUobmFuZHB0cik7Ci0KLSNpZmRlZiBOQU5EX05PX1JCCi0JaWYoY29tbWFuZCA9PSBOQU5EX0NNRF9SRVNFVCl7Ci0JCXVfY2hhciByZXRfdmFsOwotCQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfU1RBVFVTKTsKLQkJZG8gewotCQkJcmV0X3ZhbCA9IFJFQURfTkFORChuYW5kcHRyKTsvKiB3YWl0IHRpbGwgcmVhZHkgKi8KLQkJfSB3aGlsZSgocmV0X3ZhbCAmIDB4NDApICE9IDB4NDApOwotCX0KLSNlbmRpZgotCXJldHVybiBOYW5EX1dhaXRSZWFkeShuYW5kLCAwKTsKLX0KLQotLyogTmFuRF9BZGRyZXNzOiBTZXQgdGhlIGN1cnJlbnQgYWRkcmVzcyBmb3IgdGhlIGZsYXNoIGNoaXAgKi8KLQotc3RhdGljIGludCBOYW5EX0FkZHJlc3Moc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IG51bWJ5dGVzLCB1bnNpZ25lZCBsb25nIG9mcykKLXsKLQl1bnNpZ25lZCBsb25nIG5hbmRwdHI7Ci0JaW50IGk7Ci0KLQluYW5kcHRyID0gbmFuZC0+SU9fQUREUjsKKyNlbmRpZiAvKiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKSAqLwogCi0JLyogQXNzZXJ0IHRoZSBBTEUgKEFkZHJlc3MgTGF0Y2ggRW5hYmxlKSBsaW5lIHRvIHRoZSBmbGFzaCBjaGlwICovCi0JTkFORF9DVExfU0VUQUxFKG5hbmRwdHIpOwotCi0JLyogU2VuZCB0aGUgYWRkcmVzcyAqLwotCS8qIERldmljZXMgd2l0aCAyNTYtYnl0ZSBwYWdlIGFyZSBhZGRyZXNzZWQgYXM6Ci0JICogQ29sdW1uIChiaXRzIDAtNyksIFBhZ2UgKGJpdHMgOC0xNSwgMTYtMjMsIDI0LTMxKQotCSAqIHRoZXJlIGlzIG5vIGRldmljZSBvbiB0aGUgbWFya2V0IHdpdGggcGFnZTI1NgotCSAqIGFuZCBtb3JlIHRoYW4gMjQgYml0cy4KLQkgKiBEZXZpY2VzIHdpdGggNTEyLWJ5dGUgcGFnZSBhcmUgYWRkcmVzc2VkIGFzOgotCSAqIENvbHVtbiAoYml0cyAwLTcpLCBQYWdlIChiaXRzIDktMTYsIDE3LTI0LCAyNS0zMSkKLQkgKiAyNS0zMSBpcyBzZW50IG9ubHkgaWYgdGhlIGNoaXAgc3VwcG9ydCBpdC4KLQkgKiBiaXQgOCBjaGFuZ2VzIHRoZSByZWFkIGNvbW1hbmQgdG8gYmUgc2VudAotCSAqIChOQU5EX0NNRF9SRUFEMCBvciBOQU5EX0NNRF9SRUFEMSkuCi0JICovCi0KLQlpZiAobnVtYnl0ZXMgPT0gQUREUl9DT0xVTU4gfHwgbnVtYnl0ZXMgPT0gQUREUl9DT0xVTU5fUEFHRSkKLQkJV1JJVEVfTkFORF9BRERSRVNTKG9mcywgbmFuZHB0cik7Ci0KLQlvZnMgPSBvZnMgPj4gbmFuZC0+cGFnZV9zaGlmdDsKLQotCWlmIChudW1ieXRlcyA9PSBBRERSX1BBR0UgfHwgbnVtYnl0ZXMgPT0gQUREUl9DT0xVTU5fUEFHRSkgewotCQlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+cGFnZWFkcmxlbjsgaSsrLCBvZnMgPSBvZnMgPj4gOCkgewotCQkJV1JJVEVfTkFORF9BRERSRVNTKG9mcywgbmFuZHB0cik7Ci0JCX0KLQl9Ci0KLQkvKiBMb3dlciB0aGUgQUxFIGxpbmUgKi8KLQlOQU5EX0NUTF9DTFJBTEUobmFuZHB0cik7Ci0KLQkvKiBXYWl0IGZvciB0aGUgY2hpcCB0byByZXNwb25kICovCi0JcmV0dXJuIE5hbkRfV2FpdFJlYWR5KG5hbmQsIDEpOwotfQotCi0vKiBOYW5EX1NlbGVjdENoaXA6IFNlbGVjdCBhIGdpdmVuIGZsYXNoIGNoaXAgd2l0aGluIHRoZSBjdXJyZW50IGZsb29yICovCi0KLXN0YXRpYyBpbmxpbmUgaW50IE5hbkRfU2VsZWN0Q2hpcChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgY2hpcCkKLXsKLQkvKiBXYWl0IGZvciBpdCB0byBiZSByZWFkeSAqLwotCXJldHVybiBOYW5EX1dhaXRSZWFkeShuYW5kLCAwKTsKLX0KLQotLyogTmFuRF9JZGVudENoaXA6IElkZW50aWZ5IGEgZ2l2ZW4gTkFORCBjaGlwIGdpdmVuIHtmbG9vcixjaGlwfSAqLwotCi1zdGF0aWMgaW50IE5hbkRfSWRlbnRDaGlwKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBmbG9vciwgaW50IGNoaXApCi17Ci0JaW50IG1mciwgaWQsIGk7Ci0KLQlOQU5EX0VOQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gbG93ICovCi0JLyogUmVzZXQgdGhlIGNoaXAgKi8KLQlpZiAoTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1JFU0VUKSkgewotI2lmZGVmIE5BTkRfREVCVUcKLQkJcHJpbnRmKCJOYW5EX0NvbW1hbmQgKHJlc2V0KSBmb3IgJWQsJWQgcmV0dXJuZWQgdHJ1ZVxuIiwKLQkJICAgICAgIGZsb29yLCBjaGlwKTsKLSNlbmRpZgotCQlOQU5EX0RJU0FCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGhpZ2ggKi8KLQkJcmV0dXJuIDA7Ci0JfQotCi0JLyogUmVhZCB0aGUgTkFORCBjaGlwIElEOiAxLiBTZW5kIFJlYWRJRCBjb21tYW5kICovCi0JaWYgKE5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9SRUFESUQpKSB7Ci0jaWZkZWYgTkFORF9ERUJVRwotCQlwcmludGYoIk5hbkRfQ29tbWFuZCAoUmVhZElEKSBmb3IgJWQsJWQgcmV0dXJuZWQgdHJ1ZVxuIiwKLQkJICAgICAgIGZsb29yLCBjaGlwKTsKLSNlbmRpZgotCQlOQU5EX0RJU0FCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGhpZ2ggKi8KLQkJcmV0dXJuIDA7Ci0JfQotCi0JLyogUmVhZCB0aGUgTkFORCBjaGlwIElEOiAyLiBTZW5kIGFkZHJlc3MgYnl0ZSB6ZXJvICovCi0JTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OLCAwKTsKLQotCS8qIFJlYWQgdGhlIG1hbnVmYWN0dXJlciBhbmQgZGV2aWNlIGlkIGNvZGVzIGZyb20gdGhlIGRldmljZSAqLwotCi0JbWZyID0gUkVBRF9OQU5EKG5hbmQtPklPX0FERFIpOwotCi0JaWQgPSBSRUFEX05BTkQobmFuZC0+SU9fQUREUik7Ci0KLQlOQU5EX0RJU0FCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGhpZ2ggKi8KLQotI2lmZGVmIE5BTkRfREVCVUcKLQlwcmludGYoIk5hbkRfQ29tbWFuZCAoUmVhZElEKSBnb3QgJXggJXhcbiIsIG1mciwgaWQpOwotI2VuZGlmCi0JaWYgKG1mciA9PSAweGZmIHx8IG1mciA9PSAwKSB7Ci0JCS8qIE5vIHJlc3BvbnNlIC0gcmV0dXJuIGZhaWx1cmUgKi8KLQkJcmV0dXJuIDA7Ci0JfQotCi0JLyogQ2hlY2sgaXQncyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgY2hpcCB3ZSBpZGVudGlmaWVkLgotCSAqIE0tU3lzdGVtcyBzYXkgdGhhdCBhbnkgZ2l2ZW4gbmFuZF9jaGlwIGRldmljZSBzaG91bGQgb25seQotCSAqIGNvbnRhaW4gX29uZV8gdHlwZSBvZiBmbGFzaCBwYXJ0LCBhbHRob3VnaCB0aGF0J3Mgbm90IGEKLQkgKiBoYXJkd2FyZSByZXN0cmljdGlvbi4gKi8KLQlpZiAobmFuZC0+bWZyKSB7Ci0JCWlmIChuYW5kLT5tZnIgPT0gbWZyICYmIG5hbmQtPmlkID09IGlkKSB7Ci0JCQlyZXR1cm4gMTsJLyogVGhpcyBpcyBhbm90aGVyIHRoZSBzYW1lIHRoZSBmaXJzdCAqLwotCQl9IGVsc2UgewotCQkJcHJpbnRmKCJGbGFzaCBjaGlwIGF0IGZsb29yICVkLCBjaGlwICVkIGlzIGRpZmZlcmVudDpcbiIsCi0JCQkgICAgICAgZmxvb3IsIGNoaXApOwotCQl9Ci0JfQotCi0JLyogUHJpbnQgYW5kIHN0b3JlIHRoZSBtYW51ZmFjdHVyZXIgYW5kIElEIGNvZGVzLiAqLwotCWZvciAoaSA9IDA7IG5hbmRfZmxhc2hfaWRzW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0JCWlmIChtZnIgPT0gbmFuZF9mbGFzaF9pZHNbaV0ubWFudWZhY3R1cmVfaWQgJiYKLQkJICAgIGlkID09IG5hbmRfZmxhc2hfaWRzW2ldLm1vZGVsX2lkKSB7Ci0jaWZkZWYgTkFORF9ERUJVRwotCQkJcHJpbnRmKCJGbGFzaCBjaGlwIGZvdW5kOlxuXHQgTWFudWZhY3R1cmVyIElEOiAweCUyLjJYLCAiCi0JCQkgICAgICAgIkNoaXAgSUQ6IDB4JTIuMlggKCVzKVxuIiwgbWZyLCBpZCwKLQkJCSAgICAgICBuYW5kX2ZsYXNoX2lkc1tpXS5uYW1lKTsKLSNlbmRpZgotCQkJaWYgKCFuYW5kLT5tZnIpIHsKLQkJCQluYW5kLT5tZnIgPSBtZnI7Ci0JCQkJbmFuZC0+aWQgPSBpZDsKLQkJCQluYW5kLT5jaGlwc2hpZnQgPQotCQkJCSAgICBuYW5kX2ZsYXNoX2lkc1tpXS5jaGlwc2hpZnQ7Ci0JCQkJbmFuZC0+cGFnZTI1NiA9IG5hbmRfZmxhc2hfaWRzW2ldLnBhZ2UyNTY7Ci0JCQkJbmFuZC0+ZWNjc2l6ZSA9IDI1NjsKLQkJCQlpZiAobmFuZC0+cGFnZTI1NikgewotCQkJCQluYW5kLT5vb2JibG9jayA9IDI1NjsKLQkJCQkJbmFuZC0+b29ic2l6ZSA9IDg7Ci0JCQkJCW5hbmQtPnBhZ2Vfc2hpZnQgPSA4OwotCQkJCX0gZWxzZSB7Ci0JCQkJCW5hbmQtPm9vYmJsb2NrID0gNTEyOwotCQkJCQluYW5kLT5vb2JzaXplID0gMTY7Ci0JCQkJCW5hbmQtPnBhZ2Vfc2hpZnQgPSA5OwotCQkJCX0KLQkJCQluYW5kLT5wYWdlYWRybGVuID0gbmFuZF9mbGFzaF9pZHNbaV0ucGFnZWFkcmxlbjsKLQkJCQluYW5kLT5lcmFzZXNpemUgID0gbmFuZF9mbGFzaF9pZHNbaV0uZXJhc2VzaXplOwotCQkJCW5hbmQtPmNoaXBzX25hbWUgPSBuYW5kX2ZsYXNoX2lkc1tpXS5uYW1lOwotCQkJCW5hbmQtPmJ1czE2CSA9IG5hbmRfZmxhc2hfaWRzW2ldLmJ1czE2OwotIAkJCQlyZXR1cm4gMTsKLQkJCX0KLQkJCXJldHVybiAwOwotCQl9Ci0JfQotCi0KLSNpZmRlZiBOQU5EX0RFQlVHCi0JLyogV2UgaGF2ZW4ndCBmdWxseSBpZGVudGlmaWVkIHRoZSBjaGlwLiBQcmludCBhcyBtdWNoIGFzIHdlIGtub3cuICovCi0JcHJpbnRmKCJVbmtub3duIGZsYXNoIGNoaXAgZm91bmQ6ICUyLjJYICUyLjJYXG4iLAotCSAgICAgICBpZCwgbWZyKTsKLSNlbmRpZgotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qIE5hbkRfU2NhbkNoaXBzOiBGaW5kIGFsbCBOQU5EIGNoaXBzIHByZXNlbnQgaW4gYSBuYW5kX2NoaXAsIGFuZCBpZGVudGlmeSB0aGVtICovCi0KLXN0YXRpYyB2b2lkIE5hbkRfU2NhbkNoaXBzKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCi17Ci0JaW50IGZsb29yLCBjaGlwOwotCWludCBudW1jaGlwc1tOQU5EX01BWF9GTE9PUlNdOwotCWludCBtYXhjaGlwcyA9IE5BTkRfTUFYX0NISVBTOwotCWludCByZXQgPSAxOwotCi0JbmFuZC0+bnVtY2hpcHMgPSAwOwotCW5hbmQtPm1mciA9IDA7Ci0JbmFuZC0+aWQgPSAwOwotCi0KLQkvKiBGb3IgZWFjaCBmbG9vciwgZmluZCB0aGUgbnVtYmVyIG9mIHZhbGlkIGNoaXBzIGl0IGNvbnRhaW5zICovCi0JZm9yIChmbG9vciA9IDA7IGZsb29yIDwgTkFORF9NQVhfRkxPT1JTOyBmbG9vcisrKSB7Ci0JCXJldCA9IDE7Ci0JCW51bWNoaXBzW2Zsb29yXSA9IDA7Ci0JCWZvciAoY2hpcCA9IDA7IGNoaXAgPCBtYXhjaGlwcyAmJiByZXQgIT0gMDsgY2hpcCsrKSB7Ci0KLQkJCXJldCA9IE5hbkRfSWRlbnRDaGlwKG5hbmQsIGZsb29yLCBjaGlwKTsKLQkJCWlmIChyZXQpIHsKLQkJCQludW1jaGlwc1tmbG9vcl0rKzsKLQkJCQluYW5kLT5udW1jaGlwcysrOwotCQkJfQotCQl9Ci0JfQotCi0JLyogSWYgdGhlcmUgYXJlIG5vbmUgYXQgYWxsIHRoYXQgd2UgcmVjb2duaXNlLCBiYWlsICovCi0JaWYgKCFuYW5kLT5udW1jaGlwcykgewotI2lmZGVmIE5BTkRfREVCVUcKLQkJcHV0cyAoIk5vIE5BTkQgZmxhc2ggY2hpcHMgcmVjb2duaXNlZC5cbiIpOwotI2VuZGlmCi0JCXJldHVybjsKLQl9Ci0KLQkvKiBBbGxvY2F0ZSBhbiBhcnJheSB0byBob2xkIHRoZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBjaGlwICovCi0JbmFuZC0+Y2hpcHMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBOYW5kKSAqIG5hbmQtPm51bWNoaXBzKTsKLQlpZiAoIW5hbmQtPmNoaXBzKSB7Ci0JCXB1dHMgKCJObyBtZW1vcnkgZm9yIGFsbG9jYXRpbmcgY2hpcCBpbmZvIHN0cnVjdHVyZXNcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JcmV0ID0gMDsKLQotCS8qIEZpbGwgb3V0IHRoZSBjaGlwIGFycmF5IHdpdGgge2Zsb29yLCBjaGlwbm99IGZvciBlYWNoCi0JICogZGV0ZWN0ZWQgY2hpcCBpbiB0aGUgZGV2aWNlLiAqLwotCWZvciAoZmxvb3IgPSAwOyBmbG9vciA8IE5BTkRfTUFYX0ZMT09SUzsgZmxvb3IrKykgewotCQlmb3IgKGNoaXAgPSAwOyBjaGlwIDwgbnVtY2hpcHNbZmxvb3JdOyBjaGlwKyspIHsKLQkJCW5hbmQtPmNoaXBzW3JldF0uZmxvb3IgPSBmbG9vcjsKLQkJCW5hbmQtPmNoaXBzW3JldF0uY2hpcCA9IGNoaXA7Ci0JCQluYW5kLT5jaGlwc1tyZXRdLmN1cmFkciA9IDA7Ci0JCQluYW5kLT5jaGlwc1tyZXRdLmN1cm1vZGUgPSAweDUwOwotCQkJcmV0Kys7Ci0JCX0KLQl9Ci0KLQkvKiBDYWxjdWxhdGUgYW5kIHByaW50IHRoZSB0b3RhbCBzaXplIG9mIHRoZSBkZXZpY2UgKi8KLQluYW5kLT50b3RsZW4gPSBuYW5kLT5udW1jaGlwcyAqICgxIDw8IG5hbmQtPmNoaXBzaGlmdCk7Ci0KLSNpZmRlZiBOQU5EX0RFQlVHCi0JcHJpbnRmKCIlZCBmbGFzaCBjaGlwcyBmb3VuZC4gVG90YWwgbmFuZF9jaGlwIHNpemU6ICVsZCBNQlxuIiwKLQkgICAgICAgbmFuZC0+bnVtY2hpcHMsIG5hbmQtPnRvdGxlbiA+PiAyMCk7Ci0jZW5kaWYKLX0KLQotLyogd2UgbmVlZCB0byBiZSBmYXN0IGhlcmUsIDEgdXMgcGVyIHJlYWQgdHJhbnNsYXRlcyB0byAxIHNlY29uZCBwZXIgbWVnICovCi1zdGF0aWMgdm9pZCBOYW5EX1JlYWRCdWYgKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHVfY2hhciAqIGRhdGFfYnVmLCBpbnQgY250cikKLXsKLQl1bnNpZ25lZCBsb25nIG5hbmRwdHIgPSBuYW5kLT5JT19BRERSOwotCi0JTmFuRF9Db21tYW5kIChuYW5kLCBOQU5EX0NNRF9SRUFEMCk7Ci0KLQlpZiAobmFuZC0+YnVzMTYpIHsKLQkJdTE2IHZhbDsKLQotCQl3aGlsZSAoY250ciA+PSAxNikgewotCQkJdmFsID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gdmFsICYgMHhmZjsKLQkJCSpkYXRhX2J1ZisrID0gdmFsID4+IDg7Ci0JCQl2YWwgPSBSRUFEX05BTkQgKG5hbmRwdHIpOwotCQkJKmRhdGFfYnVmKysgPSB2YWwgJiAweGZmOwotCQkJKmRhdGFfYnVmKysgPSB2YWwgPj4gODsKLQkJCXZhbCA9IFJFQURfTkFORCAobmFuZHB0cik7Ci0JCQkqZGF0YV9idWYrKyA9IHZhbCAmIDB4ZmY7Ci0JCQkqZGF0YV9idWYrKyA9IHZhbCA+PiA4OwotCQkJdmFsID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gdmFsICYgMHhmZjsKLQkJCSpkYXRhX2J1ZisrID0gdmFsID4+IDg7Ci0JCQl2YWwgPSBSRUFEX05BTkQgKG5hbmRwdHIpOwotCQkJKmRhdGFfYnVmKysgPSB2YWwgJiAweGZmOwotCQkJKmRhdGFfYnVmKysgPSB2YWwgPj4gODsKLQkJCXZhbCA9IFJFQURfTkFORCAobmFuZHB0cik7Ci0JCQkqZGF0YV9idWYrKyA9IHZhbCAmIDB4ZmY7Ci0JCQkqZGF0YV9idWYrKyA9IHZhbCA+PiA4OwotCQkJdmFsID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gdmFsICYgMHhmZjsKLQkJCSpkYXRhX2J1ZisrID0gdmFsID4+IDg7Ci0JCQl2YWwgPSBSRUFEX05BTkQgKG5hbmRwdHIpOwotCQkJKmRhdGFfYnVmKysgPSB2YWwgJiAweGZmOwotCQkJKmRhdGFfYnVmKysgPSB2YWwgPj4gODsKLQkJCWNudHIgLT0gMTY7Ci0JCX0KLQotCQl3aGlsZSAoY250ciA+IDApIHsKLQkJCXZhbCA9IFJFQURfTkFORCAobmFuZHB0cik7Ci0JCQkqZGF0YV9idWYrKyA9IHZhbCAmIDB4ZmY7Ci0JCQkqZGF0YV9idWYrKyA9IHZhbCA+PiA4OwotCQkJY250ciAtPSAyOwotCQl9Ci0JfSBlbHNlIHsKLQkJd2hpbGUgKGNudHIgPj0gMTYpIHsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCWNudHIgLT0gMTY7Ci0JCX0KLQotCQl3aGlsZSAoY250ciA+IDApIHsKLQkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKLQkJCWNudHItLTsKLQkJfQotCX0KLX0KLQotLyoKLSAqIE5BTkQgcmVhZCB3aXRoIEVDQwotICovCi1zdGF0aWMgaW50IG5hbmRfcmVhZF9lY2Moc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuLAotCQkgc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKmJ1ZiwgdV9jaGFyICplY2NfY29kZSkKLXsKLQlpbnQgY29sLCBwYWdlOwotCWludCBlY2Nfc3RhdHVzID0gMDsKLSNpZmRlZiBDT05GSUdfTVREX05BTkRfRUNDCi0JaW50IGo7Ci0JaW50IGVjY19mYWlsZWQgPSAwOwotCXVfY2hhciAqZGF0YV9wb2k7Ci0JdV9jaGFyIGVjY19jYWxjWzZdOwotI2VuZGlmCi0KLQkvKiBEbyBub3QgYWxsb3cgcmVhZHMgcGFzdCBlbmQgb2YgZGV2aWNlICovCi0JaWYgKChzdGFydCArIGxlbikgPiBuYW5kLT50b3RsZW4pIHsKLQkJcHJpbnRmICgiJXM6IEF0dGVtcHQgcmVhZCBiZXlvbmQgZW5kIG9mIGRldmljZSAleCAleCAleFxuIiwKLQkJCV9fRlVOQ1RJT05fXywgKHVpbnQpIHN0YXJ0LCAodWludCkgbGVuLCAodWludCkgbmFuZC0+dG90bGVuKTsKLQkJKnJldGxlbiA9IDA7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQkvKiBGaXJzdCB3ZSBjYWxjdWxhdGUgdGhlIHN0YXJ0aW5nIHBhZ2UgKi8KLQkvKnBhZ2UgPSBzaHIoc3RhcnQsIG5hbmQtPnBhZ2Vfc2hpZnQpOyovCi0JcGFnZSA9IHN0YXJ0ID4+IG5hbmQtPnBhZ2Vfc2hpZnQ7Ci0KLQkvKiBHZXQgcmF3IHN0YXJ0aW5nIGNvbHVtbiAqLwotCWNvbCA9IHN0YXJ0ICYgKG5hbmQtPm9vYmJsb2NrIC0gMSk7Ci0KLQkvKiBJbml0aWFsaXplIHJldHVybiB2YWx1ZSAqLwotCSpyZXRsZW4gPSAwOwotCi0JLyogU2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLwotCU5BTkRfRU5BQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBsb3cgKi8KLQotCS8qIExvb3AgdW50aWwgYWxsIGRhdGEgcmVhZCAqLwotCXdoaWxlICgqcmV0bGVuIDwgbGVuKSB7Ci0KLSNpZmRlZiBDT05GSUdfTVREX05BTkRfRUNDCi0JCS8qIERvIHdlIGhhdmUgdGhpcyBwYWdlIGluIGNhY2hlID8gKi8KLQkJaWYgKG5hbmQtPmNhY2hlX3BhZ2UgPT0gcGFnZSkKLQkJCWdvdG8gcmVhZGRhdGE7Ci0JCS8qIFNlbmQgdGhlIHJlYWQgY29tbWFuZCAqLwotCQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfUkVBRDApOwotCQlpZiAobmFuZC0+YnVzMTYpIHsKLSAJCQlOYW5EX0FkZHJlc3MobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwKLQkJCQkgICAgIChwYWdlIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsgKGNvbCA+PiAxKSk7Ci0JCX0gZWxzZSB7Ci0gCQkJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCi0JCQkJICAgICAocGFnZSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArIGNvbCk7Ci0JCX0KLQotCQkvKiBSZWFkIGluIGEgcGFnZSArIG9vYiBkYXRhICovCi0JCU5hbkRfUmVhZEJ1ZihuYW5kLCBuYW5kLT5kYXRhX2J1ZiwgbmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplKTsKLQotCQkvKiBjb3B5IGRhdGEgaW50byBjYWNoZSwgZm9yIHJlYWQgb3V0IG9mIGNhY2hlIGFuZCBpZiBlY2MgZmFpbHMgKi8KLQkJaWYgKG5hbmQtPmRhdGFfY2FjaGUpIHsKLQkJCW1lbWNweSAobmFuZC0+ZGF0YV9jYWNoZSwgbmFuZC0+ZGF0YV9idWYsCi0JCQkJbmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplKTsKLQkJfQotCi0JCS8qIFBpY2sgdGhlIEVDQyBieXRlcyBvdXQgb2YgdGhlIG9vYiBkYXRhICovCi0JCWZvciAoaiA9IDA7IGogPCA2OyBqKyspIHsKLQkJCWVjY19jb2RlW2pdID0gbmFuZC0+ZGF0YV9idWZbKG5hbmQtPm9vYmJsb2NrICsgb29iX2NvbmZpZy5lY2NfcG9zW2pdKV07Ci0JCX0KLQotCQkvKiBDYWxjdWxhdGUgdGhlIEVDQyBhbmQgdmVyaWZ5IGl0ICovCi0JCS8qIElmIGJsb2NrIHdhcyBub3Qgd3JpdHRlbiB3aXRoIEVDQywgc2tpcCBFQ0MgKi8KLQkJaWYgKG9vYl9jb25maWcuZWNjdmFsaWRfcG9zICE9IC0xICYmCi0JCSAgICAobmFuZC0+ZGF0YV9idWZbbmFuZC0+b29iYmxvY2sgKyBvb2JfY29uZmlnLmVjY3ZhbGlkX3Bvc10gJiAweDBmKSAhPSAweDBmKSB7Ci0KLQkJCW5hbmRfY2FsY3VsYXRlX2VjYyAoJm5hbmQtPmRhdGFfYnVmWzBdLCAmZWNjX2NhbGNbMF0pOwotCQkJc3dpdGNoIChuYW5kX2NvcnJlY3RfZGF0YSAoJm5hbmQtPmRhdGFfYnVmWzBdLCAmZWNjX2NvZGVbMF0sICZlY2NfY2FsY1swXSkpIHsKLQkJCWNhc2UgLTE6Ci0JCQkJcHJpbnRmICgiJXM6IEZhaWxlZCBFQ0MgcmVhZCwgcGFnZSAweCUwOHhcbiIsIF9fRlVOQ1RJT05fXywgcGFnZSk7Ci0JCQkJZWNjX2ZhaWxlZCsrOwotCQkJCWJyZWFrOwotCQkJY2FzZSAxOgotCQkJY2FzZSAyOgkvKiB0cmFuc2ZlciBFQ0MgY29ycmVjdGVkIGRhdGEgdG8gY2FjaGUgKi8KLQkJCQlpZiAobmFuZC0+ZGF0YV9jYWNoZSkKLQkJCQkJbWVtY3B5IChuYW5kLT5kYXRhX2NhY2hlLCBuYW5kLT5kYXRhX2J1ZiwgMjU2KTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCi0JCWlmIChvb2JfY29uZmlnLmVjY3ZhbGlkX3BvcyAhPSAtMSAmJgotCQkgICAgbmFuZC0+b29iYmxvY2sgPT0gNTEyICYmIChuYW5kLT5kYXRhX2J1ZltuYW5kLT5vb2JibG9jayArIG9vYl9jb25maWcuZWNjdmFsaWRfcG9zXSAmIDB4ZjApICE9IDB4ZjApIHsKLQotCQkJbmFuZF9jYWxjdWxhdGVfZWNjICgmbmFuZC0+ZGF0YV9idWZbMjU2XSwgJmVjY19jYWxjWzNdKTsKLQkJCXN3aXRjaCAobmFuZF9jb3JyZWN0X2RhdGEgKCZuYW5kLT5kYXRhX2J1ZlsyNTZdLCAmZWNjX2NvZGVbM10sICZlY2NfY2FsY1szXSkpIHsKLQkJCWNhc2UgLTE6Ci0JCQkJcHJpbnRmICgiJXM6IEZhaWxlZCBFQ0MgcmVhZCwgcGFnZSAweCUwOHhcbiIsIF9fRlVOQ1RJT05fXywgcGFnZSk7Ci0JCQkJZWNjX2ZhaWxlZCsrOwotCQkJCWJyZWFrOwotCQkJY2FzZSAxOgotCQkJY2FzZSAyOgkvKiB0cmFuc2ZlciBFQ0MgY29ycmVjdGVkIGRhdGEgdG8gY2FjaGUgKi8KLQkJCQlpZiAobmFuZC0+ZGF0YV9jYWNoZSkKLQkJCQkJbWVtY3B5ICgmbmFuZC0+ZGF0YV9jYWNoZVsyNTZdLCAmbmFuZC0+ZGF0YV9idWZbMjU2XSwgMjU2KTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotcmVhZGRhdGE6Ci0JCS8qIFJlYWQgdGhlIGRhdGEgZnJvbSBFQ0MgZGF0YSBidWZmZXIgaW50byByZXR1cm4gYnVmZmVyICovCi0JCWRhdGFfcG9pID0gKG5hbmQtPmRhdGFfY2FjaGUpID8gbmFuZC0+ZGF0YV9jYWNoZSA6IG5hbmQtPmRhdGFfYnVmOwotCQlkYXRhX3BvaSArPSBjb2w7Ci0JCWlmICgoKnJldGxlbiArIChuYW5kLT5vb2JibG9jayAtIGNvbCkpID49IGxlbikgewotCQkJbWVtY3B5IChidWYgKyAqcmV0bGVuLCBkYXRhX3BvaSwgbGVuIC0gKnJldGxlbik7Ci0JCQkqcmV0bGVuID0gbGVuOwotCQl9IGVsc2UgewotCQkJbWVtY3B5IChidWYgKyAqcmV0bGVuLCBkYXRhX3BvaSwgIG5hbmQtPm9vYmJsb2NrIC0gY29sKTsKLQkJCSpyZXRsZW4gKz0gbmFuZC0+b29iYmxvY2sgLSBjb2w7Ci0JCX0KLQkJLyogU2V0IGNhY2hlIHBhZ2UgYWRkcmVzcywgaW52YWxpZGF0ZSwgaWYgZWNjX2ZhaWxlZCAqLwotCQluYW5kLT5jYWNoZV9wYWdlID0gKG5hbmQtPmRhdGFfY2FjaGUgJiYgIWVjY19mYWlsZWQpID8gcGFnZSA6IC0xOwotCi0JCWVjY19zdGF0dXMgKz0gZWNjX2ZhaWxlZDsKLQkJZWNjX2ZhaWxlZCA9IDA7Ci0KLSNlbHNlCi0JCS8qIFNlbmQgdGhlIHJlYWQgY29tbWFuZCAqLwotCQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfUkVBRDApOwotCQlpZiAobmFuZC0+YnVzMTYpIHsKLQkJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAotCQkJCSAgICAgKHBhZ2UgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKyAoY29sID4+IDEpKTsKLQkJfSBlbHNlIHsKLQkJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAotCQkJCSAgICAgKHBhZ2UgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKyBjb2wpOwotCQl9Ci0KLQkJLyogUmVhZCB0aGUgZGF0YSBkaXJlY3RseSBpbnRvIHRoZSByZXR1cm4gYnVmZmVyICovCi0JCWlmICgoKnJldGxlbiArIChuYW5kLT5vb2JibG9jayAtIGNvbCkpID49IGxlbikgewotCQkJTmFuRF9SZWFkQnVmKG5hbmQsIGJ1ZiArICpyZXRsZW4sIGxlbiAtICpyZXRsZW4pOwotCQkJKnJldGxlbiA9IGxlbjsKLQkJCS8qIFdlJ3JlIGRvbmUgKi8KLQkJCWNvbnRpbnVlOwotCQl9IGVsc2UgewotCQkJTmFuRF9SZWFkQnVmKG5hbmQsIGJ1ZiArICpyZXRsZW4sIG5hbmQtPm9vYmJsb2NrIC0gY29sKTsKLQkJCSpyZXRsZW4gKz0gbmFuZC0+b29iYmxvY2sgLSBjb2w7Ci0JCQl9Ci0jZW5kaWYKLQkJLyogRm9yIHN1YnNlcXVlbnQgcmVhZHMgYWxpZ24gdG8gcGFnZSBib3VuZGFyeS4gKi8KLQkJY29sID0gMDsKLQkJLyogSW5jcmVtZW50IHBhZ2UgYWRkcmVzcyAqLwotCQlwYWdlKys7Ci0JfQotCi0JLyogRGUtc2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLwotCU5BTkRfRElTQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gaGlnaCAqLwotCi0JLyoKLQkgKiBSZXR1cm4gc3VjY2VzcywgaWYgbm8gRUNDIGZhaWx1cmVzLCBlbHNlIC1FSU8KLQkgKiBmcyBkcml2ZXIgd2lsbCB0YWtlIGNhcmUgb2YgdGhhdCwgYmVjYXVzZQotCSAqIHJldGxlbiA9PSBkZXNpcmVkIGxlbiBhbmQgcmVzdWx0ID09IC1FSU8KLQkgKi8KLQlyZXR1cm4gZWNjX3N0YXR1cyA/IC0xIDogMDsKLX0KLQotLyoKLSAqCU5hbmRfcGFnZV9wcm9ncmFtIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHdyaXRlIGFuZCB3cml0ZXYgIQotICovCi1zdGF0aWMgaW50IG5hbmRfd3JpdGVfcGFnZSAoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKLQkJCSAgICBpbnQgcGFnZSwgaW50IGNvbCwgaW50IGxhc3QsIHVfY2hhciAqIGVjY19jb2RlKQotewotCi0JaW50IGk7Ci0JdW5zaWduZWQgbG9uZyBuYW5kcHRyID0gbmFuZC0+SU9fQUREUjsKLQotI2lmZGVmIENPTkZJR19NVERfTkFORF9FQ0MKLSNpZmRlZiBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCi0JaW50IGVjY19ieXRlcyA9IChuYW5kLT5vb2JibG9jayA9PSA1MTIpID8gNiA6IDM7Ci0jZW5kaWYKLSNlbmRpZgotCS8qIHBhZCBvb2IgYXJlYSAqLwotCWZvciAoaSA9IG5hbmQtPm9vYmJsb2NrOyBpIDwgbmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplOyBpKyspCi0JCW5hbmQtPmRhdGFfYnVmW2ldID0gMHhmZjsKLQotI2lmZGVmIENPTkZJR19NVERfTkFORF9FQ0MKLQkvKiBaZXJvIG91dCB0aGUgRUNDIGFycmF5ICovCi0JZm9yIChpID0gMDsgaSA8IDY7IGkrKykKLQkJZWNjX2NvZGVbaV0gPSAweDAwOwotCi0JLyogUmVhZCBiYWNrIHByZXZpb3VzIHdyaXR0ZW4gZGF0YSwgaWYgY29sID4gMCAqLwotCWlmIChjb2wpIHsKLQkJTmFuRF9Db21tYW5kIChuYW5kLCBOQU5EX0NNRF9SRUFEMCk7Ci0JCWlmIChuYW5kLT5idXMxNikgewotCQkJTmFuRF9BZGRyZXNzIChuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAotCQkJCSAgICAgIChwYWdlIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsgKGNvbCA+PiAxKSk7Ci0JCX0gZWxzZSB7Ci0JCQlOYW5EX0FkZHJlc3MgKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCi0JCQkJICAgICAgKHBhZ2UgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKyBjb2wpOwotCQl9Ci0KLQkJaWYgKG5hbmQtPmJ1czE2KSB7Ci0JCQl1MTYgdmFsOwotCi0JCQlmb3IgKGkgPSAwOyBpIDwgY29sOyBpICs9IDIpIHsKLQkJCQl2YWwgPSBSRUFEX05BTkQgKG5hbmRwdHIpOwotCQkJCW5hbmQtPmRhdGFfYnVmW2ldID0gdmFsICYgMHhmZjsKLQkJCQluYW5kLT5kYXRhX2J1ZltpICsgMV0gPSB2YWwgPj4gODsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCWZvciAoaSA9IDA7IGkgPCBjb2w7IGkrKykKLQkJCQluYW5kLT5kYXRhX2J1ZltpXSA9IFJFQURfTkFORCAobmFuZHB0cik7Ci0JCX0KLQl9Ci0KLQkvKiBDYWxjdWxhdGUgYW5kIHdyaXRlIHRoZSBFQ0MgaWYgd2UgaGF2ZSBlbm91Z2ggZGF0YSAqLwotCWlmICgoY29sIDwgbmFuZC0+ZWNjc2l6ZSkgJiYgKGxhc3QgPj0gbmFuZC0+ZWNjc2l6ZSkpIHsKLQkJbmFuZF9jYWxjdWxhdGVfZWNjICgmbmFuZC0+ZGF0YV9idWZbMF0sICYoZWNjX2NvZGVbMF0pKTsKLQkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewotCQkJbmFuZC0+ZGF0YV9idWZbKG5hbmQtPm9vYmJsb2NrICsKLQkJCQkJb29iX2NvbmZpZy5lY2NfcG9zW2ldKV0gPSBlY2NfY29kZVtpXTsKLQkJfQotCQlpZiAob29iX2NvbmZpZy5lY2N2YWxpZF9wb3MgIT0gLTEpIHsKLQkJCW5hbmQtPmRhdGFfYnVmW25hbmQtPm9vYmJsb2NrICsKLQkJCQkgICAgICAgb29iX2NvbmZpZy5lY2N2YWxpZF9wb3NdID0gMHhmMDsKLQkJfQotCX0KLQotCS8qIENhbGN1bGF0ZSBhbmQgd3JpdGUgdGhlIHNlY29uZCBFQ0MgaWYgd2UgaGF2ZSBlbm91Z2ggZGF0YSAqLwotCWlmICgobmFuZC0+b29iYmxvY2sgPT0gNTEyKSAmJiAobGFzdCA9PSBuYW5kLT5vb2JibG9jaykpIHsKLQkJbmFuZF9jYWxjdWxhdGVfZWNjICgmbmFuZC0+ZGF0YV9idWZbMjU2XSwgJihlY2NfY29kZVszXSkpOwotCQlmb3IgKGkgPSAzOyBpIDwgNjsgaSsrKSB7Ci0JCQluYW5kLT5kYXRhX2J1ZlsobmFuZC0+b29iYmxvY2sgKwotCQkJCQlvb2JfY29uZmlnLmVjY19wb3NbaV0pXSA9IGVjY19jb2RlW2ldOwotCQl9Ci0JCWlmIChvb2JfY29uZmlnLmVjY3ZhbGlkX3BvcyAhPSAtMSkgewotCQkJbmFuZC0+ZGF0YV9idWZbbmFuZC0+b29iYmxvY2sgKwotCQkJCSAgICAgICBvb2JfY29uZmlnLmVjY3ZhbGlkX3Bvc10gJj0gMHgwZjsKLQkJfQotCX0KLSNlbmRpZgotCS8qIFByZXBhZCBmb3IgcGFydGlhbCBwYWdlIHByb2dyYW1taW5nICEhISAqLwotCWZvciAoaSA9IDA7IGkgPCBjb2w7IGkrKykKLQkJbmFuZC0+ZGF0YV9idWZbaV0gPSAweGZmOwotCi0JLyogUG9zdHBhZCBmb3IgcGFydGlhbCBwYWdlIHByb2dyYW1taW5nICEhISBvb2IgaXMgYWxyZWFkeSBwYWRkZWQgKi8KLQlmb3IgKGkgPSBsYXN0OyBpIDwgbmFuZC0+b29iYmxvY2s7IGkrKykKLQkJbmFuZC0+ZGF0YV9idWZbaV0gPSAweGZmOwotCi0JLyogU2VuZCBjb21tYW5kIHRvIGJlZ2luIGF1dG8gcGFnZSBwcm9ncmFtbWluZyAqLwotCU5hbkRfQ29tbWFuZCAobmFuZCwgTkFORF9DTURfUkVBRDApOwotCU5hbkRfQ29tbWFuZCAobmFuZCwgTkFORF9DTURfU0VRSU4pOwotCWlmIChuYW5kLT5idXMxNikgewotCQlOYW5EX0FkZHJlc3MgKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCi0JCQkgICAgICAocGFnZSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArIChjb2wgPj4gMSkpOwotCX0gZWxzZSB7Ci0JCU5hbkRfQWRkcmVzcyAobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwKLQkJCSAgICAgIChwYWdlIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsgY29sKTsKLQl9Ci0KLQkvKiBXcml0ZSBvdXQgY29tcGxldGUgcGFnZSBvZiBkYXRhICovCi0JaWYgKG5hbmQtPmJ1czE2KSB7Ci0JCWZvciAoaSA9IDA7IGkgPCAobmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplKTsgaSArPSAyKSB7Ci0JCQlXUklURV9OQU5EIChuYW5kLT5kYXRhX2J1ZltpXSArCi0JCQkJICAgIChuYW5kLT5kYXRhX2J1ZltpICsgMV0gPDwgOCksCi0JCQkJICAgIG5hbmQtPklPX0FERFIpOwotCQl9Ci0JfSBlbHNlIHsKLQkJZm9yIChpID0gMDsgaSA8IChuYW5kLT5vb2JibG9jayArIG5hbmQtPm9vYnNpemUpOyBpKyspCi0JCQlXUklURV9OQU5EIChuYW5kLT5kYXRhX2J1ZltpXSwgbmFuZC0+SU9fQUREUik7Ci0JfQotCi0JLyogU2VuZCBjb21tYW5kIHRvIGFjdHVhbGx5IHByb2dyYW0gdGhlIGRhdGEgKi8KLQlOYW5EX0NvbW1hbmQgKG5hbmQsIE5BTkRfQ01EX1BBR0VQUk9HKTsKLQlOYW5EX0NvbW1hbmQgKG5hbmQsIE5BTkRfQ01EX1NUQVRVUyk7Ci0jaWZkZWYgTkFORF9OT19SQgotCXsKLQkJdV9jaGFyIHJldF92YWw7Ci0KLQkJZG8gewotCQkJcmV0X3ZhbCA9IFJFQURfTkFORCAobmFuZHB0cik7CS8qIHdhaXQgdGlsbCByZWFkeSAqLwotCQl9IHdoaWxlICgocmV0X3ZhbCAmIDB4NDApICE9IDB4NDApOwotCX0KLSNlbmRpZgotCS8qIFNlZSBpZiBkZXZpY2UgdGhpbmtzIGl0IHN1Y2NlZWRlZCAqLwotCWlmIChSRUFEX05BTkQgKG5hbmQtPklPX0FERFIpICYgMHgwMSkgewotCQlwcmludGYgKCIlczogRmFpbGVkIHdyaXRlLCBwYWdlIDB4JTA4eCwgIiwgX19GVU5DVElPTl9fLAotCQkJcGFnZSk7Ci0JCXJldHVybiAtMTsKLQl9Ci0jaWZkZWYgQ09ORklHX01URF9OQU5EX1ZFUklGWV9XUklURQotCS8qCi0JICogVGhlIE5BTkQgZGV2aWNlIGFzc3VtZXMgdGhhdCBpdCBpcyBhbHdheXMgd3JpdGluZyB0bwotCSAqIGEgY2xlYW5seSBlcmFzZWQgcGFnZS4gSGVuY2UsIGl0IHBlcmZvcm1zIGl0cyBpbnRlcm5hbAotCSAqIHdyaXRlIHZlcmlmaWNhdGlvbiBvbmx5IG9uIGJpdHMgdGhhdCB0cmFuc2l0aW9uZWQgZnJvbQotCSAqIDEgdG8gMC4gVGhlIGRldmljZSBkb2VzIE5PVCB2ZXJpZnkgdGhlIHdob2xlIHBhZ2Ugb24gYQotCSAqIGJ5dGUgYnkgYnl0ZSBiYXNpcy4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgcGFnZSB3YXMKLQkgKiBub3QgY29tcGxldGVseSBlcmFzZWQgb3IgdGhlIHBhZ2UgaXMgYmVjb21pbmcgdW51c2FibGUKLQkgKiBkdWUgdG8gd2Vhci4gVGhlIHJlYWQgd2l0aCBFQ0Mgd291bGQgY2F0Y2ggdGhlIGVycm9yCi0JICogbGF0ZXIgd2hlbiB0aGUgRUNDIHBhZ2UgY2hlY2sgZmFpbHMsIGJ1dCB3ZSB3b3VsZCByYXRoZXIKLQkgKiBjYXRjaCBpdCBlYXJseSBpbiB0aGUgcGFnZSB3cml0ZSBzdGFnZS4gQmV0dGVyIHRvIHdyaXRlCi0JICogbm8gZGF0YSB0aGFuIGludmFsaWQgZGF0YS4KLQkgKi8KLQotCS8qIFNlbmQgY29tbWFuZCB0byByZWFkIGJhY2sgdGhlIHBhZ2UgKi8KLQlpZiAoY29sIDwgbmFuZC0+ZWNjc2l6ZSkKLQkJTmFuRF9Db21tYW5kIChuYW5kLCBOQU5EX0NNRF9SRUFEMCk7Ci0JZWxzZQotCQlOYW5EX0NvbW1hbmQgKG5hbmQsIE5BTkRfQ01EX1JFQUQxKTsKLQlpZiAobmFuZC0+YnVzMTYpIHsKLQkJTmFuRF9BZGRyZXNzIChuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAotCQkJICAgICAgKHBhZ2UgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKyAoY29sID4+IDEpKTsKLQl9IGVsc2UgewotCQlOYW5EX0FkZHJlc3MgKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCi0JCQkgICAgICAocGFnZSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArIGNvbCk7Ci0JfQotCi0JLyogTG9vcCB0aHJvdWdoIGFuZCB2ZXJpZnkgdGhlIGRhdGEgKi8KLQlpZiAobmFuZC0+YnVzMTYpIHsKLQkJZm9yIChpID0gY29sOyBpIDwgbGFzdDsgaSA9ICsyKSB7Ci0JCQlpZiAoKG5hbmQtPmRhdGFfYnVmW2ldICsKLQkJCSAgICAgKG5hbmQtPmRhdGFfYnVmW2kgKyAxXSA8PCA4KSkgIT0gUkVBRF9OQU5EIChuYW5kLT5JT19BRERSKSkgewotCQkJCXByaW50ZiAoIiVzOiBGYWlsZWQgd3JpdGUgdmVyaWZ5LCBwYWdlIDB4JTA4eCAiLAotCQkJCQlfX0ZVTkNUSU9OX18sIHBhZ2UpOwotCQkJCXJldHVybiAtMTsKLQkJCX0KLQkJfQotCX0gZWxzZSB7Ci0JCWZvciAoaSA9IGNvbDsgaSA8IGxhc3Q7IGkrKykgewotCQkJaWYgKG5hbmQtPmRhdGFfYnVmW2ldICE9IFJFQURfTkFORCAobmFuZC0+SU9fQUREUikpIHsKLQkJCQlwcmludGYgKCIlczogRmFpbGVkIHdyaXRlIHZlcmlmeSwgcGFnZSAweCUwOHggIiwKLQkJCQkJX19GVU5DVElPTl9fLCBwYWdlKTsKLQkJCQlyZXR1cm4gLTE7Ci0JCQl9Ci0JCX0KLQl9Ci0KLSNpZmRlZiBDT05GSUdfTVREX05BTkRfRUNDCi0JLyoKLQkgKiBXZSBhbHNvIHdhbnQgdG8gY2hlY2sgdGhhdCB0aGUgRUNDIGJ5dGVzIHdyb3RlCi0JICogY29ycmVjdGx5IGZvciB0aGUgc2FtZSByZWFzb25zIHN0YXRlZCBhYm92ZS4KLQkgKi8KLQlOYW5EX0NvbW1hbmQgKG5hbmQsIE5BTkRfQ01EX1JFQURPT0IpOwotCWlmIChuYW5kLT5idXMxNikgewotCQlOYW5EX0FkZHJlc3MgKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCi0JCQkgICAgICAocGFnZSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArIChjb2wgPj4gMSkpOwotCX0gZWxzZSB7Ci0JCU5hbkRfQWRkcmVzcyAobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwKLQkJCSAgICAgIChwYWdlIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsgY29sKTsKLQl9Ci0JaWYgKG5hbmQtPmJ1czE2KSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5vb2JzaXplOyBpICs9IDIpIHsKLQkJCXUxNiB2YWw7Ci0KLQkJCXZhbCA9IFJFQURfTkFORCAobmFuZC0+SU9fQUREUik7Ci0JCQluYW5kLT5kYXRhX2J1ZltpXSA9IHZhbCAmIDB4ZmY7Ci0JCQluYW5kLT5kYXRhX2J1ZltpICsgMV0gPSB2YWwgPj4gODsKLQkJfQotCX0gZWxzZSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5vb2JzaXplOyBpKyspIHsKLQkJCW5hbmQtPmRhdGFfYnVmW2ldID0gUkVBRF9OQU5EIChuYW5kLT5JT19BRERSKTsKLQkJfQotCX0KLQlmb3IgKGkgPSAwOyBpIDwgZWNjX2J5dGVzOyBpKyspIHsKLQkJaWYgKChuYW5kLT5kYXRhX2J1Zlsob29iX2NvbmZpZy5lY2NfcG9zW2ldKV0gIT0gZWNjX2NvZGVbaV0pICYmIGVjY19jb2RlW2ldKSB7Ci0JCQlwcmludGYgKCIlczogRmFpbGVkIEVDQyB3cml0ZSAiCi0JCQkJInZlcmlmeSwgcGFnZSAweCUwOHgsICIKLQkJCQkiJTZpIGJ5dGVzIHdlcmUgc3VjY2VzZnVsXG4iLAotCQkJCV9fRlVOQ1RJT05fXywgcGFnZSwgaSk7Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQl9Ci0jZW5kaWYJLyogQ09ORklHX01URF9OQU5EX0VDQyAqLwotI2VuZGlmCS8qIENPTkZJR19NVERfTkFORF9WRVJJRllfV1JJVEUgKi8KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBuYW5kX3dyaXRlX2VjYyAoc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgc2l6ZV90IHRvLCBzaXplX3QgbGVuLAotCQkJICAgc2l6ZV90ICogcmV0bGVuLCBjb25zdCB1X2NoYXIgKiBidWYsIHVfY2hhciAqIGVjY19jb2RlKQotewotCWludCBpLCBwYWdlLCBjb2wsIGNudCwgcmV0ID0gMDsKLQotCS8qIERvIG5vdCBhbGxvdyB3cml0ZSBwYXN0IGVuZCBvZiBkZXZpY2UgKi8KLQlpZiAoKHRvICsgbGVuKSA+IG5hbmQtPnRvdGxlbikgewotCQlwcmludGYgKCIlczogQXR0ZW1wdCB0byB3cml0ZSBwYXN0IGVuZCBvZiBwYWdlXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JLyogU2hpZnQgdG8gZ2V0IHBhZ2UgKi8KLQlwYWdlID0gKChpbnQpIHRvKSA+PiBuYW5kLT5wYWdlX3NoaWZ0OwotCi0JLyogR2V0IHRoZSBzdGFydGluZyBjb2x1bW4gKi8KLQljb2wgPSB0byAmIChuYW5kLT5vb2JibG9jayAtIDEpOwotCi0JLyogSW5pdGlhbGl6ZSByZXR1cm4gbGVuZ3RoIHZhbHVlICovCi0JKnJldGxlbiA9IDA7Ci0KLQkvKiBTZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCi0jaWZkZWYgQ09ORklHX09NQVAxNTEwCi0JYXJjaGZsYXNod3AoMCwwKTsKLSNlbmRpZgotI2lmZGVmIENGR19OQU5EX1dQCi0JTkFORF9XUF9PRkYoKTsKLSNlbmRpZgotCi0gICAgCU5BTkRfRU5BQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBsb3cgKi8KLQotCS8qIENoZWNrIHRoZSBXUCBiaXQgKi8KLQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfU1RBVFVTKTsKLQlpZiAoIShSRUFEX05BTkQobmFuZC0+SU9fQUREUikgJiAweDgwKSkgewotCQlwcmludGYgKCIlczogRGV2aWNlIGlzIHdyaXRlIHByb3RlY3RlZCEhIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0ID0gLTE7Ci0JCWdvdG8gb3V0OwotCX0KLQotCS8qIExvb3AgdW50aWwgYWxsIGRhdGEgaXMgd3JpdHRlbiAqLwotCXdoaWxlICgqcmV0bGVuIDwgbGVuKSB7Ci0JCS8qIEludmFsaWRhdGUgY2FjaGUsIGlmIHdlIHdyaXRlIHRvIHRoaXMgcGFnZSAqLwotCQlpZiAobmFuZC0+Y2FjaGVfcGFnZSA9PSBwYWdlKQotCQkJbmFuZC0+Y2FjaGVfcGFnZSA9IC0xOwotCi0JCS8qIFdyaXRlIGRhdGEgaW50byBidWZmZXIgKi8KLQkJaWYgKChjb2wgKyBsZW4pID49IG5hbmQtPm9vYmJsb2NrKSB7Ci0JCQlmb3IgKGkgPSBjb2wsIGNudCA9IDA7IGkgPCBuYW5kLT5vb2JibG9jazsgaSsrLCBjbnQrKykgewotCQkJCW5hbmQtPmRhdGFfYnVmW2ldID0gYnVmWygqcmV0bGVuICsgY250KV07Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQlmb3IgKGkgPSBjb2wsIGNudCA9IDA7IGNudCA8IChsZW4gLSAqcmV0bGVuKTsgaSsrLCBjbnQrKykgewotCQkJCW5hbmQtPmRhdGFfYnVmW2ldID0gYnVmWygqcmV0bGVuICsgY250KV07Ci0JCQl9Ci0JCX0KLQkJLyogV2UgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIGZvciB3cml0ZSBhbmQgd3JpdGV2ICEpICovCi0JCXJldCA9IG5hbmRfd3JpdGVfcGFnZSAobmFuZCwgcGFnZSwgY29sLCBpLCBlY2NfY29kZSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKLQotCQkvKiBOZXh0IGRhdGEgc3RhcnQgYXQgcGFnZSBib3VuZGFyeSAqLwotCQljb2wgPSAwOwotCi0JCS8qIFVwZGF0ZSB3cml0dGVuIGJ5dGVzIGNvdW50ICovCi0JCSpyZXRsZW4gKz0gY250OwotCi0JCS8qIEluY3JlbWVudCBwYWdlIGFkZHJlc3MgKi8KLQkJcGFnZSsrOwotCX0KLQotCS8qIFJldHVybiBoYXBweSAqLwotCSpyZXRsZW4gPSBsZW47Ci0KLW91dDoKLQkvKiBEZS1zZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCi0JTkFORF9ESVNBQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBoaWdoICovCi0jaWZkZWYgQ09ORklHX09NQVAxNTEwCi0gICAgCWFyY2hmbGFzaHdwKDAsMSk7Ci0jZW5kaWYKLSNpZmRlZiBDRkdfTkFORF9XUAotCU5BTkRfV1BfT04oKTsKLSNlbmRpZgotCi0JcmV0dXJuIHJldDsKLX0KLQotLyogcmVhZCBmcm9tIHRoZSAxNiBieXRlcyBvZiBvb2IgZGF0YSB0aGF0IGNvcnJlc3BvbmQgdG8gYSA1MTIgYnl0ZQotICogcGFnZSBvciAyIDI1Ni1ieXRlIHBhZ2VzLgotICovCi1zdGF0aWMgaW50IG5hbmRfcmVhZF9vb2Ioc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgc2l6ZV90IG9mcywgc2l6ZV90IGxlbiwKLQkJCSBzaXplX3QgKiByZXRsZW4sIHVfY2hhciAqIGJ1ZikKLXsKLQlpbnQgbGVuMjU2ID0gMDsKLQlzdHJ1Y3QgTmFuZCAqbXljaGlwOwotCWludCByZXQgPSAwOwotCi0JbXljaGlwID0gJm5hbmQtPmNoaXBzW29mcyA+PiBuYW5kLT5jaGlwc2hpZnRdOwotCi0JLyogdXBkYXRlIGFkZHJlc3MgZm9yIDJNIHggOGJpdCBkZXZpY2VzLiBPT0Igc3RhcnRzIG9uIHRoZSBzZWNvbmQgKi8KLQkvKiBwYWdlIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBuYW5kX3JlYWRfZWNjLiAqLwotCWlmIChuYW5kLT5wYWdlMjU2KSB7Ci0JCWlmICghKG9mcyAmIDB4OCkpCi0JCQlvZnMgKz0gMHgxMDA7Ci0JCWVsc2UKLQkJCW9mcyAtPSAweDg7Ci0JfQotCi0JTkFORF9FTkFCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGxvdyAqLwotCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9SRUFET09CKTsKLQlpZiAobmFuZC0+YnVzMTYpIHsKLSAJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAotCQkJICAgICAoKG9mcyA+PiBuYW5kLT5wYWdlX3NoaWZ0KSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArCi0gCQkJCSgob2ZzICYgKG5hbmQtPm9vYmJsb2NrIC0gMSkpID4+IDEpKTsKLQl9IGVsc2UgewotCQlOYW5EX0FkZHJlc3MobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwgb2ZzKTsKLQl9Ci0KLQkvKiB0cmVhdCBjcm9zc2luZyA4LWJ5dGUgT09CIGRhdGEgZm9yIDJNIHggOGJpdCBkZXZpY2VzICovCi0JLyogTm90ZTogZGF0YXNoZWV0IHNheXMgaXQgc2hvdWxkIGF1dG9tYXRpY2FseSB3cmFwIHRvIHRoZSAqLwotCS8qICAgICAgIG5leHQgT09CIGJsb2NrLCBidXQgaXQgZGlkbid0IHdvcmsgaGVyZS4gbWYuICAgICAgKi8KLQlpZiAobmFuZC0+cGFnZTI1NiAmJiBvZnMgKyBsZW4gPiAob2ZzIHwgMHg3KSArIDEpIHsKLQkJbGVuMjU2ID0gKG9mcyB8IDB4NykgKyAxIC0gb2ZzOwotCQlOYW5EX1JlYWRCdWYobmFuZCwgYnVmLCBsZW4yNTYpOwotCi0JCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9SRUFET09CKTsKLQkJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsIG9mcyAmICh+MHgxZmYpKTsKLQl9Ci0KLQlOYW5EX1JlYWRCdWYobmFuZCwgJmJ1ZltsZW4yNTZdLCBsZW4gLSBsZW4yNTYpOwotCi0JKnJldGxlbiA9IGxlbjsKLQkvKiBSZWFkaW5nIHRoZSBmdWxsIE9PQiBkYXRhIGRyb3BzIHVzIG9mZiBvZiB0aGUgZW5kIG9mIHRoZSBwYWdlLAotCSAqIGNhdXNpbmcgdGhlIGZsYXNoIGRldmljZSB0byBnbyBpbnRvIGJ1c3kgbW9kZSwgc28gd2UgbmVlZAotCSAqIHRvIHdhaXQgdW50aWwgcmVhZHkgMTEuNC4xIGFuZCBUb3NoaWJhIFRDNTgyNTZGVCBuYW5kcyAqLwotCi0JcmV0ID0gTmFuRF9XYWl0UmVhZHkobmFuZCwgMSk7Ci0JTkFORF9ESVNBQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBoaWdoICovCi0KLQlyZXR1cm4gcmV0OwotCi19Ci0KLS8qIHdyaXRlIHRvIHRoZSAxNiBieXRlcyBvZiBvb2IgZGF0YSB0aGF0IGNvcnJlc3BvbmQgdG8gYSA1MTIgYnl0ZQotICogcGFnZSBvciAyIDI1Ni1ieXRlIHBhZ2VzLgotICovCi1zdGF0aWMgaW50IG5hbmRfd3JpdGVfb29iKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIHNpemVfdCBvZnMsIHNpemVfdCBsZW4sCi0JCSAgc2l6ZV90ICogcmV0bGVuLCBjb25zdCB1X2NoYXIgKiBidWYpCi17Ci0JaW50IGxlbjI1NiA9IDA7Ci0JaW50IGk7Ci0JdW5zaWduZWQgbG9uZyBuYW5kcHRyID0gbmFuZC0+SU9fQUREUjsKLQotI2lmZGVmIFBTWUNIT19ERUJVRwotCXByaW50ZigibmFuZF93cml0ZV9vb2IoJWx4LCAlZCk6ICUyLjJYICUyLjJYICUyLjJYICUyLjJYIC4uLiAlMi4yWCAlMi4yWCAuLiAlMi4yWCAlMi4yWFxuIiwKLQkgICAgICAgKGxvbmcpb2ZzLCBsZW4sIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0sIGJ1ZlszXSwKLQkgICAgICAgYnVmWzhdLCBidWZbOV0sIGJ1ZlsxNF0sYnVmWzE1XSk7Ci0jZW5kaWYKLQotCU5BTkRfRU5BQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBsb3cgdG8gZW5hYmxlIGNoaXAgKi8KLQotCS8qIFJlc2V0IHRoZSBjaGlwICovCi0JTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1JFU0VUKTsKLQotCS8qIGlzc3VlIHRoZSBSZWFkMiBjb21tYW5kIHRvIHNldCB0aGUgcG9pbnRlciB0byB0aGUgU3BhcmUgRGF0YSBBcmVhLiAqLwotCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9SRUFET09CKTsKLQlpZiAobmFuZC0+YnVzMTYpIHsKLSAJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAotCQkJICAgICAoKG9mcyA+PiBuYW5kLT5wYWdlX3NoaWZ0KSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArCi0gCQkJCSgob2ZzICYgKG5hbmQtPm9vYmJsb2NrIC0gMSkpID4+IDEpKTsKLQl9IGVsc2UgewotIAkJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsIG9mcyk7Ci0JfQotCi0JLyogdXBkYXRlIGFkZHJlc3MgZm9yIDJNIHggOGJpdCBkZXZpY2VzLiBPT0Igc3RhcnRzIG9uIHRoZSBzZWNvbmQgKi8KLQkvKiBwYWdlIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBuYW5kX3JlYWRfZWNjLiAqLwotCWlmIChuYW5kLT5wYWdlMjU2KSB7Ci0JCWlmICghKG9mcyAmIDB4OCkpCi0JCQlvZnMgKz0gMHgxMDA7Ci0JCWVsc2UKLQkJCW9mcyAtPSAweDg7Ci0JfQotCi0JLyogaXNzdWUgdGhlIFNlcmlhbCBEYXRhIEluIGNvbW1hbmQgdG8gaW5pdGlhbCB0aGUgUGFnZSBQcm9ncmFtIHByb2Nlc3MgKi8KLQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfU0VRSU4pOwotCWlmIChuYW5kLT5idXMxNikgewotIAkJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCi0JCQkgICAgICgob2ZzID4+IG5hbmQtPnBhZ2Vfc2hpZnQpIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsKLSAJCQkJKChvZnMgJiAobmFuZC0+b29iYmxvY2sgLSAxKSkgPj4gMSkpOwotCX0gZWxzZSB7Ci0gCQlOYW5EX0FkZHJlc3MobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwgb2ZzKTsKLQl9Ci0KLQkvKiB0cmVhdCBjcm9zc2luZyA4LWJ5dGUgT09CIGRhdGEgZm9yIDJNIHggOGJpdCBkZXZpY2VzICovCi0JLyogTm90ZTogZGF0YXNoZWV0IHNheXMgaXQgc2hvdWxkIGF1dG9tYXRpY2FseSB3cmFwIHRvIHRoZSAqLwotCS8qICAgICAgIG5leHQgT09CIGJsb2NrLCBidXQgaXQgZGlkbid0IHdvcmsgaGVyZS4gbWYuICAgICAgKi8KLQlpZiAobmFuZC0+cGFnZTI1NiAmJiBvZnMgKyBsZW4gPiAob2ZzIHwgMHg3KSArIDEpIHsKLQkJbGVuMjU2ID0gKG9mcyB8IDB4NykgKyAxIC0gb2ZzOwotCQlmb3IgKGkgPSAwOyBpIDwgbGVuMjU2OyBpKyspCi0JCQlXUklURV9OQU5EKGJ1ZltpXSwgbmFuZHB0cik7Ci0KLQkJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1BBR0VQUk9HKTsKLQkJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1NUQVRVUyk7Ci0jaWZkZWYgTkFORF9OT19SQgotICAgCQl7IHVfY2hhciByZXRfdmFsOwotCQkJZG8gewotCQkJCXJldF92YWwgPSBSRUFEX05BTkQobmFuZHB0cik7IC8qIHdhaXQgdGlsbCByZWFkeSAqLwotCQkJfSB3aGlsZSAoKHJldF92YWwgJiAweDQwKSAhPSAweDQwKTsKLQkJfQotI2VuZGlmCi0JCWlmIChSRUFEX05BTkQobmFuZHB0cikgJiAxKSB7Ci0JCQlwdXRzICgiRXJyb3IgcHJvZ3JhbW1pbmcgb29iIGRhdGFcbiIpOwotCQkJLyogVGhlcmUgd2FzIGFuIGVycm9yICovCi0JCQlOQU5EX0RJU0FCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGhpZ2ggKi8KLQkJCSpyZXRsZW4gPSAwOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0JCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9TRVFJTik7Ci0JCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLCBvZnMgJiAofjB4MWZmKSk7Ci0JfQotCi0JaWYgKG5hbmQtPmJ1czE2KSB7Ci0JCWZvciAoaSA9IGxlbjI1NjsgaSA8IGxlbjsgaSArPSAyKSB7Ci0JCQlXUklURV9OQU5EKGJ1ZltpXSArIChidWZbaSsxXSA8PCA4KSwgbmFuZHB0cik7Ci0JCX0KLQl9IGVsc2UgewotCQlmb3IgKGkgPSBsZW4yNTY7IGkgPCBsZW47IGkrKykKLQkJCVdSSVRFX05BTkQoYnVmW2ldLCBuYW5kcHRyKTsKLQl9Ci0KLQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfUEFHRVBST0cpOwotCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9TVEFUVVMpOwotI2lmZGVmIE5BTkRfTk9fUkIKLQl7CXVfY2hhciByZXRfdmFsOwotCQlkbyB7Ci0JCQlyZXRfdmFsID0gUkVBRF9OQU5EKG5hbmRwdHIpOyAvKiB3YWl0IHRpbGwgcmVhZHkgKi8KLQkJfSB3aGlsZSAoKHJldF92YWwgJiAweDQwKSAhPSAweDQwKTsKLQl9Ci0jZW5kaWYKLQlpZiAoUkVBRF9OQU5EKG5hbmRwdHIpICYgMSkgewotCQlwdXRzICgiRXJyb3IgcHJvZ3JhbW1pbmcgb29iIGRhdGFcbiIpOwotCQkvKiBUaGVyZSB3YXMgYW4gZXJyb3IgKi8KLQkJTkFORF9ESVNBQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBoaWdoICovCi0JCSpyZXRsZW4gPSAwOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JTkFORF9ESVNBQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBoaWdoICovCi0JKnJldGxlbiA9IGxlbjsKLQlyZXR1cm4gMDsKLQotfQotCi1pbnQgbmFuZF9lcmFzZShzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBzaXplX3Qgb2ZzLCBzaXplX3QgbGVuLCBpbnQgY2xlYW4pCi17Ci0JLyogVGhpcyBpcyBkZWZpbmVkIGFzIGEgc3RydWN0dXJlIHNvIGl0IHdpbGwgd29yayBvbiBhbnkgc3lzdGVtCi0JICogdXNpbmcgbmF0aXZlIGVuZGlhbiBqZmZzMiAodGhlIGRlZmF1bHQpLgotCSAqLwotCXN0YXRpYyBzdHJ1Y3QgamZmczJfdW5rbm93bl9ub2RlIGNsZWFuX21hcmtlciA9IHsKLQkJSkZGUzJfTUFHSUNfQklUTUFTSywKLQkJSkZGUzJfTk9ERVRZUEVfQ0xFQU5NQVJLRVIsCi0JCTgJCS8qIDggYnl0ZXMgaW4gdGhpcyBub2RlICovCi0JfTsKLQl1bnNpZ25lZCBsb25nIG5hbmRwdHI7Ci0Jc3RydWN0IE5hbmQgKm15Y2hpcDsKLQlpbnQgcmV0ID0gMDsKLQotCWlmIChvZnMgJiAobmFuZC0+ZXJhc2VzaXplLTEpIHx8IGxlbiAmIChuYW5kLT5lcmFzZXNpemUtMSkpIHsKLQkJcHJpbnRmICgiT2Zmc2V0IGFuZCBzaXplIG11c3QgYmUgc2VjdG9yIGFsaWduZWQsIGVyYXNlc2l6ZSA9ICVkXG4iLAotCQkJKGludCkgbmFuZC0+ZXJhc2VzaXplKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCW5hbmRwdHIgPSBuYW5kLT5JT19BRERSOwotCi0JLyogU2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLwotI2lmZGVmIENPTkZJR19PTUFQMTUxMAotCWFyY2hmbGFzaHdwKDAsMCk7Ci0jZW5kaWYKLSNpZmRlZiBDRkdfTkFORF9XUAotCU5BTkRfV1BfT0ZGKCk7Ci0jZW5kaWYKLSAgICBOQU5EX0VOQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gbG93ICovCi0KLQkvKiBDaGVjayB0aGUgV1AgYml0ICovCi0JTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1NUQVRVUyk7Ci0JaWYgKCEoUkVBRF9OQU5EKG5hbmQtPklPX0FERFIpICYgMHg4MCkpIHsKLQkJcHJpbnRmICgibmFuZF93cml0ZV9lY2M6IERldmljZSBpcyB3cml0ZSBwcm90ZWN0ZWQhISFcbiIpOwotCQlyZXQgPSAtMTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JLyogQ2hlY2sgdGhlIFdQIGJpdCAqLwotCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9TVEFUVVMpOwotCWlmICghKFJFQURfTkFORChuYW5kLT5JT19BRERSKSAmIDB4ODApKSB7Ci0JCXByaW50ZiAoIiVzOiBEZXZpY2UgaXMgd3JpdGUgcHJvdGVjdGVkISEhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXQgPSAtMTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JLyogRklYTUU6IERvIG5hbmQgaW4gdGhlIGJhY2tncm91bmQuIFVzZSB0aW1lcnMgb3Igc2NoZWR1bGVfdGFzaygpICovCi0Jd2hpbGUobGVuKSB7Ci0JCS8qbXljaGlwID0gJm5hbmQtPmNoaXBzW3NocihvZnMsIG5hbmQtPmNoaXBzaGlmdCldOyovCi0JCW15Y2hpcCA9ICZuYW5kLT5jaGlwc1tvZnMgPj4gbmFuZC0+Y2hpcHNoaWZ0XTsKLQotCQkvKiBhbHdheXMgY2hlY2sgZm9yIGJhZCBibG9jayBmaXJzdCwgZ2VudWluZSBiYWQgYmxvY2tzCi0JCSAqIHNob3VsZCBfbmV2ZXJfICBiZSBlcmFzZWQuCi0JCSAqLwotCQlpZiAoQUxMT1dfRVJBU0VfQkFEX0RFQlVHIHx8ICFjaGVja19ibG9jayhuYW5kLCBvZnMpKSB7Ci0JCQkvKiBTZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCi0JCQlOQU5EX0VOQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gbG93ICovCi0KLQkJCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9FUkFTRTEpOwotCQkJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfUEFHRSwgb2ZzKTsKLQkJCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9FUkFTRTIpOwotCi0JCQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfU1RBVFVTKTsKLQotI2lmZGVmIE5BTkRfTk9fUkIKLQkJCXsJdV9jaGFyIHJldF92YWw7Ci0JCQkJZG8gewotCQkJCQlyZXRfdmFsID0gUkVBRF9OQU5EKG5hbmRwdHIpOyAvKiB3YWl0IHRpbGwgcmVhZHkgKi8KLQkJCQl9IHdoaWxlICgocmV0X3ZhbCAmIDB4NDApICE9IDB4NDApOwotCQkJfQotI2VuZGlmCi0JCQlpZiAoUkVBRF9OQU5EKG5hbmRwdHIpICYgMSkgewotCQkJCXByaW50ZiAoIiVzOiBFcnJvciBlcmFzaW5nIGF0IDB4JWx4XG4iLAotCQkJCQlfX0ZVTkNUSU9OX18sIChsb25nKW9mcyk7Ci0JCQkJLyogVGhlcmUgd2FzIGFuIGVycm9yICovCi0JCQkJcmV0ID0gLTE7Ci0JCQkJZ290byBvdXQ7Ci0JCQl9Ci0JCQlpZiAoY2xlYW4pIHsKLQkJCQlpbnQgbjsJLyogcmV0dXJuIHZhbHVlIG5vdCB1c2VkICovCi0JCQkJaW50IHAsIGw7Ci0KLQkJCQkvKiBjbGVhbiBtYXJrZXIgcG9zaXRpb24gYW5kIHNpemUgZGVwZW5kCi0JCQkJICogb24gdGhlIHBhZ2Ugc2l6ZSwgc2luY2UgMjU2IGJ5dGUgcGFnZXMKLQkJCQkgKiBvbmx5IGhhdmUgOCBieXRlcyBvZiBvb2IgZGF0YQotCQkJCSAqLwotCQkJCWlmIChuYW5kLT5wYWdlMjU2KSB7Ci0JCQkJCXAgPSBOQU5EX0pGRlMyX09PQjhfRlNEQVBPUzsKLQkJCQkJbCA9IE5BTkRfSkZGUzJfT09COF9GU0RBTEVOOwotCQkJCX0gZWxzZSB7Ci0JCQkJCXAgPSBOQU5EX0pGRlMyX09PQjE2X0ZTREFQT1M7Ci0JCQkJCWwgPSBOQU5EX0pGRlMyX09PQjE2X0ZTREFMRU47Ci0JCQkJfQotCi0JCQkJcmV0ID0gbmFuZF93cml0ZV9vb2IobmFuZCwgb2ZzICsgcCwgbCwgKHNpemVfdCAqKSZuLAotCQkJCQkJICAgICAodV9jaGFyICopJmNsZWFuX21hcmtlcik7Ci0JCQkJLyogcXVpdCBoZXJlIGlmIHdyaXRlIGZhaWxlZCAqLwotCQkJCWlmIChyZXQpCi0JCQkJCWdvdG8gb3V0OwotCQkJfQotCQl9Ci0JCW9mcyArPSBuYW5kLT5lcmFzZXNpemU7Ci0JCWxlbiAtPSBuYW5kLT5lcmFzZXNpemU7Ci0JfQotCi1vdXQ6Ci0JLyogRGUtc2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLwotCU5BTkRfRElTQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gaGlnaCAqLwotI2lmZGVmIENPTkZJR19PTUFQMTUxMAotICAgIAlhcmNoZmxhc2h3cCgwLDEpOwotI2VuZGlmCi0jaWZkZWYgQ0ZHX05BTkRfV1AKLQlOQU5EX1dQX09OKCk7Ci0jZW5kaWYKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50IG5hbmRjaGVjayh1bnNpZ25lZCBsb25nIHBvdGVudGlhbCwgdW5zaWduZWQgbG9uZyBwaHlzYWRyKQotewotCXJldHVybiAwOwotfQotCi11bnNpZ25lZCBsb25nIG5hbmRfcHJvYmUodW5zaWduZWQgbG9uZyBwaHlzYWRyKQotewotCXN0cnVjdCBuYW5kX2NoaXAgKm5hbmQgPSBOVUxMOwotCWludCBpID0gMCwgQ2hpcElEID0gMTsKLQotI2lmZGVmIENPTkZJR19NVERfTkFORF9FQ0NfSkZGUzIKLQlvb2JfY29uZmlnLmVjY19wb3NbMF0gPSBOQU5EX0pGRlMyX09PQl9FQ0NQT1MwOwotCW9vYl9jb25maWcuZWNjX3Bvc1sxXSA9IE5BTkRfSkZGUzJfT09CX0VDQ1BPUzE7Ci0Jb29iX2NvbmZpZy5lY2NfcG9zWzJdID0gTkFORF9KRkZTMl9PT0JfRUNDUE9TMjsKLQlvb2JfY29uZmlnLmVjY19wb3NbM10gPSBOQU5EX0pGRlMyX09PQl9FQ0NQT1MzOwotCW9vYl9jb25maWcuZWNjX3Bvc1s0XSA9IE5BTkRfSkZGUzJfT09CX0VDQ1BPUzQ7Ci0Jb29iX2NvbmZpZy5lY2NfcG9zWzVdID0gTkFORF9KRkZTMl9PT0JfRUNDUE9TNTsKLQlvb2JfY29uZmlnLmVjY3ZhbGlkX3BvcyA9IDQ7Ci0jZWxzZQotCW9vYl9jb25maWcuZWNjX3Bvc1swXSA9IE5BTkRfTk9PQl9FQ0NQT1MwOwotCW9vYl9jb25maWcuZWNjX3Bvc1sxXSA9IE5BTkRfTk9PQl9FQ0NQT1MxOwotCW9vYl9jb25maWcuZWNjX3Bvc1syXSA9IE5BTkRfTk9PQl9FQ0NQT1MyOwotCW9vYl9jb25maWcuZWNjX3Bvc1szXSA9IE5BTkRfTk9PQl9FQ0NQT1MzOwotCW9vYl9jb25maWcuZWNjX3Bvc1s0XSA9IE5BTkRfTk9PQl9FQ0NQT1M0OwotCW9vYl9jb25maWcuZWNjX3Bvc1s1XSA9IE5BTkRfTk9PQl9FQ0NQT1M1OwotCW9vYl9jb25maWcuZWNjdmFsaWRfcG9zID0gTkFORF9OT09CX0VDQ1ZQT1M7Ci0jZW5kaWYKLQlvb2JfY29uZmlnLmJhZGJsb2NrX3BvcyA9IDU7Ci0KLQlmb3IgKGk9MDsgaTxDRkdfTUFYX05BTkRfREVWSUNFOyBpKyspIHsKLQkJaWYgKG5hbmRfZGV2X2Rlc2NbaV0uQ2hpcElEID09IE5BTkRfQ2hpcElEX1VOS05PV04pIHsKLQkJCW5hbmQgPSAmbmFuZF9kZXZfZGVzY1tpXTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCWlmICghbmFuZCkKLQkJcmV0dXJuICgwKTsKLQotCW1lbXNldCgoY2hhciAqKW5hbmQsIDAsIHNpemVvZihzdHJ1Y3QgbmFuZF9jaGlwKSk7Ci0KLQluYW5kLT5JT19BRERSID0gcGh5c2FkcjsKLQluYW5kLT5jYWNoZV9wYWdlID0gLTE7ICAvKiBpbml0IHRoZSBjYWNoZSBwYWdlICovCi0JTmFuRF9TY2FuQ2hpcHMobmFuZCk7Ci0KLQlpZiAobmFuZC0+dG90bGVuID09IDApIHsKLQkJLyogbm8gY2hpcHMgZm91bmQsIGNsZWFuIHVwIGFuZCBxdWl0ICovCi0JCW1lbXNldCgoY2hhciAqKW5hbmQsIDAsIHNpemVvZihzdHJ1Y3QgbmFuZF9jaGlwKSk7Ci0JCW5hbmQtPkNoaXBJRCA9IE5BTkRfQ2hpcElEX1VOS05PV047Ci0JCXJldHVybiAoMCk7Ci0JfQotCi0JbmFuZC0+Q2hpcElEID0gQ2hpcElEOwotCWlmIChjdXJyX2RldmljZSA9PSAtMSkKLQkJY3Vycl9kZXZpY2UgPSBpOwotCi0JbmFuZC0+ZGF0YV9idWYgPSBtYWxsb2MgKG5hbmQtPm9vYmJsb2NrICsgbmFuZC0+b29ic2l6ZSk7Ci0JaWYgKCFuYW5kLT5kYXRhX2J1ZikgewotCQlwdXRzICgiQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuIik7Ci0JCXJldHVybiAoMCk7Ci0JfQotCi0JcmV0dXJuIChuYW5kLT50b3RsZW4pOwotfQotCi0jaWZkZWYgQ09ORklHX01URF9OQU5EX0VDQwotLyoKLSAqIFByZS1jYWxjdWxhdGVkIDI1Ni13YXkgMSBieXRlIGNvbHVtbiBwYXJpdHkKLSAqLwotc3RhdGljIGNvbnN0IHVfY2hhciBuYW5kX2VjY19wcmVjYWxjX3RhYmxlW10gPSB7Ci0JMHgwMCwgMHg1NSwgMHg1NiwgMHgwMywgMHg1OSwgMHgwYywgMHgwZiwgMHg1YSwKLQkweDVhLCAweDBmLCAweDBjLCAweDU5LCAweDAzLCAweDU2LCAweDU1LCAweDAwLAotCTB4NjUsIDB4MzAsIDB4MzMsIDB4NjYsIDB4M2MsIDB4NjksIDB4NmEsIDB4M2YsCi0JMHgzZiwgMHg2YSwgMHg2OSwgMHgzYywgMHg2NiwgMHgzMywgMHgzMCwgMHg2NSwKLQkweDY2LCAweDMzLCAweDMwLCAweDY1LCAweDNmLCAweDZhLCAweDY5LCAweDNjLAotCTB4M2MsIDB4NjksIDB4NmEsIDB4M2YsIDB4NjUsIDB4MzAsIDB4MzMsIDB4NjYsCi0JMHgwMywgMHg1NiwgMHg1NSwgMHgwMCwgMHg1YSwgMHgwZiwgMHgwYywgMHg1OSwKLQkweDU5LCAweDBjLCAweDBmLCAweDVhLCAweDAwLCAweDU1LCAweDU2LCAweDAzLAotCTB4NjksIDB4M2MsIDB4M2YsIDB4NmEsIDB4MzAsIDB4NjUsIDB4NjYsIDB4MzMsCi0JMHgzMywgMHg2NiwgMHg2NSwgMHgzMCwgMHg2YSwgMHgzZiwgMHgzYywgMHg2OSwKLQkweDBjLCAweDU5LCAweDVhLCAweDBmLCAweDU1LCAweDAwLCAweDAzLCAweDU2LAotCTB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsIDB4MGYsIDB4NWEsIDB4NTksIDB4MGMsCi0JMHgwZiwgMHg1YSwgMHg1OSwgMHgwYywgMHg1NiwgMHgwMywgMHgwMCwgMHg1NSwKLQkweDU1LCAweDAwLCAweDAzLCAweDU2LCAweDBjLCAweDU5LCAweDVhLCAweDBmLAotCTB4NmEsIDB4M2YsIDB4M2MsIDB4NjksIDB4MzMsIDB4NjYsIDB4NjUsIDB4MzAsCi0JMHgzMCwgMHg2NSwgMHg2NiwgMHgzMywgMHg2OSwgMHgzYywgMHgzZiwgMHg2YSwKLQkweDZhLCAweDNmLCAweDNjLCAweDY5LCAweDMzLCAweDY2LCAweDY1LCAweDMwLAotCTB4MzAsIDB4NjUsIDB4NjYsIDB4MzMsIDB4NjksIDB4M2MsIDB4M2YsIDB4NmEsCi0JMHgwZiwgMHg1YSwgMHg1OSwgMHgwYywgMHg1NiwgMHgwMywgMHgwMCwgMHg1NSwKLQkweDU1LCAweDAwLCAweDAzLCAweDU2LCAweDBjLCAweDU5LCAweDVhLCAweDBmLAotCTB4MGMsIDB4NTksIDB4NWEsIDB4MGYsIDB4NTUsIDB4MDAsIDB4MDMsIDB4NTYsCi0JMHg1NiwgMHgwMywgMHgwMCwgMHg1NSwgMHgwZiwgMHg1YSwgMHg1OSwgMHgwYywKLQkweDY5LCAweDNjLCAweDNmLCAweDZhLCAweDMwLCAweDY1LCAweDY2LCAweDMzLAotCTB4MzMsIDB4NjYsIDB4NjUsIDB4MzAsIDB4NmEsIDB4M2YsIDB4M2MsIDB4NjksCi0JMHgwMywgMHg1NiwgMHg1NSwgMHgwMCwgMHg1YSwgMHgwZiwgMHgwYywgMHg1OSwKLQkweDU5LCAweDBjLCAweDBmLCAweDVhLCAweDAwLCAweDU1LCAweDU2LCAweDAzLAotCTB4NjYsIDB4MzMsIDB4MzAsIDB4NjUsIDB4M2YsIDB4NmEsIDB4NjksIDB4M2MsCi0JMHgzYywgMHg2OSwgMHg2YSwgMHgzZiwgMHg2NSwgMHgzMCwgMHgzMywgMHg2NiwKLQkweDY1LCAweDMwLCAweDMzLCAweDY2LCAweDNjLCAweDY5LCAweDZhLCAweDNmLAotCTB4M2YsIDB4NmEsIDB4NjksIDB4M2MsIDB4NjYsIDB4MzMsIDB4MzAsIDB4NjUsCi0JMHgwMCwgMHg1NSwgMHg1NiwgMHgwMywgMHg1OSwgMHgwYywgMHgwZiwgMHg1YSwKLQkweDVhLCAweDBmLCAweDBjLCAweDU5LCAweDAzLCAweDU2LCAweDU1LCAweDAwCi19OwotCi0KLS8qCi0gKiBDcmVhdGVzIG5vbi1pbnZlcnRlZCBFQ0MgY29kZSBmcm9tIGxpbmUgcGFyaXR5Ci0gKi8KLXN0YXRpYyB2b2lkIG5hbmRfdHJhbnNfcmVzdWx0KHVfY2hhciByZWcyLCB1X2NoYXIgcmVnMywKLQl1X2NoYXIgKmVjY19jb2RlKQotewotCXVfY2hhciBhLCBiLCBpLCB0bXAxLCB0bXAyOwotCi0JLyogSW5pdGlhbGl6ZSB2YXJpYWJsZXMgKi8KLQlhID0gYiA9IDB4ODA7Ci0JdG1wMSA9IHRtcDIgPSAwOwotCi0JLyogQ2FsY3VsYXRlIGZpcnN0IEVDQyBieXRlICovCi0JZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewotCQlpZiAocmVnMyAmIGEpCQkvKiBMUDE1LDEzLDExLDkgLS0+IGVjY19jb2RlWzBdICovCi0JCQl0bXAxIHw9IGI7Ci0JCWIgPj49IDE7Ci0JCWlmIChyZWcyICYgYSkJCS8qIExQMTQsMTIsMTAsOCAtLT4gZWNjX2NvZGVbMF0gKi8KLQkJCXRtcDEgfD0gYjsKLQkJYiA+Pj0gMTsKLQkJYSA+Pj0gMTsKLQl9Ci0KLQkvKiBDYWxjdWxhdGUgc2Vjb25kIEVDQyBieXRlICovCi0JYiA9IDB4ODA7Ci0JZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewotCQlpZiAocmVnMyAmIGEpCQkvKiBMUDcsNSwzLDEgLS0+IGVjY19jb2RlWzFdICovCi0JCQl0bXAyIHw9IGI7Ci0JCWIgPj49IDE7Ci0JCWlmIChyZWcyICYgYSkJCS8qIExQNiw0LDIsMCAtLT4gZWNjX2NvZGVbMV0gKi8KLQkJCXRtcDIgfD0gYjsKLQkJYiA+Pj0gMTsKLQkJYSA+Pj0gMTsKLQl9Ci0KLQkvKiBTdG9yZSB0d28gb2YgdGhlIEVDQyBieXRlcyAqLwotCWVjY19jb2RlWzBdID0gdG1wMTsKLQllY2NfY29kZVsxXSA9IHRtcDI7Ci19Ci0KLS8qCi0gKiBDYWxjdWxhdGUgMyBieXRlIEVDQyBjb2RlIGZvciAyNTYgYnl0ZSBibG9jawotICovCi1zdGF0aWMgdm9pZCBuYW5kX2NhbGN1bGF0ZV9lY2MgKGNvbnN0IHVfY2hhciAqZGF0LCB1X2NoYXIgKmVjY19jb2RlKQotewotCXVfY2hhciBpZHgsIHJlZzEsIHJlZzM7Ci0JaW50IGo7Ci0KLQkvKiBJbml0aWFsaXplIHZhcmlhYmxlcyAqLwotCXJlZzEgPSByZWczID0gMDsKLQllY2NfY29kZVswXSA9IGVjY19jb2RlWzFdID0gZWNjX2NvZGVbMl0gPSAwOwotCi0JLyogQnVpbGQgdXAgY29sdW1uIHBhcml0eSAqLwotCWZvcihqID0gMDsgaiA8IDI1NjsgaisrKSB7Ci0KLQkJLyogR2V0IENQMCAtIENQNSBmcm9tIHRhYmxlICovCi0JCWlkeCA9IG5hbmRfZWNjX3ByZWNhbGNfdGFibGVbZGF0W2pdXTsKLQkJcmVnMSBePSBpZHg7Ci0KLQkJLyogQWxsIGJpdCBYT1IgPSAxID8gKi8KLQkJaWYgKGlkeCAmIDB4NDApIHsKLQkJCXJlZzMgXj0gKHVfY2hhcikgajsKLQkJfQotCX0KLQotCS8qIENyZWF0ZSBub24taW52ZXJ0ZWQgRUNDIGNvZGUgZnJvbSBsaW5lIHBhcml0eSAqLwotCW5hbmRfdHJhbnNfcmVzdWx0KChyZWcxICYgMHg0MCkgPyB+cmVnMyA6IHJlZzMsIHJlZzMsIGVjY19jb2RlKTsKLQotCS8qIENhbGN1bGF0ZSBmaW5hbCBFQ0MgY29kZSAqLwotCWVjY19jb2RlWzBdID0gfmVjY19jb2RlWzBdOwotCWVjY19jb2RlWzFdID0gfmVjY19jb2RlWzFdOwotCWVjY19jb2RlWzJdID0gKCh+cmVnMSkgPDwgMikgfCAweDAzOwotfQotCi0vKgotICogRGV0ZWN0IGFuZCBjb3JyZWN0IGEgMSBiaXQgZXJyb3IgZm9yIDI1NiBieXRlIGJsb2NrCi0gKi8KLXN0YXRpYyBpbnQgbmFuZF9jb3JyZWN0X2RhdGEgKHVfY2hhciAqZGF0LCB1X2NoYXIgKnJlYWRfZWNjLCB1X2NoYXIgKmNhbGNfZWNjKQotewotCXVfY2hhciBhLCBiLCBjLCBkMSwgZDIsIGQzLCBhZGQsIGJpdCwgaTsKLQotCS8qIERvIGVycm9yIGRldGVjdGlvbiAqLwotCWQxID0gY2FsY19lY2NbMF0gXiByZWFkX2VjY1swXTsKLQlkMiA9IGNhbGNfZWNjWzFdIF4gcmVhZF9lY2NbMV07Ci0JZDMgPSBjYWxjX2VjY1syXSBeIHJlYWRfZWNjWzJdOwotCi0JaWYgKChkMSB8IGQyIHwgZDMpID09IDApIHsKLQkJLyogTm8gZXJyb3JzICovCi0JCXJldHVybiAwOwotCX0gZWxzZSB7Ci0JCWEgPSAoZDEgXiAoZDEgPj4gMSkpICYgMHg1NTsKLQkJYiA9IChkMiBeIChkMiA+PiAxKSkgJiAweDU1OwotCQljID0gKGQzIF4gKGQzID4+IDEpKSAmIDB4NTQ7Ci0KLQkJLyogRm91bmQgYW5kIHdpbGwgY29ycmVjdCBzaW5nbGUgYml0IGVycm9yIGluIHRoZSBkYXRhICovCi0JCWlmICgoYSA9PSAweDU1KSAmJiAoYiA9PSAweDU1KSAmJiAoYyA9PSAweDU0KSkgewotCQkJYyA9IDB4ODA7Ci0JCQlhZGQgPSAwOwotCQkJYSA9IDB4ODA7Ci0JCQlmb3IgKGk9MDsgaTw0OyBpKyspIHsKLQkJCQlpZiAoZDEgJiBjKQotCQkJCQlhZGQgfD0gYTsKLQkJCQljID4+PSAyOwotCQkJCWEgPj49IDE7Ci0JCQl9Ci0JCQljID0gMHg4MDsKLQkJCWZvciAoaT0wOyBpPDQ7IGkrKykgewotCQkJCWlmIChkMiAmIGMpCi0JCQkJCWFkZCB8PSBhOwotCQkJCWMgPj49IDI7Ci0JCQkJYSA+Pj0gMTsKLQkJCX0KLQkJCWJpdCA9IDA7Ci0JCQliID0gMHgwNDsKLQkJCWMgPSAweDgwOwotCQkJZm9yIChpPTA7IGk8MzsgaSsrKSB7Ci0JCQkJaWYgKGQzICYgYykKLQkJCQkJYml0IHw9IGI7Ci0JCQkJYyA+Pj0gMjsKLQkJCQliID4+PSAxOwotCQkJfQotCQkJYiA9IDB4MDE7Ci0JCQlhID0gZGF0W2FkZF07Ci0JCQlhIF49IChiIDw8IGJpdCk7Ci0JCQlkYXRbYWRkXSA9IGE7Ci0JCQlyZXR1cm4gMTsKLQkJfQotCQllbHNlIHsKLQkJCWkgPSAwOwotCQkJd2hpbGUgKGQxKSB7Ci0JCQkJaWYgKGQxICYgMHgwMSkKLQkJCQkJKytpOwotCQkJCWQxID4+PSAxOwotCQkJfQotCQkJd2hpbGUgKGQyKSB7Ci0JCQkJaWYgKGQyICYgMHgwMSkKLQkJCQkJKytpOwotCQkJCWQyID4+PSAxOwotCQkJfQotCQkJd2hpbGUgKGQzKSB7Ci0JCQkJaWYgKGQzICYgMHgwMSkKLQkJCQkJKytpOwotCQkJCWQzID4+PSAxOwotCQkJfQotCQkJaWYgKGkgPT0gMSkgewotCQkJCS8qIEVDQyBDb2RlIEVycm9yIENvcnJlY3Rpb24gKi8KLQkJCQlyZWFkX2VjY1swXSA9IGNhbGNfZWNjWzBdOwotCQkJCXJlYWRfZWNjWzFdID0gY2FsY19lY2NbMV07Ci0JCQkJcmVhZF9lY2NbMl0gPSBjYWxjX2VjY1syXTsKLQkJCQlyZXR1cm4gMjsKLQkJCX0KLQkJCWVsc2UgewotCQkJCS8qIFVuY29ycmVjdGFibGUgRXJyb3IgKi8KLQkJCQlyZXR1cm4gLTE7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvKiBTaG91bGQgbmV2ZXIgaGFwcGVuICovCi0JcmV0dXJuIC0xOwotfQotCi0jZW5kaWYKLQotI2lmZGVmIENPTkZJR19KRkZTMl9OQU5ECi0KLWludCByZWFkX2pmZnMyX25hbmQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuLAotCQkgICAgc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKiBidWYsIGludCBuYW5kZGV2KQotewotCXJldHVybiBuYW5kX3J3KG5hbmRfZGV2X2Rlc2MgKyBuYW5kZGV2LCBOQU5EUldfUkVBRCB8IE5BTkRSV19KRkZTMiwKLQkJICAgICAgIHN0YXJ0LCBsZW4sIHJldGxlbiwgYnVmKTsKLX0KLQotI2VuZGlmIC8qIENPTkZJR19KRkZTMl9OQU5EICovCi0KLQotI2VuZGlmIC8qIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpICovCisjZW5kaWYgLyogQ0ZHX05BTkRfTEVHQUNZICovCmRpZmYgLS1naXQgYS9jb21tb24vY21kX252ZWRpdC5jIGIvY29tbW9uL2NtZF9udmVkaXQuYwppbmRleCAxYmFiZmZlLi5lY2YxZGI0IDEwMDY0NAotLS0gYS9jb21tb24vY21kX252ZWRpdC5jCisrKyBiL2NvbW1vbi9jbWRfbnZlZGl0LmMKQEAgLTUzMiw3ICs1MzIsOSBAQAogCiAjaWYgZGVmaW5lZChDRkdfRU5WX0lTX0lOX05WUkFNKSB8fCBkZWZpbmVkKENGR19FTlZfSVNfSU5fRUVQUk9NKSB8fCBcCiAgICAgKChDT05GSUdfQ09NTUFORFMgJiAoQ0ZHX0NNRF9FTlZ8Q0ZHX0NNRF9GTEFTSCkpID09IFwKLSAgICAgIChDRkdfQ01EX0VOVnxDRkdfQ01EX0ZMQVNIKSkKKyAgICAgIChDRkdfQ01EX0VOVnxDRkdfQ01EX0ZMQVNIKSkgfHwgXAorICAgICgoQ09ORklHX0NPTU1BTkRTICYgKENGR19DTURfRU5WfENGR19DTURfTkFORCkpID09IFwKKyAgICAgIChDRkdfQ01EX0VOVnxDRkdfQ01EX05BTkQpKQogaW50IGRvX3NhdmVlbnYgKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogCWV4dGVybiBjaGFyICogZW52X25hbWVfc3BlYzsKQEAgLTU4OCw3ICs1OTAsOSBAQAogCiAjaWYgZGVmaW5lZChDRkdfRU5WX0lTX0lOX05WUkFNKSB8fCBkZWZpbmVkKENGR19FTlZfSVNfSU5fRUVQUk9NKSB8fCBcCiAgICAgKChDT05GSUdfQ09NTUFORFMgJiAoQ0ZHX0NNRF9FTlZ8Q0ZHX0NNRF9GTEFTSCkpID09IFwKLSAgICAgIChDRkdfQ01EX0VOVnxDRkdfQ01EX0ZMQVNIKSkKKyAgICAgIChDRkdfQ01EX0VOVnxDRkdfQ01EX0ZMQVNIKSkgfHwgXAorICAgICgoQ09ORklHX0NPTU1BTkRTICYgKENGR19DTURfRU5WfENGR19DTURfTkFORCkpID09IFwKKyAgICAgIChDRkdfQ01EX0VOVnxDRkdfQ01EX05BTkQpKQogVV9CT09UX0NNRCgKIAlzYXZlZW52LCAxLCAwLAlkb19zYXZlZW52LAogCSJzYXZlZW52IC0gc2F2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGVyc2lzdGVudCBzdG9yYWdlXG4iLApkaWZmIC0tZ2l0IGEvY29tbW9uL2NvbW1hbmQuYyBiL2NvbW1vbi9jb21tYW5kLmMKaW5kZXggMmI0YzU1NC4uZTkxNzk3NSAxMDA2NDQKLS0tIGEvY29tbW9uL2NvbW1hbmQuYworKysgYi9jb21tb24vY29tbWFuZC5jCkBAIC00Miw2ICs0Miw4IEBACiAJTlVMTAogKTsKIAorI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0VDSE8pCisKIGludAogZG9fZWNobyAoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CkBAIC03NCw2ICs3Niw4IEBACiAJIiAgICAtIGVjaG8gYXJncyB0byBjb25zb2xlOyBcXGMgc3VwcHJlc3NlcyBuZXdsaW5lXG4iCiApOwogCisjZW5kaWYJLyogIENGR19DTURfRUNITyAqLworCiAjaWZkZWYgQ0ZHX0hVU0hfUEFSU0VSCiAKIGludApkaWZmIC0tZ2l0IGEvY29tbW9uL2Vudl9uYW5kLmMgYi9jb21tb24vZW52X25hbmQuYwppbmRleCA2MGFiYTFlLi5kZDI3ZjdiIDEwMDY0NAotLS0gYS9jb21tb24vZW52X25hbmQuYworKysgYi9jb21tb24vZW52X25hbmQuYwpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPGNvbW1hbmQuaD4KICNpbmNsdWRlIDxlbnZpcm9ubWVudC5oPgogI2luY2x1ZGUgPGxpbnV4L3N0ZGRlZi5oPgotI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bmFuZC5oPgogCiAjaWYgKChDT05GSUdfQ09NTUFORFMmKENGR19DTURfRU5WfENGR19DTURfTkFORCkpID09IChDRkdfQ01EX0VOVnxDRkdfQ01EX05BTkQpKQogI2RlZmluZSBDTURfU0FWRUVOVgpAQCAtNTUsMTYgKzU1LDEyIEBACiAjZXJyb3IgQ09ORklHX0lORkVSTk8gbm90IHN1cHBvcnRlZCB5ZXQKICNlbmRpZgogCi0vKiByZWZlcmVuY2VzIHRvIG5hbWVzIGluIGNtZF9uYW5kLmMgKi8KLSNkZWZpbmUgTkFORFJXX1JFQUQJCTB4MDEKLSNkZWZpbmUgTkFORFJXX1dSSVRFCTB4MDAKLSNkZWZpbmUgTkFORFJXX0pGRlMyCTB4MDIKLWV4dGVybiBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfZGV2X2Rlc2NbXTsKLWludCBuYW5kX3J3IChzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBpbnQgY21kLAoraW50IG5hbmRfbGVnYWN5X3J3IChzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBpbnQgY21kLAogCSAgICBzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW4sCiAJICAgIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmKTsKLWludCBuYW5kX2VyYXNlKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIHNpemVfdCBvZnMsCi0JCQkJc2l6ZV90IGxlbiwgaW50IGNsZWFuKTsKKworLyogaW5mbyBmb3IgTkFORCBjaGlwcywgZGVmaW5lZCBpbiBkcml2ZXJzL25hbmQvbmFuZC5jICovCitleHRlcm4gbmFuZF9pbmZvX3QgbmFuZF9pbmZvW107CiAKIC8qIHJlZmVyZW5jZXMgdG8gbmFtZXMgaW4gZW52X2NvbW1vbi5jICovCiBleHRlcm4gdWNoYXIgZGVmYXVsdF9lbnZpcm9ubWVudFtdOwpAQCAtMTEwLDM0ICsxMDYsNDMgQEAKIH0KIAogI2lmZGVmIENNRF9TQVZFRU5WCisvKgorICogVGhlIGxlZ2FjeSBOQU5EIGNvZGUgc2F2ZWQgdGhlIGVudmlyb25tZW50IGluIHRoZSBmaXJzdCBOQU5EIGRldmljZSBpLmUuLAorICogbmFuZF9kZXZfZGVzYyArIDAuIFRoaXMgaXMgYWxzbyB0aGUgYmVoYXZpb3VyIHVzaW5nIHRoZSBuZXcgTkFORCBjb2RlLgorICovCiBpbnQgc2F2ZWVudih2b2lkKQogewotCWludAl0b3RhbCwgcmV0ID0gMDsKLSAJcHV0cyAoIkVyYXNpbmcgTmFuZC4uLiIpOwotIAlpZiAobmFuZF9lcmFzZShuYW5kX2Rldl9kZXNjICsgMCwgQ0ZHX0VOVl9PRkZTRVQsIENGR19FTlZfU0laRSwgMCkpCi0gCQlyZXR1cm4gMTsKKwl1bG9uZyB0b3RhbDsKKwlpbnQgcmV0ID0gMDsKKworCXB1dHMgKCJFcmFzaW5nIE5hbmQuLi4iKTsKKwlpZiAobmFuZF9lcmFzZSgmbmFuZF9pbmZvWzBdLCBDRkdfRU5WX09GRlNFVCwgQ0ZHX0VOVl9TSVpFKSkKKwkJcmV0dXJuIDE7CiAKIAlwdXRzICgiV3JpdGluZyB0byBOYW5kLi4uICIpOwotCXJldCA9IG5hbmRfcncobmFuZF9kZXZfZGVzYyArIDAsCi0JCQkJICBOQU5EUldfV1JJVEUgfCBOQU5EUldfSkZGUzIsIENGR19FTlZfT0ZGU0VULCBDRkdfRU5WX1NJWkUsCi0JCQkgICAgICAmdG90YWwsICh1X2NoYXIqKWVudl9wdHIpOwotICAJaWYgKHJldCB8fCB0b3RhbCAhPSBDRkdfRU5WX1NJWkUpCisJdG90YWwgPSBDRkdfRU5WX1NJWkU7CisJcmV0ID0gbmFuZF93cml0ZSgmbmFuZF9pbmZvWzBdLCBDRkdfRU5WX09GRlNFVCwgJnRvdGFsLCAodV9jaGFyKillbnZfcHRyKTsKKwlpZiAocmV0IHx8IHRvdGFsICE9IENGR19FTlZfU0laRSkKIAkJcmV0dXJuIDE7CiAKLSAJcHV0cyAoImRvbmVcbiIpOwotICAJcmV0dXJuIHJldDsKKwlwdXRzICgiZG9uZVxuIik7CisJcmV0dXJuIHJldDsKIH0KICNlbmRpZiAvKiBDTURfU0FWRUVOViAqLwogCiAKKy8qCisgKiBUaGUgbGVnYWN5IE5BTkQgY29kZSBzYXZlZCB0aGUgZW52aXJvbm1lbnQgaW4gdGhlIGZpcnN0IE5BTkQgZGV2aWNlIGkuZS4sCisgKiBuYW5kX2Rldl9kZXNjICsgMC4gVGhpcyBpcyBhbHNvIHRoZSBiZWhhdmlvdXIgdXNpbmcgdGhlIG5ldyBOQU5EIGNvZGUuCisgKi8KIHZvaWQgZW52X3JlbG9jYXRlX3NwZWMgKHZvaWQpCiB7CiAjaWYgIWRlZmluZWQoRU5WX0lTX0VNQkVEREVEKQotCWludCByZXQsIHRvdGFsOworCXVsb25nIHRvdGFsOworCWludCByZXQ7CiAKLQlyZXQgPSBuYW5kX3J3KG5hbmRfZGV2X2Rlc2MgKyAwLAotCQkJCSAgTkFORFJXX1JFQUQgfCBOQU5EUldfSkZGUzIsIENGR19FTlZfT0ZGU0VULCBDRkdfRU5WX1NJWkUsCi0JCQkgICAgICAmdG90YWwsICh1X2NoYXIqKWVudl9wdHIpOworCXRvdGFsID0gQ0ZHX0VOVl9TSVpFOworCXJldCA9IG5hbmRfcmVhZCgmbmFuZF9pbmZvWzBdLCBDRkdfRU5WX09GRlNFVCwgJnRvdGFsLCAodV9jaGFyKillbnZfcHRyKTsKICAgCWlmIChyZXQgfHwgdG90YWwgIT0gQ0ZHX0VOVl9TSVpFKQogCQlyZXR1cm4gdXNlX2RlZmF1bHQoKTsKIApkaWZmIC0tZ2l0IGEvY29tbW9uL2Z0X2J1aWxkLmMgYi9jb21tb24vZnRfYnVpbGQuYwppbmRleCA2NWEyNzRmLi45ZTljOTA2IDEwMDY0NAotLS0gYS9jb21tb24vZnRfYnVpbGQuYworKysgYi9jb21tb24vZnRfYnVpbGQuYwpAQCAtMTYzLDcgKzE2Myw3IEBACiAJKCh1NjQgKikgY3h0LT5wcmVzKVswXSA9IGNwdV90b19iZTY0KHBoeXNhZGRyKTsJLyogcGh5cyA9IDAsIHNpemUgPSAwLCB0ZXJtaW5hdGUgKi8KIAkoKHU2NCAqKSBjeHQtPnByZXMpWzFdID0gY3B1X3RvX2JlNjQoc2l6ZSk7CiAKLQljeHQtPnByZXMgKz0gMTg7CS8qIGFkdmFuY2UgKi8KKwljeHQtPnByZXMgKz0gMTY7CS8qIGFkdmFuY2UgKi8KIAogCSgodTY0ICopIGN4dC0+cHJlcylbMF0gPSAwOwkvKiBwaHlzID0gMCwgc2l6ZSA9IDAsIHRlcm1pbmF0ZSAqLwogCSgodTY0ICopIGN4dC0+cHJlcylbMV0gPSAwOwpAQCAtNTI5LDYgKzUyOSw3IEBACiAKICNkZWZpbmUgQkRNKHgpCXsJLm5hbWUgPSAjeCwgLm9mZnNldCA9IG9mZnNldG9mKGJkX3QsIGJpXyAjI3ggKSB9CiAKKyNpZmRlZiBDT05GSUdfT0ZfSEFTX0JEX1QKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50IG9mZnNldDsKQEAgLTU3NCwxOSArNTc1LDI0IEBACiAjZW5kaWYKIAlCRE0oYmF1ZHJhdGUpLAogfTsKKyNlbmRpZgogCi12b2lkIGZ0X3NldHVwKHZvaWQgKmJsb2IsIGludCBzaXplLCBiZF90ICogYmQpCit2b2lkIGZ0X3NldHVwKHZvaWQgKmJsb2IsIGludCBzaXplLCBiZF90ICogYmQsIHVsb25nIGluaXRyZF9zdGFydCwgdWxvbmcgaW5pdHJkX2VuZCkKIHsKLQlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKLQl1OCAqZW5kOwogCXUzMiAqcDsKIAlpbnQgbGVuOwogCXN0cnVjdCBmdF9jeHQgY3h0OwotCWludCBpLCBrLCBueHQ7Ci0Jc3RhdGljIGNoYXIgdG1wZW52WzI1Nl07Ci0JY2hhciAqcywgKmx2YWwsICpydmFsOwogCXVsb25nIGNsb2NrOwotCXVpbnQzMl90IHY7CisjaWYgZGVmaW5lZChDT05GSUdfT0ZfSEFTX1VCT09UX0VOVikKKwlpbnQgaywgbnh0OworI2VuZGlmCisjaWYgZGVmaW5lZChDT05GSUdfT0ZfSEFTX0JEX1QpCisJdTggKmVuZDsKKyNlbmRpZgorI2lmIGRlZmluZWQoQ09ORklHX09GX0hBU19VQk9PVF9FTlYpIHx8IGRlZmluZWQoQ09ORklHX09GX0hBU19CRF9UKQorCWludCBpOworCXN0YXRpYyBjaGFyIHRtcGVudlsyNTZdOworI2VuZGlmCiAKIAkvKiBkaXNhYmxlIE9GIHRyZWU7IGJvb3Rpbmcgb2xkIGtlcm5lbCAqLwogCWlmIChnZXRlbnYoImRpc2FibGVfb2YiKSAhPSBOVUxMKSB7CkBAIC01OTYsNyArNjAyLDggQEAKIAogCWZ0X2JlZ2luKCZjeHQsIGJsb2IsIHNpemUpOwogCi0JLyogZnNfYWRkX3Jzdm1hcCBub3QgdXNlZCAqLworCWlmIChpbml0cmRfc3RhcnQgJiYgaW5pdHJkX2VuZCkKKwkJZnRfYWRkX3Jzdm1hcCgmY3h0LCBpbml0cmRfc3RhcnQsIGluaXRyZF9lbmQgLSBpbml0cmRfc3RhcnQgKyAxKTsKIAogCWZ0X2JlZ2luX3RyZWUoJmN4dCk7CiAKQEAgLTYxMCw5ICs2MTcsMTIgQEAKIAkvKiBiYWNrIGludG8gcm9vdCAqLwogCWZ0X2JhY2t0cmFja19ub2RlKCZjeHQpOwogCisjaWZkZWYgQ09ORklHX09GX0hBU19VQk9PVF9FTlYKIAlmdF9iZWdpbl9ub2RlKCZjeHQsICJ1LWJvb3QtZW52Iik7CiAKIAlmb3IgKGkgPSAwOyBlbnZfZ2V0X2NoYXIoaSkgIT0gJ1wwJzsgaSA9IG54dCArIDEpIHsKKwkJY2hhciAqcywgKmx2YWwsICpydmFsOworCiAJCWZvciAobnh0ID0gaTsgZW52X2dldF9jaGFyKG54dCkgIT0gJ1wwJzsgKytueHQpIDsKIAkJcyA9IHRtcGVudjsKIAkJZm9yIChrID0gaTsgayA8IG54dCAmJiBzIDwgJnRtcGVudltzaXplb2YodG1wZW52KSAtIDFdOyArK2spCkBAIC02MjksMTIgKzYzOSwyMCBAQAogCX0KIAogCWZ0X2VuZF9ub2RlKCZjeHQpOworI2VuZGlmCiAKIAlmdF9iZWdpbl9ub2RlKCZjeHQsICJjaG9zZW4iKTsKIAogCWZ0X3Byb3Bfc3RyKCZjeHQsICJuYW1lIiwgImNob3NlbiIpOwogCWZ0X3Byb3Bfc3RyKCZjeHQsICJib290YXJncyIsIGdldGVudigiYm9vdGFyZ3MiKSk7CiAJZnRfcHJvcF9pbnQoJmN4dCwgImxpbnV4LHBsYXRmb3JtIiwgMHg2MDApOwkvKiB3aGF0IGlzIHRoaXM/ICovCisJaWYgKGluaXRyZF9zdGFydCAmJiBpbml0cmRfZW5kKSB7CisJCWZ0X3Byb3BfaW50KCZjeHQsICJsaW51eCxpbml0cmQtc3RhcnQiLCBpbml0cmRfc3RhcnQpOworCQlmdF9wcm9wX2ludCgmY3h0LCAibGludXgsaW5pdHJkLWVuZCIsIGluaXRyZF9lbmQpOworCX0KKyNpZmRlZiBPRl9TVERPVVRfUEFUSAorCWZ0X3Byb3Bfc3RyKCZjeHQsICJsaW51eCxzdGRvdXQtcGF0aCIsIE9GX1NURE9VVF9QQVRIKTsKKyNlbmRpZgogCiAJZnRfZW5kX25vZGUoJmN4dCk7CiAKQEAgLTY0NywxNCArNjY1LDE5IEBACiAJICAgZnRfZHVtcF9ibG9iKGJsb2IpOwogCSAqLwogCisjaWZkZWYgQ09ORklHX09GX0hBU19CRF9UCiAJLyogcGFzdGUgdGhlIGJkX3QgYXQgdGhlIGVuZCBvZiB0aGUgZmxhdCB0cmVlICovCiAJZW5kID0gKGNoYXIgKilibG9iICsKIAkgICAgYmUzMl90b19jcHUoKChzdHJ1Y3QgYm9vdF9wYXJhbV9oZWFkZXIgKilibG9iKS0+dG90YWxzaXplKTsKIAltZW1jcHkoZW5kLCBiZCwgc2l6ZW9mKCpiZCkpOworI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfUFBDCiAKKyNpZmRlZiBDT05GSUdfT0ZfSEFTX0JEX1QKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGJkX21hcCkvc2l6ZW9mKGJkX21hcFswXSk7IGkrKykgeworCQl1aW50MzJfdCB2OworCiAJCXNwcmludGYodG1wZW52LCAiL2JkX3QvJXMiLCBiZF9tYXBbaV0ubmFtZSk7CiAJCXYgPSAqKHVpbnQzMl90ICopKChjaGFyICopYmQgKyBiZF9tYXBbaV0ub2Zmc2V0KTsKIApAQCAtNjcwLDYgKzY5Myw3IEBACiAJcCA9IGZ0X2dldF9wcm9wKGJsb2IsICIvYmRfdC9ldGhzcGVlZCIsICZsZW4pOwogCWlmIChwICE9IE5VTEwpCiAJCSpwID0gY3B1X3RvX2JlMzIoKHVpbnQzMl90KSBiZC0+YmlfZXRoc3BlZWQpOworI2VuZGlmCiAKIAljbG9jayA9IGJkLT5iaV9pbnRmcmVxOwogCXAgPSBmdF9nZXRfcHJvcChibG9iLCAiL2NwdXMvIiBPRl9DUFUgIi9jbG9jay1mcmVxdWVuY3kiLCAmbGVuKTsKQEAgLTY4MCwxMSArNzA0LDE0IEBACiAJY2xvY2sgPSBPRl9UQkNMSzsKIAlwID0gZnRfZ2V0X3Byb3AoYmxvYiwgIi9jcHVzLyIgT0ZfQ1BVICIvdGltZWJhc2UtZnJlcXVlbmN5IiwgJmxlbik7CiAJaWYgKHAgIT0gTlVMTCkKLQkJKnAgPSBjcHVfdG9fYmUzMihPRl9UQkNMSyk7CisJCSpwID0gY3B1X3RvX2JlMzIoY2xvY2spOwogI2VuZGlmCi0KICNlbmRpZgkJCQkvKiBfX3Bvd2VycGNfXyAqLwogCisjaWZkZWYgQ09ORklHX09GX0JPQVJEX1NFVFVQCisJZnRfYm9hcmRfc2V0dXAoYmxvYiwgYmQpOworI2VuZGlmCisKIAkvKgogCSAgIHByaW50ZigiZmluYWwgT0YtdHJlZVxuIik7CiAJICAgZnRfZHVtcF9ibG9iKGJsb2IpOwpkaWZmIC0tZ2l0IGEvY29tbW9uL2x5bnhrZGkuYyBiL2NvbW1vbi9seW54a2RpLmMKaW5kZXggNzk3ZDhjYy4uZWQxYjU5NSAxMDA2NDQKLS0tIGEvY29tbW9uL2x5bnhrZGkuYworKysgYi9jb21tb24vbHlueGtkaS5jCkBAIC0yMywxMSArMjMsMTEgQEAKICNpZiBkZWZpbmVkKENPTkZJR19NUEM4MjYwKSB8fCBkZWZpbmVkKENPTkZJR180NDBFUCkgfHwgZGVmaW5lZChDT05GSUdfNDQwR1IpCiB2b2lkIGx5bnhrZGlfYm9vdCAoIGltYWdlX2hlYWRlcl90ICpoZHIgKQogewotCXZvaWQgKCpseW54a2RpKSh2b2lkKSA9ICh2b2lkKCopKHZvaWQpKWhkci0+aWhfZXA7CisJdm9pZCAoKmx5bnhrZGkpKHZvaWQpID0gKHZvaWQoKikodm9pZCkpIG50b2hsKGhkci0+aWhfZXApOwogCWx5bnhvc19ib290cGFybXNfdCAqcGFybXMgPSAobHlueG9zX2Jvb3RwYXJtc190ICopMHgwMDIwOwogCWJkX3QgKmtiZDsKIAlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKLQl1MzIgKnBzeiA9ICh1MzIgKikoaGRyLT5paF9sb2FkICsgMHgwMjA0KTsKKwl1MzIgKnBzeiA9ICh1MzIgKikobnRvaGwoaGRyLT5paF9sb2FkKSArIDB4MDIwNCk7CiAKIAltZW1zZXQoIHBhcm1zLCAwLCBzaXplb2YoKnBhcm1zKSk7CiAJa2JkID0gZ2QtPmJkOwpAQCAtMzksOSArMzksOSBAQAogCS8qIERvIGEgc2ltcGxlIGNoZWNrIGZvciBCbHVlY2F0IHNvIHdlIGNhbiBwYXNzIHRoZQogCSAqIGtlcm5lbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4KIAkgKi8KLQlpZiggbGUzMl90b19jcHUoKnBzeikgPT0gaGRyLT5paF9zaXplICl7CisJaWYoIGxlMzJfdG9fY3B1KCpwc3opID09IG50b2hsKGhkci0+aWhfc2l6ZSkgKXsJLyogRklYTUU6IE5PVCBTVVJFIEhFUkUgISAqLwogCSAgICBjaGFyICphcmdzOwotCSAgICBjaGFyICpjbWRsaW5lID0gKGNoYXIgKikoaGRyLT5paF9sb2FkICsgMHgwMjBjKTsKKwkgICAgY2hhciAqY21kbGluZSA9IChjaGFyICopKG50b2hsKGhkci0+aWhfbG9hZCkgKyAweDAyMGMpOwogCSAgICBpbnQgbGVuOwogCiAJICAgIHByaW50ZigiQm9vdGluZyBCbHVlY2F0IEtESSAuLi5cbiIpOwpkaWZmIC0tZ2l0IGEvY29tbW9uL21haW4uYyBiL2NvbW1vbi9tYWluLmMKaW5kZXggZjA0MmYzYS4uNDQ1Y2IxOCAxMDA2NDQKLS0tIGEvY29tbW9uL21haW4uYworKysgYi9jb21tb24vbWFpbi5jCkBAIC05MTksNyArOTE5LDEwIEBACiAJCXByb2Nlc3NfbWFjcm9zICh0b2tlbiwgZmluYWx0b2tlbik7CiAKIAkJLyogRXh0cmFjdCBhcmd1bWVudHMgKi8KLQkJYXJnYyA9IHBhcnNlX2xpbmUgKGZpbmFsdG9rZW4sIGFyZ3YpOworCQlpZiAoKGFyZ2MgPSBwYXJzZV9saW5lIChmaW5hbHRva2VuLCBhcmd2KSkgPT0gMCkgeworCQkJcmMgPSAtMTsJLyogbm8gY29tbWFuZCBhdCBhbGwgKi8KKwkJCWNvbnRpbnVlOworCQl9CiAKIAkJLyogTG9vayB1cCBjb21tYW5kIGluIGNvbW1hbmQgdGFibGUgKi8KIAkJaWYgKChjbWR0cCA9IGZpbmRfY21kKGFyZ3ZbMF0pKSA9PSBOVUxMKSB7CkBAIC05NDUsOSArOTQ4LDkgQEAKIAkJCQlwdXRzICgiJ2Jvb3RkJyByZWN1cnNpb24gZGV0ZWN0ZWRcbiIpOwogCQkJCXJjID0gLTE7CiAJCQkJY29udGludWU7Ci0JCQl9Ci0JCQllbHNlCisJCQl9IGVsc2UgewogCQkJCWZsYWcgfD0gQ01EX0ZMQUdfQk9PVEQ7CisJCQl9CiAJCX0KICNlbmRpZgkvKiBDRkdfQ01EX0JPT1REICovCiAKZGlmZiAtLWdpdCBhL2NvbW1vbi9zb2Z0X2kyYy5jIGIvY29tbW9uL3NvZnRfaTJjLmMKaW5kZXggM2QwZTA4Yy4uNDhlM2QzZSAxMDA2NDQKLS0tIGEvY29tbW9uL3NvZnRfaTJjLmMKKysrIGIvY29tbW9uL3NvZnRfaTJjLmMKQEAgLTI4OCw3ICsyODgsMTAgQEAKIHsKIAlpbnQgcmM7CiAKLQkvKiBwZXJmb3JtIDEgYnl0ZSByZWFkIHRyYW5zYWN0aW9uICovCisJLyoKKwkgKiBwZXJmb3JtIDEgYnl0ZSB3cml0ZSB0cmFuc2FjdGlvbiB3aXRoIGp1c3QgYWRkcmVzcyBieXRlCisJICogKGZha2Ugd3JpdGUpCisJICovCiAJc2VuZF9zdGFydCgpOwogCXJjID0gd3JpdGVfYnl0ZSAoKGFkZHIgPDwgMSkgfCAwKTsKIAlzZW5kX3N0b3AoKTsKZGlmZiAtLWdpdCBhL2NvbmZpZy5tayBiL2NvbmZpZy5tawppbmRleCBkODVhYzM2Li5kZmJiMWI3IDEwMDY0NAotLS0gYS9jb25maWcubWsKKysrIGIvY29uZmlnLm1rCkBAIC01Myw2ICs1MywxMCBAQAogZW5kaWYKIGVuZGlmCiAKK2lmZXEgKCQoQVJDSCksYmxhY2tmaW4pCitQTEFURk9STV9DUFBGTEFHUys9IC1EX19CTEFDS0ZJTl9fIC1tbm8tdW5kZXJzY29yZQorZW5kaWYKKwogaWZkZWYJQVJDSAogc2luY2x1ZGUgJChUT1BESVIpLyQoQVJDSClfY29uZmlnLm1rCSMgaW5jbHVkZSBhcmNoaXRlY3R1cmUgZGVwZW5kZW5kIHJ1bGVzCiBlbmRpZgpkaWZmIC0tZ2l0IGEvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9pMmMuYyBiL2NwdS9hcm05MjB0L2F0OTFybTkyMDAvaTJjLmMKaW5kZXggMjU2NTk5OC4uODI2Y2VhOCAxMDA2NDQKLS0tIGEvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9pMmMuYworKysgYi9jcHUvYXJtOTIwdC9hdDkxcm05MjAwL2kyYy5jCkBAIC0xMTEsNyArMTExLDcgQEAKIGludAogaTJjX3Byb2JlKHVuc2lnbmVkIGNoYXIgY2hpcCkKIHsKLQljaGFyIGJ1ZmZlclsxXTsKKwl1bnNpZ25lZCBjaGFyIGJ1ZmZlclsxXTsKIAogCXJldHVybiBhdDkxX3hmZXIoY2hpcCwgMCwgMCwgYnVmZmVyLCAxLCAxKTsKIH0KQEAgLTE5MSw3ICsxOTEsNyBAQAogCiB1Y2hhciBpMmNfcmVnX3JlYWQodWNoYXIgaTJjX2FkZHIsIHVjaGFyIHJlZykKIHsKLQljaGFyIGJ1ZjsKKwl1bnNpZ25lZCBjaGFyIGJ1ZjsKIAogCWkyY19yZWFkKGkyY19hZGRyLCByZWcsIDEsICZidWYsIDEpOwogCmRpZmYgLS1naXQgYS9jcHUvYXJtOTIwdC9zM2MyNHgwL3VzYl9vaGNpLmMgYi9jcHUvYXJtOTIwdC9zM2MyNHgwL3VzYl9vaGNpLmMKaW5kZXggYjRjYzc0NC4uODY5Y2E3OSAxMDA2NDQKLS0tIGEvY3B1L2FybTkyMHQvczNjMjR4MC91c2Jfb2hjaS5jCisrKyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvdXNiX29oY2kuYwpAQCAtMTY0Nyw3ICsxNjQ3LDggQEAKIAl9CiAKIAkvKiBGSVhNRSB0aGlzIGlzIGEgc2Vjb25kIEhDIHJlc2V0OyB3aHk/PyAqLwotCXdyaXRlbCAoZ29oY2kuaGNfY29udHJvbCA9IE9IQ0lfVVNCX1JFU0VULCAmZ29oY2kucmVncy0+Y29udHJvbCk7CisJZ29oY2kuaGNfY29udHJvbCA9IE9IQ0lfVVNCX1JFU0VUOworCXdyaXRlbCAoZ29oY2kuaGNfY29udHJvbCwgJmdvaGNpLnJlZ3MtPmNvbnRyb2wpOwogCXdhaXRfbXMgKDEwKTsKIAogCWlmIChoY19zdGFydCAoJmdvaGNpKSA8IDApIHsKZGlmZiAtLWdpdCBhL2NwdS9iZjUzMy9NYWtlZmlsZSBiL2NwdS9iZjUzMy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjNhOGY2Ci0tLSAvZGV2L251bGwKKysrIGIvY3B1L2JmNTMzL01ha2VmaWxlCkBAIC0wLDAgKzEsNDYgQEAKKyMgVS1ib290IC0gTWFrZWZpbGUKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisjCisjIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSBsaWIkKENQVSkuYQorCitTVEFSVAk9IHN0YXJ0Lm8gc3RhcnQxLm8gaW50ZXJydXB0Lm8gY2FjaGUubyBjcGxiaGRsci5vIGNwbGJtZ3IubyBmbHVzaC5vCitPQkpTCT0gY3B1Lm8gdHJhcHMubyBpbnRzLm8gc2VyaWFsLm8gaW50ZXJydXB0cy5vCisKK2FsbDoJLmRlcGVuZCAkKFNUQVJUKSAkKExJQikKKworJChMSUIpOgkkKE9CSlMpCisJJChBUikgY3J2ICRAICQoT0JKUykKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisuZGVwZW5kOglNYWtlZmlsZSAkKFNUQVJUOi5vPS5TKSAkKE9CSlM6Lm89LmMpCisJCSQoQ0MpIC1NICQoQ0ZMQUdTKSAkKFNUQVJUOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKKworc2luY2x1ZGUgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9jcHUvYmY1MzMvYmY1MzNfc2VyaWFsLmggYi9jcHUvYmY1MzMvYmY1MzNfc2VyaWFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQzMGU2YwotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9iZjUzMy9iZjUzM19zZXJpYWwuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogVS1ib290IC0gYmY1MzNfc2VyaWFsLmggU2VyaWFsIERyaXZlciBkZWZpbmVzCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogVGhpcyBmaWxlIGlzIGJhc2VkIG9uCisgKiBiZjUzM19zZXJpYWwuaDogRGVmaW5pdGlvbnMgZm9yIHRoZSBCbGFja0ZpbiBCRjUzMyBEU1Agc2VyaWFsIGRyaXZlci4KKyAqIENvcHlyaWdodCAoQykgMjAwMwlCYXMgVmVybWV1bGVuIDxiYXNAYnV5d2F5cy5ubD4KKyAqIAkJCUJ1eVdheXMgQi5WLiAod3d3LmJ1eXdheXMubmwpCisgKgorICogQmFzZWQgaGVhdmlseSBvbjoKKyAqIGJsa2ZpbnNlcmlhbC5oOiBEZWZpbml0aW9ucyBmb3IgdGhlIEJsYWNrRmluIERTUCBzZXJpYWwgZHJpdmVyLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMQlUb255IFouIEtvdQl0b255a29AYXJjdHVydXNuZXR3b3Jrcy5jb20KKyAqIENvcHlyaWdodCAoQykgMjAwMSAgIEFyY3R1cnVzIE5ldHdvcmtzIEluYy4gPHd3dy5hcmN0dXJ1c25ldHdvcmtzLmNvbT4KKyAqCisgKiBCYXNlZCBvbiBjb2RlIGZyb20gNjgzMjhzZXJpYWwuYyB3aGljaCB3YXM6CisgKiBDb3B5cmlnaHQgKEMpIDE5OTUgICAgICAgRGF2aWQgUy4gTWlsbGVyICAgIDxkYXZlbUBjYWlwLnJ1dGdlcnMuZWR1PgorICogQ29weXJpZ2h0IChDKSAxOTk4ICAgICAgIEtlbm5ldGggQWxiYW5vd3NraSA8a2phaGRzQGtqYWhkcy5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTkgRC4gSmVmZiBEaW9ubmUgICAgIDxqZWZmQHVjbGludXgub3JnPgorICogQ29weXJpZ2h0IChDKSAxOTk5ICAgICAgIFZsYWRpbWlyIEd1cmV2aWNoICA8dmd1cmV2aWNAY2lzY28uY29tPgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX0JmNTMzX1NFUklBTF9ICisjZGVmaW5lIF9CZjUzM19TRVJJQUxfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2JsYWNrZmluLmg+CisKKyNkZWZpbmUgU1lOQ19BTEwJX19hc21fXyBfX3ZvbGF0aWxlX18gKCJzc3luYztcbiIpCisjZGVmaW5lIEFDQ0VTU19MQVRDSAkqcFVBUlRfTENSIHw9IFVBUlRfTENSX0RMQUI7CisjZGVmaW5lIEFDQ0VTU19QT1JUX0lFUgkqcFVBUlRfTENSICY9ICh+VUFSVF9MQ1JfRExBQik7CisKK3ZvaWQgc2VyaWFsX3NldGJyZyh2b2lkKTsKK3N0YXRpYyB2b2lkIGxvY2FsX3B1dF9jaGFyKGNoYXIgY2gpOwordm9pZCBjYWxjX2JhdWQodm9pZCk7Cit2b2lkIHNlcmlhbF9zZXRicmcodm9pZCk7CitpbnQgc2VyaWFsX2luaXQodm9pZCk7Cit2b2lkIHNlcmlhbF9wdXRjKGNvbnN0IGNoYXIgYyk7CitpbnQgc2VyaWFsX3RzdGModm9pZCk7CitpbnQgc2VyaWFsX2dldGModm9pZCk7Cit2b2lkIHNlcmlhbF9wdXRzKGNvbnN0IGNoYXIgKnMpOworc3RhdGljIHZvaWQgbG9jYWxfcHV0X2NoYXIoY2hhciBjaCk7CisKK2V4dGVybiBpbnQgZ2V0X2Nsb2NrKHZvaWQpOworaW50IGJhdWRfdGFibGVbNV0gPSB7OTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwfTsKKworc3RydWN0IHsKKwl1bnNpZ25lZCBjaGFyIGRsX2hpZ2g7CisJdW5zaWduZWQgY2hhciBkbF9sb3c7Cit9IGh3X2JhdWRfdGFibGVbNV07CisKKyNpZmRlZiBDT05GSUdfU1RBTVAKK2V4dGVybiB1bnNpZ25lZCBsb25nIHBsbF9kaXZfZmFjdDsKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NwdS9iZjUzMy9jYWNoZS5TIGIvY3B1L2JmNTMzL2NhY2hlLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZhYzQwMgotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9iZjUzMy9jYWNoZS5TCkBAIC0wLDAgKzEsMTI1IEBACisKKworI2RlZmluZSBBU1NFTUJMWQorI2luY2x1ZGUgPGFzbS9saW5rYWdlLmg+CisjaW5jbHVkZSA8YXNtL2NwdS9kZWZfTFBCbGFja2Zpbi5oPgorCisudGV4dAorLmFsaWduIDIKK0VOVFJZKGJsYWNrZmluX2ljYWNoZV9mbHVzaF9yYW5nZSkKKwlSMiA9IC0zMjsKKwlSMiA9IFIwICYgUjI7CisJUDAgPSBSMjsKKwlQMSA9IFIxOworCUNTWU5DOworMToKKwlJRkxVU0hbUDArK107CisJQ0MgPSBQMCA8IFAxKGl1KTsKKwlJRiBDQyBKVU1QIDFiKGJwKTsKKwlJRkxVU0hbUDBdOworCVNTWU5DOworCVJUUzsKKworRU5UUlkoYmxhY2tmaW5fZGNhY2hlX2ZsdXNoX3JhbmdlKQorCVIyID0gLTMyOworCVIyID0gUjAgJiBSMjsKKwlQMCA9IFIyOworCVAxID0gUjE7CisJQ1NZTkM7CisxOgorCUZMVVNIW1AwKytdOworCUNDID0gUDAgPCBQMShpdSk7CisJSUYgQ0MgSlVNUCAxYihicCk7CisJRkxVU0hbUDBdOworCVNTWU5DOworCVJUUzsKKworRU5UUlkoX2ljYWNoZV9pbnZhbGlkYXRlKQorRU5UUlkoaW52YWxpZGF0ZV9lbnRpcmVfaWNhY2hlKQorCVstLVNQXSA9ICggUjc6NSk7CisKKwlQMC5MID0gKElNRU1fQ09OVFJPTCAmIDB4RkZGRik7CisJUDAuSCA9IChJTUVNX0NPTlRST0wgPj4gMTYpOworCVI3ID0gW1AwXTsKKworCS8qIENsZWFyIHRoZSBJTUMgYml0ICwgQWxsIHZhbGlkIGJpdHMgaW4gdGhlIGluc3RydWN0aW9uCisJICogY2FjaGUgYXJlIHNldCB0byB0aGUgaW52YWxpZCBzdGF0ZQorCSAqLworCUJJVENMUihSNyxJTUNfUCk7CisJQ0xJIFI2OworCVNTWU5DOwkJLyogU1NZTkMgcmVxdWlyZWQgYmVmb3JlIGludmFsaWRhdGluZyBjYWNoZS4gKi8KKwkuYWxpZ24gODsKKwlbUDBdID0gUjc7CisJU1NZTkM7CisJU1RJIFI2OworCisJLyogQ29uZmlndXJlcyB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGUgYWdpYW4gKi8KKwlSNiA9IChJTUMgfCBFTklDUExCKTsKKwlSNyA9IFI3IHwgUjY7CisKKwlDTEkgUjY7CisJU1NZTkM7CQkvKiBTU1lOQyByZXF1aXJlZCBiZWZvcmUgd3JpdGluZyB0byBJTUVNX0NPTlRST0wuICovCisJLmFsaWduIDg7CisJW1AwXSA9IFI3OworCVNTWU5DOworCVNUSSBSNjsKKworCSggUjc6NSkgPSBbU1ArK107CisJUlRTOworCisvKiBJbnZhbGlkYXRlIHRoZSBFbnRpcmUgRGF0YSBjYWNoZSBieQorICogY2xlYXJpbmcgRE1DWzE6MF0gYml0cworICovCitFTlRSWShpbnZhbGlkYXRlX2VudGlyZV9kY2FjaGUpCitFTlRSWShfZGNhY2hlX2ludmFsaWRhdGUpCisJWy0tU1BdID0gKCBSNzo2KTsKKworCVAwLkwgPSAoRE1FTV9DT05UUk9MICYgMHhGRkZGKTsKKwlQMC5IID0gKERNRU1fQ09OVFJPTCA+PiAxNik7CisJUjcgPSBbUDBdOworCisJLyogQ2xlYXIgdGhlIERNQ1sxOjBdIGJpdHMsIEFsbCB2YWxpZCBiaXRzIGluIHRoZSBkYXRhCisJICogY2FjaGUgYXJlIHNldCB0byB0aGUgaW52YWxpZCBzdGF0ZQorCSAqLworCUJJVENMUihSNyxETUMwX1ApOworCUJJVENMUihSNyxETUMxX1ApOworCUNMSSBSNjsKKwlTU1lOQzsJCS8qIFNTWU5DIHJlcXVpcmVkIGJlZm9yZSB3cml0aW5nIHRvIERNRU1fQ09OVFJPTC4gKi8KKwkuYWxpZ24gODsKKwlbUDBdID0gUjc7CisJU1NZTkM7CisJU1RJIFI2OworCisJLyogQ29uZmlndXJlcyB0aGUgZGF0YSBjYWNoZSBhZ2FpbiAqLworCisJUjYgPSAoQUNBQ0hFX0JDQUNIRSB8IEVORENQTEIgfCBQT1JUX1BSRUYwKTsKKwlSNyA9IFI3IHwgUjY7CisKKwlDTEkgUjY7CisJU1NZTkM7CQkvKiBTU1lOQyByZXF1aXJlZCBiZWZvcmUgd3JpdGluZyB0byBETUVNX0NPTlRST0wuICovCisJLmFsaWduIDg7CisJW1AwXSA9IFI3OworCVNTWU5DOworCVNUSSBSNjsKKworCSggUjc6NikgPSBbU1ArK107CisJUlRTOworCitFTlRSWShibGFja2Zpbl9kY2FjaGVfaW52YWxpZGF0ZV9yYW5nZSkKKwlSMiA9IC0zMjsKKwlSMiA9IFIwICYgUjI7CisJUDAgPSBSMjsKKwlQMSA9IFIxOworCUNTWU5DOworMToKKwlGTFVTSElOVltQMCsrXTsKKwlDQyA9IFAwIDwgUDEgKGl1KTsKKwlJRiBDQyBKVU1QIDFiIChicCk7CisKKwkvKiBJZiB0aGUgZGF0YSBjcm9zc2VzIGEgY2FjaGUgbGluZSwgdGhlbiB3ZSdsbCBiZSBwb2ludGluZyB0bworCSoqIHRoZSBsYXN0IGNhY2hlIGxpbmUsIGJ1dCB3b24ndCBoYXZlIGZsdXNoZWQvaW52YWxpZGF0ZWQgaXQgeWV0LCBzbyBkbworCSoqIG9uZSBtb3JlLgorCSovCisJRkxVU0hJTlZbUDBdOworCVNTWU5DOworCVJUUzsKZGlmZiAtLWdpdCBhL2NwdS9iZjUzMy9jb25maWcubWsgYi9jcHUvYmY1MzMvY29uZmlnLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDUyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvYmY1MzMvY29uZmlnLm1rCkBAIC0wLDAgKzEsMjcgQEAKKyMgVS1ib290IC0gY29uZmlnLm1rCisjCisjIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworIworIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCitQTEFURk9STV9SRUxGTEFHUyArPSAtZmZpeGVkLVA1CmRpZmYgLS1naXQgYS9jcHUvYmY1MzMvY3BsYmhkbHIuUyBiL2NwdS9iZjUzMy9jcGxiaGRsci5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYmU1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvYmY1MzMvY3BsYmhkbHIuUwpAQCAtMCwwICsxLDE5MyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDAzIEFuYWxvZyBEZXZpY2VzLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKgorICogQmxhY2tmaW4gQkY1MzMvMi42IHN1cHBvcnQgOiBMRyBTb2Z0IEluZGlhCisgKi8KKworCisvKiBJbmNsdWRlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHRvIGludm9rZSB0aGUgQ1BMQiBtYW5hZ2VyCisgKi8KKworI2luY2x1ZGUgPGFzbS1ibGFja2Zpbi9saW5rYWdlLmg+CisjaW5jbHVkZSA8YXNtL2NwbGIuaD4KKyNpbmNsdWRlIDxhc20vZW50cnkuaD4KKworCisudGV4dAorCisuZ2xvYmwgX2NwbGJfaGRyOworLnR5cGUgX2NwbGJfaGRyLCBTVFRfRlVOQzsKKy5leHRlcm4gX2NwbGJfbWdyOworLnR5cGUgX2NwbGJfbWdyLCBTVFRfRlVOQzsKKy5leHRlcm4gX191bmtub3duX2V4Y2VwdGlvbl9vY2N1cnJlZDsKKy50eXBlIF9fdW5rbm93bl9leGNlcHRpb25fb2NjdXJyZWQsIFNUVF9GVU5DOworLmV4dGVybiBfX2NwbGJfbWlzc19hbGxfbG9ja2VkOworLnR5cGUgX19jcGxiX21pc3NfYWxsX2xvY2tlZCwgU1RUX0ZVTkM7CisuZXh0ZXJuIF9fY3BsYl9taXNzX3dpdGhvdXRfcmVwbGFjZW1lbnQ7CisudHlwZSBfX2NwbGJfbWlzc193aXRob3V0X3JlcGxhY2VtZW50LCBTVFRfRlVOQzsKKy5leHRlcm4gX19jcGxiX3Byb3RlY3Rpb25fdmlvbGF0aW9uOworLnR5cGUgX19jcGxiX3Byb3RlY3Rpb25fdmlvbGF0aW9uLCBTVFRfRlVOQzsKKy5leHRlcm4gcGFuaWNfcHY7CisKKy5hbGlnbiAyOworCitFTlRSWShfY3BsYl9oZHIpCisJU1NZTkM7CisJWy0tU1BdID0gKCBSNzowLCBQNTowICk7CisJWy0tU1BdID0gQVNUQVQ7CisJWy0tU1BdID0gU0VRU1RBVDsKKwlbLS1TUF0gPSBJMDsKKwlbLS1TUF0gPSBJMTsKKwlbLS1TUF0gPSBJMjsKKwlbLS1TUF0gPSBJMzsKKwlbLS1TUF0gPSBMVDA7CisJWy0tU1BdID0gTEIwOworCVstLVNQXSA9IExDMDsKKwlbLS1TUF0gPSBMVDE7CisJWy0tU1BdID0gTEIxOworCVstLVNQXSA9IExDMTsKKwlSMiA9IFNFUVNUQVQ7CisKKwkvKk1hc2sgdGhlIGNvbnRlbnRzIG9mIFNFUVNUQVQgYW5kIGxlYXZlIG9ubHkgRVhDQVVTRSBpbiBSMiovCisJUjIgPDw9IDI2OworCVIyID4+PSAyNjsKKworCVIxID0gMHgyMzsgLyogRGF0YSBhY2Nlc3MgQ1BMQiBwcm90ZWN0aW9uIHZpb2xhdGlvbiAqLworCUNDID0gUjIgPT0gUjE7CisJSUYgIUNDIEpVTVAgbm90X2RhdGFfd3JpdGU7CisJUjAgPSAyOwkJLyogaXMgYSB3cml0ZSB0byBkYXRhIHNwYWNlKi8KKwlKVU1QIGlzX2ljcGxiX21pc3M7CisKK25vdF9kYXRhX3dyaXRlOgorCVIxID0gMHgyQzsgLyogQ1BMQiBtaXNzIG9uIGFuIGluc3RydWN0aW9uIGZldGNoICovCisJQ0MgPSBSMiA9PSBSMTsKKwlSMCA9IDA7CQkvKiBpc19kYXRhX21pc3MgPT0gRmFsc2UqLworCUlGIENDIEpVTVAgaXNfaWNwbGJfbWlzczsKKworCVIxID0gMHgyNjsKKwlDQyA9IFIyID09IFIxOworCUlGICFDQyBKVU1QIHVua25vd247CisKKwlSMCA9IDE7CQkvKiBpc19kYXRhX21pc3MgPT0gVHJ1ZSovCisKK2lzX2ljcGxiX21pc3M6CisKKyNpZiAoIGRlZmluZWQgKENPTkZJR19CTEtGSU5fQ0FDSEUpIHx8IGRlZmluZWQgKENPTkZJR19CTEtGSU5fRENBQ0hFKSkKKyNpZiAoIGRlZmluZWQgKENPTkZJR19CTEtGSU5fQ0FDSEUpICYmICFkZWZpbmVkIChDT05GSUdfQkxLRklOX0RDQUNIRSkpCisJUjEgPSBDUExCX0VOQUJMRV9JQ0FDSEU7CisjZW5kaWYKKyNpZiAoICFkZWZpbmVkIChDT05GSUdfQkxLRklOX0NBQ0hFKSAmJiBkZWZpbmVkIChDT05GSUdfQkxLRklOX0RDQUNIRSkpCisJUjEgPSBDUExCX0VOQUJMRV9EQ0FDSEU7CisjZW5kaWYKKyNpZiAoIGRlZmluZWQgKENPTkZJR19CTEtGSU5fQ0FDSEUpICYmIGRlZmluZWQgKENPTkZJR19CTEtGSU5fRENBQ0hFKSkKKwlSMSA9IENQTEJfRU5BQkxFX0RDQUNIRSB8IENQTEJfRU5BQkxFX0lDQUNIRTsKKyNlbmRpZgorI2Vsc2UKKwlSMSA9IDA7CisjZW5kaWYKKworCVstLVNQXSA9IFJFVFM7CisJQ0FMTCBfY3BsYl9tZ3I7CisJUkVUUyA9IFtTUCsrXTsKKwlDQyA9IFIwID09IDA7CisJSUYgIUNDIEpVTVAgbm90X3JlcGxhY2VkOworCUxDMSA9IFtTUCsrXTsKKwlMQjEgPSBbU1ArK107CisJTFQxID0gW1NQKytdOworCUxDMCA9IFtTUCsrXTsKKwlMQjAgPSBbU1ArK107CisJTFQwID0gW1NQKytdOworCUkzID0gW1NQKytdOworCUkyID0gW1NQKytdOworCUkxID0gW1NQKytdOworCUkwID0gW1NQKytdOworCVNFUVNUQVQgPSBbU1ArK107CisJQVNUQVQgPSBbU1ArK107CisJKCBSNzowLCBQNTowICkgPSBbU1ArK107CisJUlRTOworCit1bmtub3duOgorCVstLVNQXSA9IFJFVFM7CisJQ0FMTCBfX3Vua25vd25fZXhjZXB0aW9uX29jY3VycmVkOworCVJFVFMgPSBbU1ArK107CisJSlVNUCB1bmtub3duOworbm90X3JlcGxhY2VkOgorCUNDID0gUjAgPT0gQ1BMQl9OT19VTkxPQ0tFRDsKKwlJRiAhQ0MgSlVNUCBuZXh0X2NoZWNrOworCVstLVNQXSA9IFJFVFM7CisJQ0FMTCBfX2NwbGJfbWlzc19hbGxfbG9ja2VkOworCVJFVFMgPSBbU1ArK107CituZXh0X2NoZWNrOgorCUNDID0gUjAgPT0gQ1BMQl9OT19BRERSX01BVENIOworCUlGICFDQyBKVU1QIG5leHRfY2hlY2syOworCVstLVNQXSA9IFJFVFM7CisJQ0FMTCBfX2NwbGJfbWlzc193aXRob3V0X3JlcGxhY2VtZW50OworCVJFVFMgPSBbU1ArK107CisJSlVNUCBub3RfcmVwbGFjZWQ7CituZXh0X2NoZWNrMjoKKwlDQyA9IFIwID09IENQTEJfUFJPVF9WSU9MOworCUlGICFDQyBKVU1QIHN0cmFuZ2VfcmV0dXJuX2Zyb21fY3BsYl9tZ3I7CisJWy0tU1BdID0gUkVUUzsKKwlDQUxMIF9fY3BsYl9wcm90ZWN0aW9uX3Zpb2xhdGlvbjsKKwlSRVRTID0gW1NQKytdOworCUpVTVAgbm90X3JlcGxhY2VkOworc3RyYW5nZV9yZXR1cm5fZnJvbV9jcGxiX21ncjoKKwlJRExFOworCUNTWU5DOworCUpVTVAgc3RyYW5nZV9yZXR1cm5fZnJvbV9jcGxiX21ncjsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRGlhZ25vc3RpYyBleGNlcHRpb24gaGFuZGxlcnMKKyAqLworCitfX2NwbGJfbWlzc19hbGxfbG9ja2VkOgorCXNwICs9IC0xMjsKKwlSMCA9IENQTEJfTk9fVU5MT0NLRUQ7CisJY2FsbCBwYW5pY19iZmluOworCVNQICs9IDEyOworCVJUUzsKKworIF9fY3BsYl9taXNzX3dpdGhvdXRfcmVwbGFjZW1lbnQ6CisJc3AgKz0gLTEyOworCVIwID0gQ1BMQl9OT19BRERSX01BVENIOworCWNhbGwgcGFuaWNfYmZpbjsKKwlTUCArPSAxMjsKKwlSVFM7CisKK19fY3BsYl9wcm90ZWN0aW9uX3Zpb2xhdGlvbjoKKwlzcCArPSAtMTI7CisJUjAgPSBDUExCX1BST1RfVklPTDsKKwljYWxsIHBhbmljX2JmaW47CisJU1AgKz0gMTI7CisJUlRTOworCitfX3Vua25vd25fZXhjZXB0aW9uX29jY3VycmVkOgorCisJLyogVGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGJ5IHRoZSBkZWZhdWx0IGV4Y2VwdGlvbgorCSAqIGhhbmRsZXIsIGlmIGl0IGRvZXMgbm90IHJlY29nbmlzZSB0aGUga2luZCBvZgorCSAqIGV4Y2VwdGlvbiB0aGF0IGhhcyBvY2N1cnJlZC4gSW4gb3RoZXIgd29yZHMsIHRoZQorCSAqIGRlZmF1bHQgaGFuZGxlciBvbmx5IGhhbmRsZXMgc29tZSBvZiB0aGUgc3lzdGVtJ3MKKwkgKiBleGNlcHRpb24gdHlwZXMsIGFuZCBpdCBkb2VzIG5vdCBleHBlY3QgYW55IG90aGVycworCSAqIHRvIG9jY3VyLiBJZiB5b3VyIGFwcGxpY2F0aW9uIGlzIGdvaW5nIHRvIGJlIHVzaW5nCisJICogb3RoZXIga2luZHMgb2YgZXhjZXB0aW9ucywgeW91IG11c3QgcmVwbGFjZSB0aGUKKwkgKiBkZWZhdWx0IGhhbmRsZXIgd2l0aCB5b3VyIG93biwgdGhhdCBoYW5kbGVzIGFsbCB0aGUKKwkgKiBleGNlcHRpb25zIHlvdSB3aWxsIHVzZS4KKwkgKgorCSAqIFNpbmNlIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8sIHdlIGp1c3QgbG9vcCBoZXJlCisJICogYXQgd2hhdCB3ZSBob3BlIGlzIGEgc3VpdGFibHkgaW5mb3JtYXRpdmUgbGFiZWwuCisJICovCisKKwlJRExFOworZG9fbm90X2tub3dfd2hhdF90b19kbzoKKwlDU1lOQzsKKwlKVU1QIF9fdW5rbm93bl9leGNlcHRpb25fb2NjdXJyZWQ7CisKKwlSVFM7CisuX191bmtub3duX2V4Y2VwdGlvbl9vY2N1cnJlZC5lbmQ6CisuZ2xvYmFsIF9fdW5rbm93bl9leGNlcHRpb25fb2NjdXJyZWQ7CisudHlwZSBfX3Vua25vd25fZXhjZXB0aW9uX29jY3VycmVkLCBTVFRfRlVOQzsKKworcGFuaWNfYmZpbjoKKwlSVFM7CmRpZmYgLS1naXQgYS9jcHUvYmY1MzMvY3BsYm1nci5TIGIvY3B1L2JmNTMzL2NwbGJtZ3IuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTBiMDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvY3B1L2JmNTMzL2NwbGJtZ3IuUwpAQCAtMCwwICsxLDYwMSBAQAorLypUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZS4KKyAqCisgKiBCbGFja2ZpbiBCRjUzMy8yLjYgc3VwcG9ydCA6IExHIFNvZnQgSW5kaWEKKyAqIE1vZGlmaWNhdGlvbjogRGVjIDA3IDIwMDQKKyAqCTEuIENvcnJlY3Rpb24gaW4gaWNoZWNrX2xvY2suICBWYWxpZCBsb2NrIGVudHJpZXMgd2VyZQorICoJICAgZ2V0aW5nIHZpY3RpbWl6ZWQsIGZvciBpbnN0cnVjdGlvbiBjcGxiIHJlcGxhY2VtZW50LgorICoJMi4gU2V0dXAgbG9vcCdzIGFyZSBtb2RpZmllZCBhcyBub3cgdG9vbGNoYWluIHN1cHBvcnQncyBQIEluZGV4ZWQKKyAqCSAgIGFkZHJlc3NpbmcKKyAqCSAgIDpMRyBTb2Z0IEluZGlhCisgKgorICovCisKKy8qIFVzYWdlOiBpbnQgX2NwbGJfbWdyKGlzX2RhdGFfbWlzcyxpbnQgZW5hYmxlX2NhY2hlKQorICogaXNfZGF0YV9taXNzPT0yID0+IE1hcmsgYXMgRGlydHksIHdyaXRlIHRvIHRoZSBjbGVhbiBkYXRhIHBhZ2UKKyAqIGlzX2RhdGFfbWlzcz09MSA9PiBSZXBsYWNlIGEgZGF0YSBDUExCLgorICogaXNfZGF0YV9taXNzPT0wID0+IFJlcGxhY2UgYW4gaW5zdHJ1Y3Rpb24gQ1BMQi4KKyAqCisgKiBSZXR1cm5zOgorICogQ1BMQl9SRUxPQURFRAk9PiBTdWNjZXNzZnVsbHkgdXBkYXRlZCBDUExCIHRhYmxlLgorICogQ1BMQl9OT19VTkxPQ0tFRAk9PiBBbGwgQ1BMQnMgYXJlIGxvY2tlZCwgc28gY2Fubm90IGJlIGV2aWN0ZWQuVGhpcyBpbmRpY2F0ZXMKKyAqCQkJCXRoYXQgdGhlIENQTEJzIGluIHRoZSBjb25maWd1cmF0aW9uIHRhYmxlaSBhcmUgYmFkbHkKKyAqCQkJCWNvbmZpZ3VyZWQsIGFzIHRoaXMgc2hvdWxkIG5ldmVyIG9jY3VyLgorICogQ1BMQl9OT19BRERSX01BVENICT0+IFRoZSBhZGRyZXNzIGJlaW5nIGFjY2Vzc2VkLCB0aGF0IHRyaWdnZXJlZCB0aGUgZXhjZXB0aW9uLAorICoJCQkJaXMgbm90IGNvdmVyZWQgYnkgYW55IG9mIHRoZSBDUExCcyBpbiB0aGUgY29uZmlndXJhdGlvbgorICoJCQkJdGFibGUuIFRoZSBhcHBsaWNhdGlvbiBpc2kgcHJlc3VtYWJseSBtaXNiZWhhdmluZy4KKyAqIENQTEJfUFJPVF9WSU9MCT0+IFRoZSBhZGRyZXNzIGJlaW5nIGFjY2Vzc2VkLCB0aGF0IHRyaWdnZXJlZCB0aGVpIGV4Y2VwdGlvbiwKKyAqCQkJCXdhcyBub3QgYSBmaXJzdC13cml0ZSB0byBhIGNsZWFuIFdyaXRlIEJhY2sgRGF0YSBwYWdlLAorICoJCQkJYW5kIHNvIHByZXN1bWFibHkgaXMgYSBnZW51aW5lIHZpb2xhdGlvbiBvZiB0aGUgcGFnZSdzCisgKgkJCQlwcm90ZWN0aW9uIGF0dHJpYnV0ZXMuIFRoZSBhcHBsaWNhdGlvbiBpcyBtaXNiZWhhdmluZy4KKyAqLworI2RlZmluZSBBU1NFTUJMWQorCisjaW5jbHVkZSA8YXNtLWJsYWNrZmluL2xpbmthZ2UuaD4KKyNpbmNsdWRlIDxhc20tYmxhY2tmaW4vYmxhY2tmaW4uaD4KKyNpbmNsdWRlIDxhc20tYmxhY2tmaW4vY3BsYnRhYi5oPgorI2luY2x1ZGUgPGFzbS1ibGFja2Zpbi9jcGxiLmg+CisKKy50ZXh0CisKKy5hbGlnbiAyOworRU5UUlkoX2NwbGJfbWdyKQorCisJWy0tU1BdPSggUjc6MCxQNTowICk7CisKKwlDQyA9IFIwID09IDI7CisJSUYgQ0MgSlVNUCBkY3BsYl93cml0ZTsKKworCUNDID0gUjAgPT0gMDsKKwlJRiAhQ0MgSlVNUCBkY3BsYl9taXNzX2NvbXBhcmU7CisKKwkvKiBJQ1BMQiBNaXNzIEV4Y2VwdGlvbi4gV2UgbmVlZCB0byBjaG9vc2Ugb25lIG9mIHRoZQorCSogY3VycmVudGx5LWluc3RhbGxlZCBDUExCcywgYW5kIHJlcGxhY2UgaXQgd2l0aCBvbmUKKwkqIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gdGFibGUuCisJKi8KKworCVA0LkwgPSAoSUNQTEJfRkFVTFRfQUREUiAmIDB4RkZGRik7CisJUDQuSCA9IChJQ1BMQl9GQVVMVF9BRERSID4+IDE2KTsKKworCVAxID0gMTY7CisJUDUuTCA9IHBhZ2Vfc2l6ZV90YWJsZTsKKwlQNS5IID0gcGFnZV9zaXplX3RhYmxlOworCisJUDAuTCA9IChJQ1BMQl9EQVRBMCAmIDB4RkZGRik7CisJUDAuSCA9IChJQ1BMQl9EQVRBMCA+PiAxNik7CisJUjQgPSBbUDRdOwkJLyogR2V0IGZhdWx0aW5nIGFkZHJlc3MqLworCVI2ID0gNjQ7CQkvKiBBZHZhbmNlIHBhc3QgdGhlIGZhdWx0IGFkZHJlc3MsIHdoaWNoKi8KKwlSNiA9IFI2ICsgUjQ7CQkvKiB3ZSdsbCB1c2UgaWYgd2UgZmluZCBhIG1hdGNoKi8KKwlSMyA9ICgoMTYgPDwgOCkgfCAyKTsJLyogRXh0cmFjdCBtYXNrLCBiaXRzIDE2IGFuZCAxNy4qLworCisJUjUgPSAwOworaXNlYXJjaDoKKworCVIxID0gW1AwLTB4MTAwXTsJLyogQWRkcmVzcyBmb3IgdGhpcyBDUExCICovCisKKwlSMCA9IFtQMCsrXTsJCS8qIEluZm8gZm9yIHRoaXMgQ1BMQiovCisJQ0MgPSBCSVRUU1QoUjAsMCk7CS8qIElzIHRoZSBDUExCIHZhbGlkPyovCisJSUYgIUNDIEpVTVAgbm9tYXRjaDsJLyogU2tpcCBpdCwgaWYgbm90LiovCisJQ0MgPSBSNCA8IFIxKElVKTsJLyogSWYgZmF1bHQgYWRkcmVzcyBsZXNzIHRoYW4gcGFnZSBzdGFydCovCisJSUYgQ0MgSlVNUCBub21hdGNoOwkvKiB0aGVuIHNraXAgdGhpcyBvbmUuKi8KKwlSMiA9IEVYVFJBQ1QoUjAsUjMuTCkgKFopOwkvKiBHZXQgcGFnZSBzaXplKi8KKwlQMSA9IFIyOworCVAxID0gUDUgKyAoUDE8PDIpOwkvKiBpbmRleCBpbnRvIHBhZ2Utc2l6ZSB0YWJsZSovCisJUjIgPSBbUDFdOwkJLyogR2V0IHRoZSBwYWdlIHNpemUqLworCVIxID0gUjEgKyBSMjsJCS8qIGFuZCBhZGQgdG8gcGFnZSBzdGFydCwgdG8gZ2V0IHBhZ2UgZW5kKi8KKwlDQyA9IFI0IDwgUjEoSVUpOwkvKiBhbmQgc2VlIHdoZXRoZXIgZmF1bHQgYWRkciBpcyBpbiBwYWdlLiovCisJSUYgIUNDIFI0ID0gUjY7CQkvKiBJZiBzbywgYWR2YW5jZSB0aGUgYWRkcmVzcyBhbmQgZmluaXNoIGxvb3AuKi8KKwlJRiAhQ0MgSlVNUCBpc2VhcmNoX2RvbmU7Citub21hdGNoOgorCS8qIEdvIGFyb3VuZCBhZ2FpbiovCisJUjUgKz0gMTsKKwlDQyA9IEJJVFRTVChSNSwgNCk7CS8qIGkuZSBDQyA9IFI1ID49IDE2Ki8KKwlJRiAhQ0MgSlVNUCBpc2VhcmNoOworCitpc2VhcmNoX2RvbmU6CisJSTAgPSBSNDsJCS8qIEZhdWx0IGFkZHJlc3Mgd2UnbGwgc2VhcmNoIGZvciovCisKKwkvKiBzZXQgdXAgcG9pbnRlcnMgKi8KKwlQMC5MID0gKElDUExCX0RBVEEwICYgMHhGRkZGKTsKKwlQMC5IID0gKElDUExCX0RBVEEwID4+IDE2KTsKKworCS8qIFRoZSByZXBsYWNlbWVudCBwcm9jZWR1cmUgZm9yIElDUExCcyAqLworCisJUDQuTCA9IChJTUVNX0NPTlRST0wgJiAweEZGRkYpOworCVA0LkggPSAoSU1FTV9DT05UUk9MID4+IDE2KTsKKworCS8qIGRpc2FibGUgY3BsYnMgKi8KKwlSNSA9IFtQNF07CQkvKiBDb250cm9sIFJlZ2lzdGVyKi8KKwlCSVRDTFIoUjUsRU5JQ1BMQl9QKTsKKwlDTEkgUjE7CisJU1NZTkM7CQkvKiBTU1lOQyByZXF1aXJlZCBiZWZvcmUgd3JpdGluZyB0byBJTUVNX0NPTlRST0wuICovCisJLmFsaWduIDg7CisJW1A0XSA9IFI1OworCVNTWU5DOworCVNUSSBSMTsKKworCVIxID0gLTE7CQkvKiBlbmQgcG9pbnQgY29tcGFyaXNvbiAqLworCVIzID0gMTY7CQkvKiBjb3VudGVyICovCisKKwkvKiBTZWFyY2ggdGhyb3VnaCBDUExCcyBmb3IgZmlyc3Qgbm9uLWxvY2tlZCBlbnRyeSAqLworCS8qIE92ZXJ3cml0ZSBpdCBieSBtb3ZpbmcgZXZlcnlvbmUgZWxzZSB1cCBieSAxICovCitpY2hlY2tfbG9jazoKKwlSMCA9IFtQMCsrXTsKKwlSMyA9IFIzICsgUjE7CisJQ0MgPSBSMyA9PSBSMTsKKwlJRiBDQyBKVU1QIGFsbF9sb2NrZWQ7CisJQ0MgPSBCSVRUU1QoUjAsIDApOwkJLyogYW4gaW52YWxpZCBlbnRyeSBpcyBnb29kICovCisJSUYgIUNDIEpVTVAgaWZvdW5kX3ZpY3RpbTsKKwlDQyA9IEJJVFRTVChSMCwxKTsJCS8qIGJ1dCBhIGxvY2tlZCBlbnRyeSBpc24ndCAqLworCUlGIENDIEpVTVAgaWNoZWNrX2xvY2s7CisKK2lmb3VuZF92aWN0aW06CisjaWZkZWYgQ09ORklHX0NQTEJfSU5GTworCVI3ID0gW1AwIC0gMHgxMDRdOworCVAyLkwgPSBpcGR0X3RhYmxlOworCVAyLkggPSBpcGR0X3RhYmxlOworCVAzLkwgPSBpcGR0X3N3YXBjb3VudF90YWJsZTsKKwlQMy5IID0gaXBkdF9zd2FwY291bnRfdGFibGU7CisJUDMgKz0gLTQ7CitpY291bnQ6CisJUjIgPSBbUDJdOwkvKiBhZGRyZXNzIGZyb20gY29uZmlnIHRhYmxlICovCisJUDIgKz0gODsKKwlQMyArPSA4OworCUNDID0gUjI9PS0xOworCUlGIENDIEpVTVAgaWNvdW50X2RvbmU7CisJQ0MgPSBSNz09UjI7CisJSUYgIUNDIEpVTVAgaWNvdW50OworCVI3ID0gW1AzXTsKKwlSNyArPSAxOworCVtQM10gPSBSNzsKKwlDU1lOQzsKK2ljb3VudF9kb25lOgorI2VuZGlmCisJTEMwPVIzOworCUxTRVRVUChpc19tb3ZlLGllX21vdmUpIExDMDsKK2lzX21vdmU6CisJUjAgPSBbUDBdOworCVtQMCAtIDRdID0gUjA7CisJUjAgPSBbUDAgLSAweDEwMF07CisJW1AwLTB4MTA0XSA9IFIwOworaWVfbW92ZTpQMCs9NDsKKworCS8qIFdlJ3ZlIG1hZGUgc3BhY2UgaW4gdGhlIElDUExCIHRhYmxlLCBzbyB0aGF0IElDUExCMTUKKwkgKiBpcyBub3cgZnJlZSB0byBiZSBvdmVyd3JpdHRlbi4gTmV4dCwgd2UgaGF2ZSB0byBkZXRlcm1pbmUKKwkgKiB3aGljaCBDUExCIHdlIG5lZWQgdG8gaW5zdGFsbCwgZnJvbSB0aGUgY29uZmlndXJhdGlvbgorCSAqIHRhYmxlLiBUaGlzIGlzIGEgbWF0dGVyIG9mIGdldHRpbmcgdGhlIHN0YXJ0LW9mLXBhZ2UKKwkgKiBhZGRyZXNzZXMgYW5kIHBhZ2UtbGVuZ3RocyBmcm9tIHRoZSBjb25maWcgdGFibGUsIGFuZAorCSAqIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIGZhdWx0IGFkZHJlc3MgZmFsbHMgd2l0aGluIHRoYXQKKwkgKiByYW5nZS4KKwkgKi8KKworCVAyLkwgPSBpcGR0X3RhYmxlOworCVAyLkggPSBpcGR0X3RhYmxlOworI2lmZGVmCUNPTkZJR19DUExCX0lORk8KKwlQMy5MID0gaXBkdF9zd2FwY291bnRfdGFibGU7CisJUDMuSCA9IGlwZHRfc3dhcGNvdW50X3RhYmxlOworCVAzICs9IC04OworI2VuZGlmCisJUDAuTCA9IHBhZ2Vfc2l6ZV90YWJsZTsKKwlQMC5IID0gcGFnZV9zaXplX3RhYmxlOworCisJLyogUmV0cmlldmUgb3VyIGZhdWx0IGFkZHJlc3MgKHdoaWNoIG1heSBoYXZlIGJlZW4gYWR2YW5jZWQKKwkgKiBiZWNhdXNlIHRoZSBmYXVsdGluZyBpbnN0cnVjdGlvbiBjcm9zc2VkIGEgcGFnZSBib3VuZGFyeSkuCisJICovCisKKwlSMCA9IEkwOworCisJLyogQW4gZXh0cmFjdGlvbiBwYXR0ZXJuLCB0byBnZXQgdGhlIHBhZ2Utc2l6ZSBiaXRzIGZyb20KKwkgKiB0aGUgQ1BMQiBkYXRhIGVudHJ5LiBCaXRzIDE2LTE3LCBzbyB0d28gYml0cyBhdCBwb3NuIDE2LgorCSAqLworCisJUjEgPSAoKDE2PDw4KXwyKTsKK2luZXh0OglSNCA9IFtQMisrXTsJLyogYWRkcmVzcyBmcm9tIGNvbmZpZyB0YWJsZSAqLworCVIyID0gW1AyKytdOwkvKiBkYXRhIGZyb20gY29uZmlnIHRhYmxlICovCisjaWZkZWYJQ09ORklHX0NQTEJfSU5GTworCVAzICs9IDg7CisjZW5kaWYKKworCUNDID0gUjQgPT0gLTE7CS8qIEVuZCBvZiBjb25maWcgdGFibGUqLworCUlGIENDIEpVTVAgbm9fcGFnZV9pbl90YWJsZTsKKworCS8qIFNlZSBpZiBmYWlsZWQgYWRkcmVzcyA+IHN0YXJ0IGFkZHJlc3MgKi8KKwlDQyA9IFI0IDw9IFIwKElVKTsKKwlJRiAhQ0MgSlVNUCBpbmV4dDsKKworCS8qIGV4dHJhY3QgcGFnZSBzaXplICgxNzoxNikqLworCVIzID0gRVhUUkFDVChSMiwgUjEuTCkgKFopOworCisJLyogYWRkIHBhZ2Ugc2l6ZSB0byBhZGRyIHRvIGdldCByYW5nZSAqLworCisJUDUgPSBSMzsKKwlQNSA9IFAwICsgKFA1IDw8IDIpOwkvKiBzY2FsZWQsIGZvciBpbnQgYWNjZXNzKi8KKwlSMyA9IFtQNV07CisJUjMgPSBSMyArIFI0OworCisJLyogU2VlIGlmIGZhaWxlZCBhZGRyZXNzIDwgKHN0YXJ0IGFkZHJlc3MgKyBwYWdlIHNpemUpICovCisJQ0MgPSBSMCA8IFIzKElVKTsKKwlJRiAhQ0MgSlVNUCBpbmV4dDsKKworCS8qIFdlJ3ZlIGZvdW5kIGEgQ1BMQiBpbiB0aGUgY29uZmlnIHRhYmxlIHRoYXQgY292ZXJzCisJICogdGhlIGZhdWx0aW5nIGFkZHJlc3MsIHNvIGluc3RhbGwgdGhpcyBDUExCIGludG8gdGhlCisJICogbGFzdCBlbnRyeSBvZiB0aGUgdGFibGUuCisJICovCisKKwlQMS5MID0gKElDUExCX0RBVEExNSAmIDB4RkZGRik7CQkvKklDUExCX0RBVEExNSovCisJUDEuSCA9IChJQ1BMQl9EQVRBMTUgPj4gMTYpOworCVtQMV0gPSBSMjsKKwlbUDEtMHgxMDBdID0gUjQ7CisjaWZkZWYJQ09ORklHX0NQTEJfSU5GTworCVIzID0gW1AzXTsKKwlSMyArPSAxOworCVtQM10gPSBSMzsKKyNlbmRpZgorCisJLyogUDQgcG9pbnRzIHRvIElNRU1fQ09OVFJPTCwgYW5kIFI1IGNvbnRhaW5zIGl0cyBvbGQKKwkgKiB2YWx1ZSwgYWZ0ZXIgd2UgZGlzYWJsZWQgSUNQTEJTLiBSZS1lbmFibGUgdGhlbS4KKwkgKi8KKworCUJJVFNFVChSNSxFTklDUExCX1ApOworCUNMSSBSMjsKKwlTU1lOQzsJCS8qIFNTWU5DIHJlcXVpcmVkIGJlZm9yZSB3cml0aW5nIHRvIElNRU1fQ09OVFJPTC4gKi8KKwkuYWxpZ24gODsKKwlbUDRdID0gUjU7CisJU1NZTkM7CisJU1RJIFIyOworCisJKCBSNzowLFA1OjAgKSA9IFtTUCsrXTsKKwlSMCA9IENQTEJfUkVMT0FERUQ7CisJUlRTOworCisvKiBGQUlMRUQgQ0FTRVMqLworbm9fcGFnZV9pbl90YWJsZToKKwkoIFI3OjAsUDU6MCApID0gW1NQKytdOworCVIwID0gQ1BMQl9OT19BRERSX01BVENIOworCVJUUzsKK2FsbF9sb2NrZWQ6CisJKCBSNzowLFA1OjAgKSA9IFtTUCsrXTsKKwlSMCA9IENQTEJfTk9fVU5MT0NLRUQ7CisJUlRTOworcHJvdF92aW9sYXRpb246CisJKCBSNzowLFA1OjAgKSA9IFtTUCsrXTsKKwlSMCA9IENQTEJfUFJPVF9WSU9MOworCVJUUzsKKworZGNwbGJfd3JpdGU6CisKKwkvKiBpZiBhIERDUExCIGlzIG1hcmtlZCBhcyB3cml0ZS1iYWNrIChDUExCX1dUPT0wKSwgYW5kCisJICogaXQgaXMgY2xlYW4gKENQTEJfRElSVFk9PTApLCB0aGVuIGEgd3JpdGUgdG8gdGhlCisJICogQ1BMQidzIHBhZ2UgdHJpZ2dlcnMgYSBwcm90ZWN0aW9uIHZpb2xhdGlvbi4gV2UgaGF2ZSB0bworCSAqIG1hcmsgdGhlIENQTEIgYXMgZGlydHksIHRvIGluZGljYXRlIHRoYXQgdGhlcmUgYXJlCisJICogcGVuZGluZyB3cml0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBDUExCLgorCSAqLworCisJUDQuTCA9IChEQ1BMQl9TVEFUVVMgJiAweEZGRkYpOworCVA0LkggPSAoRENQTEJfU1RBVFVTID4+IDE2KTsKKwlQMy5MID0gKERDUExCX0RBVEEwICYgMHhGRkZGKTsKKwlQMy5IID0gKERDUExCX0RBVEEwID4+IDE2KTsKKwlSNSA9IFtQNF07CisKKwkvKiBBIHByb3RlY3Rpb24gdmlvbGF0aW9uIGNhbiBiZSBjYXVzZWQgYnkgbW9yZSB0aGFuIGp1c3Qgd3JpdGVzCisJICogdG8gYSBjbGVhbiBXQiBwYWdlLCBzbyB3ZSBoYXZlIHRvIGVuc3VyZSB0aGF0OgorCSAqIC0gSXQncyBhIHdyaXRlCisJICogLSB0byBhIGNsZWFuIFdCIHBhZ2UKKwkgKiAtIGFuZCBpcyBhbGxvd2VkIGluIHRoZSBtb2RlIHRoZSBhY2Nlc3Mgb2NjdXJyZWQuCisJICovCisKKwlDQyA9IEJJVFRTVChSNSwgMTYpOwkvKiBlbnN1cmUgaXQgd2FzIGEgd3JpdGUqLworCUlGICFDQyBKVU1QIHByb3RfdmlvbGF0aW9uOworCisJLyogdG8gY2hlY2sgdGhlIHJlc3QsIHdlIGhhdmUgdG8gcmV0cmlldmUgdGhlIERDUExCLiovCisKKwkvKiBUaGUgbG93IGhhbGYgb2YgRENQTEJfU1RBVFVTIGlzIGEgYml0IG1hc2sqLworCisJUjIgPSBSNS5MIChaKTsJLyogaW5kaWNhdGluZyB3aGljaCBDUExCIHRyaWdnZXJlZCB0aGUgZXZlbnQuKi8KKwlSMyA9IDMwOwkvKiBzbyB3ZSBjYW4gdXNlIHRoaXMgdG8gZGV0ZXJtaW5lIHRoZSBvZmZzZXQqLworCVIyLkwgPSBTSUdOQklUUyBSMjsKKwlSMiA9IFIyLkwgKFopOwkvKiBpbnRvIHRoZSBEQ1BMQiB0YWJsZS4qLworCVIzID0gUjMgLSBSMjsKKwlQNCA9IFIzOworCVAzID0gUDMgKyAoUDQ8PDIpOworCVIzID0gW1AzXTsJLyogUmV0cmlldmUgdGhlIENQTEIqLworCisJLyogTm93IHdlIGNhbiBjaGVjayB3aGV0aGVyIGl0J3MgYSBjbGVhbiBXQiBwYWdlKi8KKworCUNDID0gQklUVFNUKFIzLCAxNCk7CS8qIDA9PVdCLCAxPT1XVCovCisJSUYgQ0MgSlVNUCBwcm90X3Zpb2xhdGlvbjsKKwlDQyA9IEJJVFRTVChSMywgNyk7CS8qIDAgPT0gY2xlYW4sIDEgPT0gZGlydHkqLworCUlGIENDIEpVTVAgcHJvdF92aW9sYXRpb247CisKKwkvKiBDaGVjayB3aGV0aGVyIHRoZSB3cml0ZSBpcyBhbGxvd2VkIGluIHRoZSBtb2RlIHRoYXQgd2FzIGFjdGl2ZS4qLworCisJUjIgPSAxPDwzOwkJLyogY2hlY2tpbmcgd3JpdGUgaW4gdXNlciBtb2RlKi8KKwlDQyA9IEJJVFRTVChSNSwgMTcpOwkvKiAwPT13YXMgdXNlciwgMT09d2FzIHN1cGVyKi8KKwlSNSA9IENDOworCVIyIDw8PSBSNTsJCS8qIGlmIHdhcyBzdXBlciwgY2hlY2sgd3JpdGUgaW4gc3VwZXIgbW9kZSovCisJUjIgPSBSMyAmIFIyOworCUNDID0gUjIgPT0gMDsKKwlJRiBDQyBKVU1QIHByb3RfdmlvbGF0aW9uOworCisJLyogSXQncyBhIGdlbnVpbmUgd3JpdGUtdG8tY2xlYW4tcGFnZS4qLworCisJQklUU0VUKFIzLCA3KTsJCS8qIG1hcmsgYXMgZGlydHkqLworCVtQM10gPSBSMzsJCS8qIGFuZCB3cml0ZSBiYWNrLiovCisJQ1NZTkM7CisJKCBSNzowLFA1OjAgKSA9IFtTUCsrXTsKKwlSMCA9IENQTEJfUkVMT0FERUQ7CisJUlRTOworCitkY3BsYl9taXNzX2NvbXBhcmU6CisKKwkvKiBEYXRhIENQTEIgTWlzcyBldmVudC4gV2UgbmVlZCB0byBjaG9vc2UgYSBDUExCIHRvCisJICogZXZpY3QsIGFuZCB0aGVuIGxvY2F0ZSBhIG5ldyBDUExCIHRvIGluc3RhbGwgZnJvbSB0aGUKKwkgKiBjb25maWcgdGFibGUsIHRoYXQgY292ZXJzIHRoZSBmYXVsdGluZyBhZGRyZXNzLgorCSAqLworCisJUDEuTCA9IChEQ1BMQl9EQVRBMTUgJiAweEZGRkYpOworCVAxLkggPSAoRENQTEJfREFUQTE1ID4+IDE2KTsKKworCVA0LkwgPSAoRENQTEJfRkFVTFRfQUREUiAmIDB4RkZGRik7CisJUDQuSCA9IChEQ1BMQl9GQVVMVF9BRERSID4+IDE2KTsKKwlSNCA9IFtQNF07CisJSTAgPSBSNDsKKworCS8qIFRoZSByZXBsYWNlbWVudCBwcm9jZWR1cmUgZm9yIERDUExCcyovCisKKwlSNiA9IFIxOwkvKiBTYXZlIGZvciBsYXRlciovCisKKwkvKiBUdXJuIG9mZiBDUExCcyB3aGlsZSB3ZSB3b3JrLiovCisJUDQuTCA9IChETUVNX0NPTlRST0wgJiAweEZGRkYpOworCVA0LkggPSAoRE1FTV9DT05UUk9MID4+IDE2KTsKKwlSNSA9IFtQNF07CisJQklUQ0xSKFI1LEVORENQTEJfUCk7CisJQ0xJIFIwOworCVNTWU5DOwkJLyogU1NZTkMgcmVxdWlyZWQgYmVmb3JlIHdyaXRpbmcgdG8gRE1FTV9DT05UUk9MLiAqLworCS5hbGlnbiA4OworCVtQNF0gPSBSNTsKKwlTU1lOQzsKKwlTVEkgUjA7CisKKwkvKiBTdGFydCBsb29raW5nIGZvciBhIENQTEIgdG8gZXZpY3QuIE91ciBvcmRlciBvZiBwcmVmZXJlbmNlCisJICogaXM6IGludmFsaWQgQ1BMQnMsIGNsZWFuIENQTEJzLCBkaXJ0eSBDUExCcy4gTG9ja2VkIENQTEJzCisJICogYXJlIG5vIGdvb2QuCisJICovCisKKwlJMS5MID0gKERDUExCX0RBVEEwICYgMHhGRkZGKTsKKwlJMS5IID0gKERDUExCX0RBVEEwID4+IDE2KTsKKwlQMSA9IDM7CisJUDIgPSAxNjsKKwlJMi5MID0gZGNwbGJfcHJlZmVyZW5jZTsKKwlJMi5IID0gZGNwbGJfcHJlZmVyZW5jZTsKKwlMU0VUVVAoc2RzZWFyY2gxLCBlZHNlYXJjaDEpIExDMCA9IFAxOworc2RzZWFyY2gxOgorCVIwID0gW0kyKytdOwkJLyogR2V0IHRoZSBiaXRzIHdlJ3JlIGludGVyZXN0ZWQgaW4qLworCVAwID0gSTE7CQkvKiBHbyBiYWNrIHRvIHN0YXJ0IG9mIHRhYmxlKi8KKwlMU0VUVVAgKHNkc2VhcmNoMiwgZWRzZWFyY2gyKSBMQzEgPSBQMjsKK3Nkc2VhcmNoMjoKKwlSMSA9IFtQMCsrXTsJCS8qIEZldGNoIGVhY2ggaW5zdGFsbGVkIENQTEIgaW4gdHVybiovCisJUjIgPSBSMSAmIFIwOwkJLyogYW5kIHRlc3QgZm9yIGludGVyZXN0aW5nIGJpdHMuKi8KKwlDQyA9IFIyID09IDA7CQkvKiBJZiBub25lIGFyZSBzZXQsIGl0J2xsIGRvLiovCisJSUYgIUNDIEpVTVAgc2tpcF9zdGFja19jaGVjazsKKworCVIyID0gW1AwIC0gMHgxMDRdOwkvKiBSMiAtIFBhZ2VTdGFydCAqLworCVAzLkwgPSBwYWdlX3NpemVfdGFibGU7IC8qIHJldHJpdmUgZW5kIGFkZHJlc3MgKi8KKwlQMy5IID0gcGFnZV9zaXplX3RhYmxlOyAvKiByZXRyaXZlIGVuZCBhZGRyZXNzICovCisJUjMgPSAweDI7CQkvKiAwdGggLSBwb3NpdGlvbiwgMiBiaXRzIC1sZW5ndGggKi8KKwlub3A7CQkJLypBbmFtb2x5IDA1MDAwMjA5Ki8KKwlSNyA9IEVYVFJBQ1QoUjEsUjMubCk7CisJUjcgPSBSNyA8PCAyOwkJLyogUGFnZSBzaXplIGluZGV4IG9mZnNldCAqLworCVA1ID0gUjc7CisJUDMgPSBQMyArIFA1OworCVI3ID0gW1AzXTsJCS8qIHBhZ2Ugc2l6ZSBpbiAxSyBieXRlcyAqLworCisJUjcgPSBSNyA8PCAweEE7CQkvKiBpbiBieXRlcyAqIDEwMjQqLworCVI3ID0gUjIgKyBSNzsJCS8qIFI3IC0gUGFnZUVuZCAqLworCVI0ID0gU1A7CQkvKiBUZXN0IFNQIGlzIGluIHJhbmdlICovCisKKwlDQyA9IFI3IDwgUjQ7CQkvKiBpZiBQYWdlRW5kIDwgU1AgKi8KKwlJRiBDQyBKVU1QIGRmb3VuZF92aWN0aW07CisJUjMgPSAweDI4NDsJCS8qIHN0YWNrIGxlbmd0aCBmcm9tIHN0YXJ0IG9mIHRyYXAgdGlsbCB0aGUgcG9pbnQgKi8KKwkJCQkvKiAyMCBzdGFjayBsb2NhdGlvbnMgZm9yIGZ1dHVyZSBtb2RpZmljYXRpb25zICovCisJUjQgPSBSNCArIFIzOworCUNDID0gUjQgPCBSMjsJCS8qIGlmIFNQICsgc3RhY2tsZW4gPCBQYWdlU3RhcnQgKi8KKwlJRiBDQyBKVU1QIGRmb3VuZF92aWN0aW07Citza2lwX3N0YWNrX2NoZWNrOgorCitlZHNlYXJjaDI6IE5PUDsKK2Vkc2VhcmNoMTogTk9QOworCisJLyogSWYgd2UgZ290IGhlcmUsIHdlIGRpZG4ndCBmaW5kIGEgRENQTEIgd2UgY29uc2lkZXJlZAorCSAqIHJlcGxhY2FibGUsIHdoaWNoIG1lYW5zIGFsbCBvZiB0aGVtIHdlcmUgbG9ja2VkLgorCSAqLworCisJSlVNUCBhbGxfbG9ja2VkOworZGZvdW5kX3ZpY3RpbToKKworI2lmZGVmIENPTkZJR19DUExCX0lORk8KKwlSMSA9IFtQMCAtIDB4MTA0XTsKKwlQMi5MID0gZHBkdF90YWJsZTsKKwlQMi5IID0gZHBkdF90YWJsZTsKKwlQMy5MID0gZHBkdF9zd2FwY291bnRfdGFibGU7CisJUDMuSCA9IGRwZHRfc3dhcGNvdW50X3RhYmxlOworCVAzICs9IC00OworZGljb3VudDoKKwlSMiA9IFtQMl07CisJUDIgKz0gODsKKwlQMyArPSA4OworCUNDID0gUjI9PS0xOworCUlGIENDIEpVTVAgZGljb3VudF9kb25lOworCUNDID0gUjE9PVIyOworCUlGICFDQyBKVU1QIGRpY291bnQ7CisJUjEgPSBbUDNdOworCVIxICs9IDE7CisJW1AzXSA9IFIxOworCUNTWU5DOworZGljb3VudF9kb25lOgorI2VuZGlmCisKKwkvKiBDbGVhbiBkb3duIHRoZSBoYXJkd2FyZSBsb29wcyovCisJUjIgPSAwOworCUxDMSA9IFIyOworCUxDMCA9IFIyOworCisJLyogVGhlcmUncyBhIHN1aXRhYmxlIHZpY3RpbSBpbiBbUDAtNF0gKGJlY2F1c2Ugd2UndmUKKwkgKiBhZHZhbmNlZCBhbHJlYWR5KS4gSWYgaXQncyBhIHZhbGlkIGRpcnR5IHdyaXRlLWJhY2sKKwkgKiBDUExCLCB3ZSBuZWVkIHRvIGZsdXNoIHRoZSBwZW5kaW5nIHdyaXRlcyBmaXJzdC4KKwkgKi8KKworCUNDID0gQklUVFNUKFIxLCAwKTsJLyogSXMgaXQgdmFsaWQ/Ki8KKwlJRiAhQ0MgSlVNUCBEZG92ZXJ3cml0ZTsvKiBub3BlLiovCisJQ0MgPSBCSVRUU1QoUjEsIDcpOwkvKiBJcyBpdCBkaXJ0eT8qLworCUlGICFDQyBKVU1QIERkb3ZlcndyaXRlIChCUCk7CS8qIE5vcGUuKi8KKwlDQyA9IEJJVFRTVChSMSwgMTQpOwkvKiBJcyBpdCBXcml0ZS1UaHJvdWdoPyovCisJSUYgQ0MgSlVNUCBEZG92ZXJ3cml0ZTsgLyogWWVwKi8KKworCS8qIFRoaXMgaXMgYSBkaXJ0eSBwYWdlLCBzbyB3ZSBuZWVkIHRvIGZsdXNoIGFsbCB3cml0ZXMKKwkgKiB0aGF0IGFyZSBwZW5kaW5nIG9uIHRoZSBwYWdlLgorCSAqLworCisJLyogUmV0cmlldmUgdGhlIHBhZ2Ugc3RhcnQgYWRkcmVzcyovCisJUjAgPSBbUDAgLSAweDEwNF07CisJWy0tc3BdID0gcmV0czsKKwlDQUxMIGRjcGxiX2ZsdXNoOwkvKiBSMD09Q1BMQiBhZGRyLCBSMT09Q1BMQiBkYXRhKi8KKwlyZXRzID0gW3NwKytdOworRGRvdmVyd3JpdGU6CisKKwkvKiBbUDAtNF0gaXMgYSBzdWl0YWJsZSB2aWN0aW0gQ1BMQiwgc28gd2Ugd2FudCB0bworCSAqIG92ZXJ3cml0ZSBpdCBieSBtb3ZpbmcgYWxsIHRoZSBmb2xsb3dpbmcgQ1BMQnMKKwkgKiBvbmUgc3BhY2UgY2xvc2VyIHRvIHRoZSBzdGFydC4KKwkgKi8KKworCVIxLkwgPSAoKERDUExCX0RBVEExNSs0KSAmIDB4RkZGRik7CQkvKkRDUExCX0RBVEExNSs0Ki8KKwlSMS5IID0gKChEQ1BMQl9EQVRBMTUrNCkgPj4gMTYpOworCVIwID0gUDA7CisKKwkvKiBJZiB0aGUgdmljdGltIGhhcHBlbnMgdG8gYmUgaW4gRENQTEIxNSwKKwkgKiB3ZSBkb24ndCBuZWVkIHRvIG1vdmUgYW55dGhpbmcuCisJICovCisKKwlDQyA9IFIxID09IFIwOworCUlGIENDIEpVTVAgZGVfbW92ZWQ7CisJUjEgPSBSMSAtIFIwOworCVIxID4+PSAyOworCVAxID0gUjE7CisJTFNFVFVQKGRzX21vdmUsIGRlX21vdmUpIExDMD1QMTsKK2RzX21vdmU6CisJIFIwID0gW1AwKytdOwkvKiBtb3ZlIGRhdGEgKi8KKwlbUDAgLSA4XSA9IFIwOworCVIwID0gW1AwLTB4MTA0XSAvKiBtb3ZlIGFkZHJlc3MgKi8KK2RlX21vdmU6IFtQMC0weDEwOF0gPSBSMDsKKworCS8qIFdlJ3ZlIG5vdyBtYWRlIHNwYWNlIGluIERDUExCMTUgZm9yIHRoZSBuZXcgQ1BMQiB0byBiZQorCSAqIGluc3RhbGxlZC4gVGhlIG5leHQgc3RhZ2UgaXMgdG8gbG9jYXRlIGEgQ1BMQiBpbiB0aGUKKwkgKiBjb25maWcgdGFibGUgdGhhdCBjb3ZlcnMgdGhlIGZhdWx0aW5nIGFkZHJlc3MuCisJICovCisKK2RlX21vdmVkOk5PUDsKKwlSMCA9IEkwOwkJLyogT3VyIGZhdWx0aW5nIGFkZHJlc3MgKi8KKworCVAyLkwgPSBkcGR0X3RhYmxlOworCVAyLkggPSBkcGR0X3RhYmxlOworI2lmZGVmCUNPTkZJR19DUExCX0lORk8KKwlQMy5MID0gZHBkdF9zd2FwY291bnRfdGFibGU7CisJUDMuSCA9IGRwZHRfc3dhcGNvdW50X3RhYmxlOworCVAzICs9IC04OworI2VuZGlmCisKKwlQMS5MID0gcGFnZV9zaXplX3RhYmxlOworCVAxLkggPSBwYWdlX3NpemVfdGFibGU7CisKKwkvKiBBbiBleHRyYWN0aW9uIHBhdHRlcm4sIHRvIHJldHJpZXZlIGJpdHMgMTc6MTYuKi8KKworCVIxID0gKDE2PDw4KXwyOworZG5leHQ6CVI0ID0gW1AyKytdOwkvKiBhZGRyZXNzICovCisJUjIgPSBbUDIrK107CS8qIGRhdGEgKi8KKyNpZmRlZglDT05GSUdfQ1BMQl9JTkZPCisJUDMgKz0gODsKKyNlbmRpZgorCisJQ0MgPSBSNCA9PSAtMTsKKwlJRiBDQyBKVU1QIG5vX3BhZ2VfaW5fdGFibGU7CisKKwkvKiBTZWUgaWYgZmFpbGVkIGFkZHJlc3MgPiBzdGFydCBhZGRyZXNzICovCisJQ0MgPSBSNCA8PSBSMChJVSk7CisJSUYgIUNDIEpVTVAgZG5leHQ7CisKKwkvKiBleHRyYWN0IHBhZ2Ugc2l6ZSAoMTc6MTYpKi8KKwlSMyA9IEVYVFJBQ1QoUjIsIFIxLkwpIChaKTsKKworCS8qIGFkZCBwYWdlIHNpemUgdG8gYWRkciB0byBnZXQgcmFuZ2UgKi8KKworCVA1ID0gUjM7CisJUDUgPSBQMSArIChQNSA8PCAyKTsKKwlSMyA9IFtQNV07CisJUjMgPSBSMyArIFI0OworCisJLyogU2VlIGlmIGZhaWxlZCBhZGRyZXNzIDwgKHN0YXJ0IGFkZHJlc3MgKyBwYWdlIHNpemUpICovCisJQ0MgPSBSMCA8IFIzKElVKTsKKwlJRiAhQ0MgSlVNUCBkbmV4dDsKKworCS8qIFdlJ3ZlIGZvdW5kIHRoZSBDUExCIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCwgc28KKwkgKiB3cml0ZSBpdCBpbnRvIENQTEIxNSwgbWFza2luZyBvZmYgYW55IGNhY2hpbmcgYml0cworCSAqIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKworCVAxLkwgPSAoRENQTEJfREFUQTE1ICYgMHhGRkZGKTsKKwlQMS5IID0gKERDUExCX0RBVEExNSA+PiAxNik7CisKKwkvKiBJZiB0aGUgRENQTEIgaGFzIGNhY2hlIGJpdHMgc2V0LCBidXQgY2FjaGluZyBoYXNuJ3QKKwkgKiBiZWVuIGVuYWJsZWQsIHRoZW4gd2Ugd2FudCB0byBtYXNrIG9mZiB0aGUgY2FjaGUtaW4tTDEKKwkgKiBiaXQgYmVmb3JlIGluc3RhbGxpbmcuIE1vcmVvdmVyLCBpZiBjYWNoaW5nIGlzIG9mZiwgd2UKKwkgKiBhbHNvIHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIERDUExCIGhhcyBXVCBtb2RlIHNldCwgcmF0aGVyCisJICogdGhhbiBXQiwgc2luY2UgV0IgcGFnZXMgc3RpbGwgdHJpZ2dlciBmaXJzdC13cml0ZSBleGNlcHRpb25zCisJICogZXZlbiB3aGVuIG5vdCBjYWNoaW5nIGlzIG9mZiwgYW5kIHRoZSBwYWdlIGlzbid0IG1hcmtlZCBhcworCSAqIGNhY2hhYmxlLiBGaW5hbGx5LCB3ZSBjb3VsZCBtYXJrIHRoZSBwYWdlIGFzIGNsZWFuLCBub3QgZGlydHksCisJICogYnV0IHdlIGNob29zZSB0byBsZWF2ZSB0aGF0IGRlY2lzaW9uIHRvIHRoZSB1c2VyOyBpZiB0aGUgdXNlcgorCSAqIGNob29zZXMgdG8gaGF2ZSBhIENQTEIgcHJlLWRlZmluZWQgYXMgZGlydHksIHRoZW4gdGhleSBhbHdheXMKKwkgKiBwYXkgdGhlIGNvc3Qgb2YgZmx1c2hpbmcgZHVyaW5nIGV2aWN0aW9uLCBidXQgZG9uJ3QgcGF5IHRoZQorCSAqIGNvc3Qgb2YgZmlyc3Qtd3JpdGUgZXhjZXB0aW9ucyB0byBtYXJrIHRoZSBwYWdlIGFzIGRpcnR5LgorCSAqLworCisjaWZkZWYgQ09ORklHX0JMS0ZJTl9XVAorCUJJVFNFVChSNiwgMTQpOwkJLyogU2V0IFdUKi8KKyNlbmRpZgorCisJW1AxXSA9IFIyOworCVtQMS0weDEwMF0gPSBSNDsKKyNpZmRlZglDT05GSUdfQ1BMQl9JTkZPCisJUjMgPSBbUDNdOworCVIzICs9IDE7CisJW1AzXSA9IFIzOworI2VuZGlmCisKKwkvKiBXZSd2ZSBpbnN0YWxsZWQgdGhlIENQTEIsIHNvIHJlLWVuYWJsZSBDUExCcy4gUDQKKwkgKiBwb2ludHMgdG8gRE1FTV9DT05UUk9MLCBhbmQgUjUgaXMgdGhlIHZhbHVlIHdlCisJICogbGFzdCB3cm90ZSB0byBpdCwgd2hlbiB3ZSB3ZXJlIGRpc2FibGluZyBDUExCcy4KKwkgKi8KKworCUJJVFNFVChSNSxFTkRDUExCX1ApOworCUNMSSBSMjsKKwkuYWxpZ24gODsKKwlbUDRdID0gUjU7CisJU1NZTkM7CisJU1RJIFIyOworCisJKCBSNzowLFA1OjAgKSA9IFtTUCsrXTsKKwlSMCA9IENQTEJfUkVMT0FERUQ7CisJUlRTOworCisuZGF0YQorLmFsaWduIDQ7CitwYWdlX3NpemVfdGFibGU6CisuYnl0ZTQJMHgwMDAwMDQwMDsJLyogMUsgKi8KKy5ieXRlNAkweDAwMDAxMDAwOwkvKiA0SyAqLworLmJ5dGU0CTB4MDAxMDAwMDA7CS8qIDFNICovCisuYnl0ZTQJMHgwMDQwMDAwMDsJLyogNE0gKi8KKworLmFsaWduIDQ7CitkY3BsYl9wcmVmZXJlbmNlOgorLmJ5dGU0CTB4MDAwMDAwMDE7CS8qIHZhbGlkIGJpdCAqLworLmJ5dGU0CTB4MDAwMDAwODI7CS8qIGRpcnR5K2xvY2sgYml0cyAqLworLmJ5dGU0CTB4MDAwMDAwMDI7CS8qIGxvY2sgYml0ICovCmRpZmYgLS1naXQgYS9jcHUvYmY1MzMvY3B1LmMgYi9jcHUvYmY1MzMvY3B1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlMmI5NgotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9iZjUzMy9jcHUuYwpAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIFUtYm9vdCAtIGNwdS5jIENQVSBzcGVjaWZpYyBmdW5jdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL2JsYWNrZmluLmg+CisjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1ZGUgPGFzbS9lbnRyeS5oPgorCisjZGVmaW5lIFNTWU5DKCkgYXNtKCJzc3luYzsiKQorI2RlZmluZSBDQUNIRV9PTiAxCisjZGVmaW5lIENBQ0hFX09GRiAwCisKKy8qIERhdGEgQXR0aWJ1dGVzKi8KKworI2RlZmluZSBTRFJBTV9JR0VORVJJQwkJKFBBR0VfU0laRV80TUIgfCBDUExCX0wxX0NIQkwgfCBDUExCX1VTRVJfUkQgfCBDUExCX1ZBTElEKQorI2RlZmluZSBTRFJBTV9JS0VSTkVMCQkoUEFHRV9TSVpFXzRNQiB8IENQTEJfTDFfQ0hCTCB8IENQTEJfVVNFUl9SRCB8IENQTEJfVkFMSUQgfCBDUExCX0xPQ0spCisjZGVmaW5lIEwxX0lNRU1PUlkgICAgICAgICAgICAJKFBBR0VfU0laRV8xTUIgfCBDUExCX0wxX0NIQkwgfCBDUExCX1VTRVJfUkQgfCBDUExCX1ZBTElEIHwgQ1BMQl9MT0NLKQorI2RlZmluZSBTRFJBTV9JTk9OX0NIQkwJCShQQUdFX1NJWkVfNE1CIHwgQ1BMQl9VU0VSX1JEIHwgQ1BMQl9WQUxJRCkKKworI2RlZmluZSBBTk9NQUxZXzA1MDAwMTU4CQkweDIwMAorI2RlZmluZSBTRFJBTV9ER0VORVJJQyAgICAgICAgICAoUEFHRV9TSVpFXzRNQiB8IENQTEJfTDFfQ0hCTCB8IENQTEJfV1QgfCBDUExCX0wxX0FPVyB8IENQTEJfU1VQVl9XUiB8IENQTEJfVVNFUl9SRCB8IENQTEJfVVNFUl9XUiB8IENQTEJfVkFMSUQgfCBBTk9NQUxZXzA1MDAwMTU4KQorI2RlZmluZSBTRFJBTV9ETk9OX0NIQkwgICAgICAgICAoUEFHRV9TSVpFXzRNQiB8IENQTEJfV1QgfCBDUExCX0wxX0FPVyB8IENQTEJfU1VQVl9XUiB8IENQTEJfVVNFUl9XUiB8IENQTEJfVVNFUl9SRCB8IENQTEJfVkFMSUQgfCBBTk9NQUxZXzA1MDAwMTU4KQorI2RlZmluZSBTRFJBTV9ES0VSTkVMICAgICAgICAgICAoUEFHRV9TSVpFXzRNQiB8IENQTEJfTDFfQ0hCTCB8IENQTEJfV1QgfCBDUExCX0wxX0FPVyB8IENQTEJfVVNFUl9SRCB8IENQTEJfU1VQVl9XUiB8IENQTEJfVVNFUl9XUiB8IENQTEJfVkFMSUQgfCBDUExCX0xPQ0sgfCBBTk9NQUxZXzA1MDAwMTU4KQorI2RlZmluZSBMMV9ETUVNT1JZICAgICAgICAgICAgICAoUEFHRV9TSVpFXzRLQiB8IENQTEJfTDFfQ0hCTCB8IENQTEJfTDFfQU9XIHwgQ1BMQl9XVCB8IENQTEJfU1VQVl9XUiB8IENQTEJfVVNFUl9XUiB8IENQTEJfVkFMSUQgfCBBTk9NQUxZXzA1MDAwMTU4KQorI2RlZmluZSBTRFJBTV9FQklVICAgICAgICAgICAgICAoUEFHRV9TSVpFXzRNQiB8IENQTEJfV1QgfCBDUExCX0wxX0FPVyB8IENQTEJfVVNFUl9SRCB8IENQTEJfVVNFUl9XUiB8IENQTEJfU1VQVl9XUiB8IENQTEJfVkFMSUQgfCBBTk9NQUxZXzA1MDAwMTU4KQorCitzdGF0aWMgdW5zaWduZWQgaW50IGljcGxiX3RhYmxlWzE2XVsyXT17CisJCQl7MHhGRkEwMDAwMCwgTDFfSU1FTU9SWX0sCisJCQl7MHgwMDAwMDAwMCwgU0RSQU1fSUtFUk5FTH0sCS8qU0RSQU1fUGFnZTEqLworCQkJezB4MDA0MDAwMDAsIFNEUkFNX0lLRVJORUx9LAkvKlNEUkFNX1BhZ2UxKi8KKwkJCXsweDA3QzAwMDAwLCBTRFJBTV9JS0VSTkVMfSwgICAgLypTRFJBTV9QYWdlMTQqLworCQkJezB4MDA4MDAwMDAsIFNEUkFNX0lHRU5FUklDfSwJLypTRFJBTV9QYWdlMiovCisJCQl7MHgwMEMwMDAwMCwgU0RSQU1fSUdFTkVSSUN9LAkvKlNEUkFNX1BhZ2UyKi8KKwkJCXsweDAxMDAwMDAwLCBTRFJBTV9JR0VORVJJQ30sCS8qU0RSQU1fUGFnZTQqLworCQkJezB4MDE0MDAwMDAsIFNEUkFNX0lHRU5FUklDfSwJLypTRFJBTV9QYWdlNSovCisJCQl7MHgwMTgwMDAwMCwgU0RSQU1fSUdFTkVSSUN9LAkvKlNEUkFNX1BhZ2U2Ki8KKwkJCXsweDAxQzAwMDAwLCBTRFJBTV9JR0VORVJJQ30sCS8qU0RSQU1fUGFnZTcqLworCQkJezB4MDIwMDAwMDAsIFNEUkFNX0lHRU5FUklDfSwJLypTRFJBTV9QYWdlOCovCisJCQl7MHgwMjQwMDAwMCwgU0RSQU1fSUdFTkVSSUN9LAkvKlNEUkFNX1BhZ2U5Ki8KKwkJCXsweDAyODAwMDAwLCBTRFJBTV9JR0VORVJJQ30sCS8qU0RSQU1fUGFnZTEwKi8KKwkJCXsweDAyQzAwMDAwLCBTRFJBTV9JR0VORVJJQ30sCS8qU0RSQU1fUGFnZTExKi8KKwkJCXsweDAzMDAwMDAwLCBTRFJBTV9JR0VORVJJQ30sCS8qU0RSQU1fUGFnZTEyKi8KKwkJCXsweDAzNDAwMDAwLCBTRFJBTV9JR0VORVJJQ30sCS8qU0RSQU1fUGFnZTEzKi8KK307CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGNwbGJfdGFibGVbMTZdWzJdPXsKKwkJCXsweEZGQTAwMDAwLEwxX0RNRU1PUll9LAorCQkJezB4MDAwMDAwMDAsU0RSQU1fREtFUk5FTH0sCS8qU0RSQU1fUGFnZTEqLworCQkJezB4MDA0MDAwMDAsU0RSQU1fREtFUk5FTH0sCS8qU0RSQU1fUGFnZTEqLworCQkJezB4MDdDMDAwMDAsU0RSQU1fREtFUk5FTH0sCS8qU0RSQU1fUGFnZTE1Ki8KKwkJCXsweDAwODAwMDAwLFNEUkFNX0RHRU5FUklDfSwJLypTRFJBTV9QYWdlMiovCisJCQl7MHgwMEMwMDAwMCxTRFJBTV9ER0VORVJJQ30sCS8qU0RSQU1fUGFnZTMqLworCQkJezB4MDEwMDAwMDAsU0RSQU1fREdFTkVSSUN9LAkvKlNEUkFNX1BhZ2U0Ki8KKwkJCXsweDAxNDAwMDAwLFNEUkFNX0RHRU5FUklDfSwJLypTRFJBTV9QYWdlNSovCisJCQl7MHgwMTgwMDAwMCxTRFJBTV9ER0VORVJJQ30sCS8qU0RSQU1fUGFnZTYqLworCQkJezB4MDFDMDAwMDAsU0RSQU1fREdFTkVSSUN9LAkvKlNEUkFNX1BhZ2U3Ki8KKwkJCXsweDAyMDAwMDAwLFNEUkFNX0RHRU5FUklDfSwJLypTRFJBTV9QYWdlOCovCisJCQl7MHgwMjQwMDAwMCxTRFJBTV9ER0VORVJJQ30sCS8qU0RSQU1fUGFnZTkqLworCQkJezB4MDI4MDAwMDAsU0RSQU1fREdFTkVSSUN9LAkvKlNEUkFNX1BhZ2UxMCovCisJCQl7MHgwMkMwMDAwMCxTRFJBTV9ER0VORVJJQ30sCS8qU0RSQU1fUGFnZTExKi8KKwkJCXsweDAzMDAwMDAwLFNEUkFNX0RHRU5FUklDfSwJLypTRFJBTV9QYWdlMTIqLworCQkJezB4MjAwMDAwMDAsU0RSQU1fRUJJVX0sCS8qRm9yIE5ldHdvcmsgKi8KK307CisKK2ludCBkb19yZXNldChjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXworCSgiY2xpIHIzOyIKKwkiUDAgPSAlMDsiCisJIkpVTVAgKFAwKTsiCisJOgorCTogInIiIChMMV9JU1JBTSkKKwkpOworCisJcmV0dXJuIDA7Cit9CisKKy8qIFRoZXNlIGZ1bmN0aW9ucyBhcmUganVzdCB1c2VkIHRvIHNhdGlzZnkgdGhlIGxpbmtlciAqLworaW50IGNwdV9pbml0KHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK2ludCBjbGVhbnVwX2JlZm9yZV9saW51eCh2b2lkKQoreworCXJldHVybiAwOworfQorCit2b2lkIGljYWNoZV9lbmFibGUodm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgKkkwLCpJMTsKKwlpbnQgaTsKKworCUkwID0gKHVuc2lnbmVkIGludCAqKUlDUExCX0FERFIwOworCUkxID0gKHVuc2lnbmVkIGludCAqKUlDUExCX0RBVEEwOworCisJZm9yKGk9MDtpPDE2O2krKyl7CisJCSpJMCsrID0gaWNwbGJfdGFibGVbaV1bMF07CisJCSpJMSsrID0gaWNwbGJfdGFibGVbaV1bMV07CisJCX0KKwljbGkoKTsKKwlTU1lOQygpOworCSoodW5zaWduZWQgaW50ICopSU1FTV9DT05UUk9MID0gSU1DIHwgRU5JQ1BMQjsKKwlTU1lOQygpOworCXN0aSgpOworfQorCit2b2lkIGljYWNoZV9kaXNhYmxlKHZvaWQpCit7CisJY2xpKCk7CisJU1NZTkMoKTsKKwkqKHVuc2lnbmVkIGludCAqKUlNRU1fQ09OVFJPTCAmPSB+KElNQyB8IEVOSUNQTEIpOworCVNTWU5DKCk7CisJc3RpKCk7Cit9CisKK2ludCBpY2FjaGVfc3RhdHVzKHZvaWQpCit7CisJdW5zaWduZWQgaW50IHZhbHVlOworCXZhbHVlID0gKih1bnNpZ25lZCBpbnQgKilJTUVNX0NPTlRST0w7CisKKwlpZiggdmFsdWUgJiAoSU1DfEVOSUNQTEIpICkKKwkJcmV0dXJuIENBQ0hFX09OOworCWVsc2UKKwkJcmV0dXJuIENBQ0hFX09GRjsKK30KKwordm9pZCBkY2FjaGVfZW5hYmxlKHZvaWQpCit7CisJdW5zaWduZWQgaW50ICpJMCwqSTE7CisJdW5zaWduZWQgaW50IHRlbXA7CisJaW50IGk7CisJSTAgPSAodW5zaWduZWQgaW50ICopRENQTEJfQUREUjA7CisJSTEgPSAodW5zaWduZWQgaW50ICopRENQTEJfREFUQTA7CisKKwlmb3IoaT0wO2k8MTY7aSsrKXsKKwkJKkkwKysgPSBkY3BsYl90YWJsZVtpXVswXTsKKwkJKkkxKysgPSBkY3BsYl90YWJsZVtpXVsxXTsKKwkJfQorCWNsaSgpOworCXRlbXAgPSAqKHVuc2lnbmVkIGludCAqKURNRU1fQ09OVFJPTDsKKwlTU1lOQygpOworCSoodW5zaWduZWQgaW50ICopRE1FTV9DT05UUk9MID0gQUNBQ0hFX0JDQUNIRSB8RU5EQ1BMQiB8UE9SVF9QUkVGMHx0ZW1wOworCVNTWU5DKCk7CisJc3RpKCk7Cit9CisKK3ZvaWQgZGNhY2hlX2Rpc2FibGUodm9pZCkKK3sKKwljbGkoKTsKKwlTU1lOQygpOworCSoodW5zaWduZWQgaW50ICopRE1FTV9DT05UUk9MICY9IH4oQUNBQ0hFX0JDQUNIRSB8RU5EQ1BMQiB8UE9SVF9QUkVGMCk7CisJU1NZTkMoKTsKKwlzdGkoKTsKK30KKworaW50IGRjYWNoZV9zdGF0dXModm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgdmFsdWU7CisJdmFsdWUgPSAqKHVuc2lnbmVkIGludCAqKURNRU1fQ09OVFJPTDsKKwlpZiggdmFsdWUgJiAoRU5EQ1BMQikpCisJCXJldHVybiBDQUNIRV9PTjsKKwllbHNlCisJCXJldHVybiBDQUNIRV9PRkY7Cit9CmRpZmYgLS1naXQgYS9jcHUvYmY1MzMvY3B1LmggYi9jcHUvYmY1MzMvY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VjMzM4NwotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9iZjUzMy9jcHUuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogIFUtYm9vdCAtIGNwdS5oCisgKgorICogIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX0NQVV9IXworI2RlZmluZSBfQ1BVX0hfCisKKyNpbmNsdWRlIDxjb21tYW5kLmg+CisKKyNkZWZpbmUgSU5URVJOQUxfSVJRUyAoMzIpCisjZGVmaW5lIE5VTV9JUlFfTk9ERVMgMTYKKyNkZWZpbmUgREVGX0lOVEVSUlVQVF9GTEFHUyAxCisjZGVmaW5lIE1BWF9USU1fTE9BRAkweEZGRkZGRkZGCisKK3ZvaWQgYmxhY2tmaW5faXJxX3BhbmljKGludCByZWFzb24sIHN0cnVjdCBwdF9yZWdzICogcmVnKTsKK2V4dGVybiB2b2lkIGR1bXAoc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKK3ZvaWQgZGlzcGxheV9leGNwKHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9ubWkodm9pZCk7Cithc21saW5rYWdlIHZvaWQgZXZ0X2V4Y2VwdGlvbih2b2lkKTsKK2FzbWxpbmthZ2Ugdm9pZCB0cmFwKHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9pdmh3KHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9yc3Qodm9pZCk7Cithc21saW5rYWdlIHZvaWQgZXZ0X3RpbWVyKHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9ldnQ3KHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9ldnQ4KHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9ldnQ5KHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9ldnQxMCh2b2lkKTsKK2FzbWxpbmthZ2Ugdm9pZCBldnRfZXZ0MTEodm9pZCk7Cithc21saW5rYWdlIHZvaWQgZXZ0X2V2dDEyKHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9ldnQxMyh2b2lkKTsKK2FzbWxpbmthZ2Ugdm9pZCBldnRfc29mdF9pbnQxKHZvaWQpOworYXNtbGlua2FnZSB2b2lkIGV2dF9zeXN0ZW1fY2FsbCh2b2lkKTsKK3ZvaWQgYmxhY2tmaW5faXJxX3BhbmljKGludCByZWFzb24sIHN0cnVjdCBwdF9yZWdzICogcmVncyk7Cit2b2lkIGJsYWNrZmluX2ZyZWVfaXJxKHVuc2lnbmVkIGludCBpcnEsIHZvaWQgKmRldl9pZCk7Cit2b2lkIGNhbGxfaXNyKGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICogZnApOwordm9pZCBibGFja2Zpbl9kb19pcnEoaW50IHZlYywgc3RydWN0IHB0X3JlZ3MgKmZwKTsKK3ZvaWQgYmxhY2tmaW5faW5pdF9JUlEodm9pZCk7Cit2b2lkIGJsYWNrZmluX2VuYWJsZV9pcnEodW5zaWduZWQgaW50IGlycSk7Cit2b2lkIGJsYWNrZmluX2Rpc2FibGVfaXJxKHVuc2lnbmVkIGludCBpcnEpOworZXh0ZXJuIGludCBkb19yZXNldCAoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pOworaW50IGJsYWNrZmluX3JlcXVlc3RfaXJxKHVuc2lnbmVkIGludCBpcnEsCisJCSAgICAgdm9pZCAoKmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKSwKKwkJICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLGNvbnN0IGNoYXIgKmRldm5hbWUsdm9pZCAqZGV2X2lkKTsKK3ZvaWQgdGltZXJfaW5pdCh2b2lkKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY3B1L2JmNTMzL2ZsdXNoLlMgYi9jcHUvYmY1MzMvZmx1c2guUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmJkZWZjCi0tLSAvZGV2L251bGwKKysrIGIvY3B1L2JmNTMzL2ZsdXNoLlMKQEAgLTAsMCArMSw0MDIgQEAKKy8qIENvcHlyaWdodCAoQykgMjAwMyBBbmFsb2cgRGV2aWNlcywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0IExHIFNPZnQgSW5kaWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKgorICogQmxhY2tmaW4gQkY1MzMvMi42IHN1cHBvcnQgOiBMRyBTb2Z0IEluZGlhCisgKi8KKyNkZWZpbmUgQVNTRU1CTFkKKworI2luY2x1ZGUgPGFzbS9saW5rYWdlLmg+CisjaW5jbHVkZSA8YXNtL2NwbGIuaD4KKyNpbmNsdWRlIDxhc20vYmxhY2tmaW4uaD4KKworLnRleHQKKworLyogVGhpcyBpcyBhbiBleHRlcm5hbCBmdW5jdGlvbiBiZWluZyBjYWxsZWQgYnkgdGhlIHVzZXIKKyAqIGFwcGxpY2F0aW9uIHRocm91Z2ggX19mbHVzaF9jYWNoZV9hbGwuIEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uCisgKiBzZXJ2ZXMgdGhlIHB1cnBvc2Ugb2YgZmx1c2hpbmcgYWxsIHRoZSBwZW5kaW5nIHdyaXRlcyBpbgorICogaW4gdGhlIGluc3RydWN0aW9uIGNhY2hlLgorICovCisKK0VOVFJZKGZsdXNoX2luc3RydWN0aW9uX2NhY2hlKQorCVstLVNQXSA9ICggUjc6NiwgUDU6NCApOworCUxJTksgMTI7CisJU1AgKz0gLTEyOworCVA1LkggPSAoSUNQTEJfQUREUjAgPj4gMTYpOworCVA1LkwgPSAoSUNQTEJfQUREUjAgJiAweEZGRkYpOworCVA0LkggPSAoSUNQTEJfREFUQTAgPj4gMTYpOworCVA0LkwgPSAoSUNQTEJfREFUQTAgJiAweEZGRkYpOworCVI3ID0gQ1BMQl9WQUxJRCB8IENQTEJfTDFfQ0hCTDsKKwlSNiA9IDE2OworaW5leHQ6CVIwID0gW1A1KytdOworCVIxID0gW1A0KytdOworCVstLVNQXSA9ICBSRVRTOworCUNBTEwgaWNwbGJfZmx1c2g7CS8qIFIwID0gcGFnZSwgUjEgPSBkYXRhKi8KKwlSRVRTID0gW1NQKytdOworaXNraXA6CVI2ICs9IC0xOworCUNDID0gUjY7CisJSUYgQ0MgSlVNUCBpbmV4dDsKKwlTU1lOQzsKKwlTUCArPSAxMjsKKwlVTkxJTks7CisJKCBSNzo2LCBQNTo0ICkgPSBbU1ArK107CisJUlRTOworCisvKiBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGZsdXNoIGFsbCBwZW5kaW5nCisgKiB3cml0ZXMgaW4gdGhlIGNhY2hlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgSUNQTEIuCisgKgorICogUjAgLSAgcGFnZSdzIHN0YXJ0IGFkZHJlc3MKKyAqIFIxIC0gIENQTEIncyBkYXRhIGZpZWxkLgorICovCisKKy5hbGlnbiAyCitFTlRSWShpY3BsYl9mbHVzaCkKKwlbLS1TUF0gPSAoIFI3OjAsIFA1OjAgKTsKKwlbLS1TUF0gPSBMQzA7CisJWy0tU1BdID0gTFQwOworCVstLVNQXSA9IExCMDsKKwlbLS1TUF0gPSBMQzE7CisJWy0tU1BdID0gTFQxOworCVstLVNQXSA9IExCMTsKKworCS8qIElmIGl0J3MgYSAxSyBvciA0SyBwYWdlLCB0aGVuIGl0J3MgcXVpY2tlc3QgdG8KKwkgKiBqdXN0IHN5c3RlbWF0aWNhbGx5IGZsdXNoIGFsbCB0aGUgYWRkcmVzc2VzIGluCisJICogdGhlIHBhZ2UsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5J3JlIGluIHRoZQorCSAqIGNhY2hlLCBvciBkaXJ0eS4gSWYgaXQncyBhIDFNIG9yIDRNIHBhZ2UsIHRoZXJlCisJICogYXJlIHRvbyBtYW55IGFkZHJlc3NlcywgYW5kIHdlIGhhdmUgdG8gc2VhcmNoIHRoZQorCSAqIGNhY2hlIGZvciBsaW5lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYWdlLgorCSAqLworCisJQ0MgPSBCSVRUU1QoUjEsIDE3KTsJLyogMU1CIG9yIDRNQiAqLworCUlGICFDQyBKVU1QIGlmbHVzaF93aG9sZV9wYWdlOworCisJLyogV2UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBwYWdlJ3Mgc2l6ZSwgc28gZXh0cmFjdAorCSAqIHRoaXMgZnJvbSB0aGUgQ1BMQiAoYml0cyAxNzoxNiksIGFuZCBzY2FsZSB0byBnaXZlIGFuCisJICogb2Zmc2V0IGludG8gdGhlIHBhZ2Vfc2l6ZSBhbmQgcGFnZV9wcmVmaXggdGFibGVzLgorCSAqLworCisJUjEgPDw9IDE0OworCVIxID4+PSAzMDsKKwlSMSA8PD0gMjsKKworCS8qIFdlIGNhbiBhbHNvIGRldGVybWluZSB0aGUgc3ViLWJhbmsgdXNlZCwgYmVjYXVzZSB0aGlzIGlzCisJICogdGFrZW4gZnJvbSBiaXRzIDEzOjEyIG9mIHRoZSBhZGRyZXNzLgorCSAqLworCisJUjMgPSAoKDEyPDw4KXwyKTsJCS8qIEV4dHJhY3Rpb24gcGF0dGVybiAqLworCW5vcDsJCQkJLypBbmFtb2x5IDA1MDAwMjA5Ki8KKwlSNCA9IEVYVFJBQ1QoUjAsIFIzLkwpIChaKTsJLyogRXh0cmFjdCBiaXRzKi8KKwlSMy5IID0gUjQuTCA8PCAwIDsJCS8qIFNhdmUgaW4gZXh0cmFjdGlvbiBwYXR0ZXJuIGZvciBsYXRlciBkZXBvc2l0LiovCisKKworCS8qIFNvOgorCSAqIFIwID0gUGFnZSBzdGFydAorCSAqIFIxID0gUGFnZSBsZW5ndGggKGFjdHVhbGx5LCBvZmZzZXQgaW50byBzaXplL3ByZWZpeCB0YWJsZXMpCisJICogUjMgPSBzdWItYmFuayBkZXBvc2l0IHZhbHVlcworICAJICoKKwkgKiBUaGUgY2FjaGUgaGFzIDIgV2F5cywgYW5kIDY0IHNldHMsIHNvIHdlIGl0ZXJhdGUgdGhyb3VnaAorCSAqIHRoZSBzZXRzLCBhY2Nlc3NpbmcgdGhlIHRhZyBmb3IgZWFjaCBXYXksIGZvciBvdXIgQmFuayBhbmQKKwkgKiBzdWItYmFuaywgbG9va2luZyBmb3IgZGlydHksIHZhbGlkIHRhZ3MgdGhhdCBtYXRjaCBvdXIKKwkgKiBhZGRyZXNzIHByZWZpeC4KKwkgKi8KKworCVA1LkwgPSAoSVRFU1RfQ09NTUFORCAmIDB4RkZGRik7CisJUDUuSCA9IChJVEVTVF9DT01NQU5EID4+IDE2KTsKKwlQNC5MID0gKElURVNUX0RBVEEwICYgMHhGRkZGKTsKKwlQNC5IID0gKElURVNUX0RBVEEwID4+IDE2KTsKKworCVAwLkwgPSBwYWdlX3ByZWZpeF90YWJsZTsKKwlQMC5IID0gcGFnZV9wcmVmaXhfdGFibGU7CisJUDEgPSBSMTsKKwlSNSA9IDA7CQkJLyogU2V0IGNvdW50ZXIqLworCVAwID0gUDEgKyBQMDsKKwlSNCA9IFtQMF07CQkvKiBUaGlzIGlzIHRoZSBhZGRyZXNzIHByZWZpeCovCisKKwkvKiBXZSdyZSByZWFkaW5nIChiaXQgMT09MCkgdGhlIHRhZyAoYml0IDI9PTApLCBhbmQgd2UKKwkgKiBkb24ndCBjYXJlIGFib3V0IHdoaWNoIGRvdWJsZS13b3JkLCBzaW5jZSB3ZSdyZSBvbmx5CisJICogZmV0Y2hpbmcgdGFncywgc28gd2Ugb25seSBoYXZlIHRvIHNldCBTZXQsIEJhbmssCisJICogU3ViLWJhbmsgYW5kIFdheS4KKwkgKi8KKworCVAyID0gNDsKKwlMU0VUVVAgKGlmczEsIGlmZTEpIExDMSA9IFAyOworaWZzMToJUDAgPSAzMjsJCS8qIGl0ZXJhdGUgb3ZlciBhbGwgc2V0cyovCisJTFNFVFVQIChpZnMwLCBpZmUwKSBMQzAgPSBQMDsKK2lmczA6CVI2ID0gUjUgPDwgNTsJCS8qIENvbWJpbmUgc2V0Ki8KKwlSNi5IID0gUjMuSCA8PCAwIDsJLyogYW5kIHN1Yi1iYW5rKi8KKwlbUDVdID0gUjY7CQkvKiBJc3N1ZSBDb21tYW5kKi8KKwlTU1lOQzsJCQkvKiBDU1lOQyB3aWxsIG5vdCB3b3JrIGhlcmUgOigqLworCVI3ID0gW1A0XTsJCS8qIGFuZCByZWFkIFRhZy4qLworCUNDID0gQklUVFNUKFI3LCAwKTsJLyogQ2hlY2sgaWYgdmFsaWQqLworCUlGICFDQyBKVU1QIGlmc2tpcDsJLyogYW5kIHNraXAgaWYgbm90LiovCisKKwkvKiBDb21wYXJlIGFnYWluc3QgdGhlIHBhZ2UgYWRkcmVzcy4gRmlyc3QsIHBsYW50IGJpdHMgMTM6MTIKKwkgKiBpbnRvIHRoZSB0YWcsIHNpbmNlIHRob3NlIGFyZW4ndCBwYXJ0IG9mIHRoZSByZXR1cm5lZCBkYXRhLgorCSAqLworCisJUjcgPSBERVBPU0lUKFI3LCBSMyk7CS8qIHNldCAxMzoxMiovCisJUjEgPSBSNyAmIFI0OwkJLyogTWFzayBvZmYgbG93ZXIgYml0cyovCisJQ0MgPSBSMSA9PSBSMDsJCS8qIENvbXBhcmUgYWdhaW5zdCBwYWdlIHN0YXJ0LiovCisJSUYgIUNDIEpVTVAgaWZza2lwOwkvKiBTa2lwIGl0IGlmIGl0IGRvZXNuJ3QgbWF0Y2guKi8KKworCS8qIFRhZyBhZGRyZXNzIG1hdGNoZXMgYWdhaW5zdCBwYWdlLCBzbyB0aGlzIGlzIGFuIGVudHJ5CisJICogd2UgbXVzdCBmbHVzaC4KKwkgKi8KKworCVI3ID4+PSAxMDsJCS8qIE1hc2sgb2ZmIHRoZSBub24tYWRkcmVzcyBiaXRzKi8KKwlSNyA8PD0gMTA7CisJUDMgPSBSNzsKKwlJRkxVU0ggW1AzXTsJCS8qIEFuZCBmbHVzaCB0aGUgZW50cnkqLworaWZza2lwOgoraWZlMDoJUjUgKz0gMTsJCS8qIEFkdmFuY2UgdG8gbmV4dCBTZXQqLworaWZlMToJTk9QOworCitpZmluaXNoZWQ6CisJU1NZTkM7CQkJLyogRW5zdXJlIHRoZSBkYXRhIGdldHMgb3V0IHRvIG1lbS4qLworCisJLypGaW5pc2hlZC4gUmVzdG9yZSBjb250ZXh0LiovCisJTEIxID0gW1NQKytdOworCUxUMSA9IFtTUCsrXTsKKwlMQzEgPSBbU1ArK107CisJTEIwID0gW1NQKytdOworCUxUMCA9IFtTUCsrXTsKKwlMQzAgPSBbU1ArK107CisJKCBSNzowLCBQNTowICkgPSBbU1ArK107CisJUlRTOworCitpZmx1c2hfd2hvbGVfcGFnZToKKwkvKiBJdCdzIGEgMUsgb3IgNEsgcGFnZSwgc28gcXVpY2tlciB0byBqdXN0IGZsdXNoIHRoZQorCSAqIGVudGlyZSBwYWdlLgorCSAqLworCisJUDEgPSAzMjsJCS8qIEZvciAxSyBwYWdlcyovCisJUDIgPSBQMSA8PCAyOwkJLyogRm9yIDRLIHBhZ2VzKi8KKwlQMCA9IFIwOwkJLyogU3RhcnQgb2YgcGFnZSovCisJQ0MgPSBCSVRUU1QoUjEsIDE2KTsJLyogV2hldGhlciAxSyBvciA0SyovCisJSUYgQ0MgUDEgPSBQMjsKKwlQMSArPSAtMTsJCS8qIFVucm9sbCBvbmUgaXRlcmF0aW9uKi8KKwlTU1lOQzsKKwlJRkxVU0ggW1AwKytdOwkJLyogYmVjYXVzZSBDU1lOQyBjYW4ndCBlbmQgbG9vcHMuKi8KKwlMU0VUVVAgKGlzYWxsLCBpZWFsbCkgTEMwID0gUDE7Citpc2FsbDpJRkxVU0ggW1AwKytdOworaWVhbGw6IE5PUDsKKwlTU1lOQzsKKwlKVU1QIGlmaW5pc2hlZDsKKworLyogVGhpcyBpcyBhbiBleHRlcm5hbCBmdW5jdGlvbiBiZWluZyBjYWxsZWQgYnkgdGhlIHVzZXIKKyAqIGFwcGxpY2F0aW9uIHRocm91Z2ggX19mbHVzaF9jYWNoZV9hbGwuIEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uCisgKiBzZXJ2ZXMgdGhlIHB1cnBvc2Ugb2YgZmx1c2hpbmcgYWxsIHRoZSBwZW5kaW5nIHdyaXRlcyBpbgorICogaW4gdGhlIGRhdGEgY2FjaGUuCisgKi8KKworRU5UUlkoZmx1c2hfZGF0YV9jYWNoZSkKKwlbLS1TUF0gPSAoIFI3OjYsIFA1OjQgKTsKKwlMSU5LIDEyOworCVNQICs9IC0xMjsKKwlQNS5IID0gKERDUExCX0FERFIwID4+IDE2KTsKKwlQNS5MID0gKERDUExCX0FERFIwICYgMHhGRkZGKTsKKwlQNC5IID0gKERDUExCX0RBVEEwID4+IDE2KTsKKwlQNC5MID0gKERDUExCX0RBVEEwICYgMHhGRkZGKTsKKwlSNyA9IENQTEJfVkFMSUQgfCBDUExCX0wxX0NIQkwgfCBDUExCX0RJUlRZIChaKTsKKwlSNiA9IDE2OworbmV4dDoJUjAgPSBbUDUrK107CisJUjEgPSBbUDQrK107CisJQ0MgPSBCSVRUU1QoUjEsIDE0KTsJLyogSXMgaXQgd3JpdGUtdGhyb3VnaD8qLworCUlGIENDIEpVTVAgc2tpcDsJLyogSWYgc28sIGlnbm9yZSBpdC4qLworCVIyID0gUjEgJiBSNzsJCS8qIElzIGl0IGEgZGlydHksIGNhY2hlZCBwYWdlPyovCisJQ0MgPSBSMjsKKwlJRiAhQ0MgSlVNUCBza2lwOwkvKiBJZiBub3QsIGlnbm9yZSBpdC4qLworCVstLVNQXSA9IFJFVFM7CisJQ0FMTCBkY3BsYl9mbHVzaDsJLyogUjAgPSBwYWdlLCBSMSA9IGRhdGEqLworCVJFVFMgPSBbU1ArK107Citza2lwOglSNiArPSAtMTsKKwlDQyA9IFI2OworCUlGIENDIEpVTVAgbmV4dDsKKwlTU1lOQzsKKwlTUCArPSAxMjsKKwlVTkxJTks7CisJKCBSNzo2LCBQNTo0ICkgPSBbU1ArK107CisJUlRTOworCisvKiBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGZsdXNoIGFsbCBwZW5kaW5nCisgKiB3cml0ZXMgaW4gdGhlIGNhY2hlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgRENQTEIuCisgKgorICogUjAgLSAgcGFnZSdzIHN0YXJ0IGFkZHJlc3MKKyAqIFIxIC0gIENQTEIncyBkYXRhIGZpZWxkLgorICovCisKKy5hbGlnbiAyCitFTlRSWShkY3BsYl9mbHVzaCkKKwlbLS1TUF0gPSAoIFI3OjAsIFA1OjAgKTsKKwlbLS1TUF0gPSBMQzA7CisJWy0tU1BdID0gTFQwOworCVstLVNQXSA9IExCMDsKKwlbLS1TUF0gPSBMQzE7CisJWy0tU1BdID0gTFQxOworCVstLVNQXSA9IExCMTsKKworCS8qIElmIGl0J3MgYSAxSyBvciA0SyBwYWdlLCB0aGVuIGl0J3MgcXVpY2tlc3QgdG8KKwkgKiBqdXN0IHN5c3RlbWF0aWNhbGx5IGZsdXNoIGFsbCB0aGUgYWRkcmVzc2VzIGluCisJICogdGhlIHBhZ2UsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5J3JlIGluIHRoZQorCSAqIGNhY2hlLCBvciBkaXJ0eS4gSWYgaXQncyBhIDFNIG9yIDRNIHBhZ2UsIHRoZXJlCisJICogYXJlIHRvbyBtYW55IGFkZHJlc3NlcywgYW5kIHdlIGhhdmUgdG8gc2VhcmNoIHRoZQorCSAqIGNhY2hlIGZvciBsaW5lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYWdlLgorCSAqLworCisJQ0MgPSBCSVRUU1QoUjEsIDE3KTsJLyogMU1CIG9yIDRNQiAqLworCUlGICFDQyBKVU1QIGRmbHVzaF93aG9sZV9wYWdlOworCisJLyogV2UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBwYWdlJ3Mgc2l6ZSwgc28gZXh0cmFjdAorCSAqIHRoaXMgZnJvbSB0aGUgQ1BMQiAoYml0cyAxNzoxNiksIGFuZCBzY2FsZSB0byBnaXZlIGFuCisJICogb2Zmc2V0IGludG8gdGhlIHBhZ2Vfc2l6ZSBhbmQgcGFnZV9wcmVmaXggdGFibGVzLgorCSAqLworCisJUjEgPDw9IDE0OworCVIxID4+PSAzMDsKKwlSMSA8PD0gMjsKKworCS8qIFRoZSBwYWdlIGNvdWxkIGJlIG1hcHBlZCBpbnRvIEJhbmsgQSBvciBCYW5rIEIsIGRlcGVuZGluZworCSAqIG9uIChhKSB3aGV0aGVyIGJvdGggYmFua3MgYXJlIGNvbmZpZ3VyZWQgYXMgY2FjaGUsIGFuZAorCSAqIChiKSBvbiB3aGV0aGVyIGFkZHJlc3MgYml0IEFbeF0gaXMgc2V0LiB4IGlzIGRldGVybWluZWQKKwkgKiBieSBEQ0JTIGluIERNRU1fQ09OVFJPTAorCSAqLworCisJUjIgPSAwOwkJCS8qIERlZmF1bHQgdG8gQmFuayBBIChCYW5rIEIgd291bGQgYmUgMSkqLworCisJUDAuTCA9IChETUVNX0NPTlRST0wgJiAweEZGRkYpOworCVAwLkggPSAoRE1FTV9DT05UUk9MID4+IDE2KTsKKworCVIzID0gW1AwXTsJCS8qIElmIEJhbmsgQiBpcyBub3QgZW5hYmxlZCBhcyBjYWNoZSovCisJQ0MgPSBCSVRUU1QoUjMsIDIpOwkvKiB0aGVuIEJhbmsgQSBpcyBvdXIgb25seSBvcHRpb24uKi8KKwlJRiBDQyBKVU1QIGJhbmtfY2hvc2VuOworCisJUjQgPSAxPDwxNDsJCS8qIElmIERDQlM9PTAsIHVzZSBBWzE0XS4qLworCVI1ID0gUjQgPDwgNzsJCS8qIElmIERDQlM9PTEsIHVzZSBBWzIzXTsqLworCUNDID0gQklUVFNUKFIzLCA0KTsKKwlJRiBDQyBSNCA9IFI1OwkJLyogUjQgbm93IGhhcyBlaXRoZXIgYml0IDE0IG9yIGJpdCAyMyBzZXQuKi8KKwlSNSA9IFIwICYgUjQ7CQkvKiBVc2UgaXQgdG8gdGVzdCB0aGUgUGFnZSBhZGRyZXNzKi8KKwlDQyA9IFI1OwkJLyogYW5kIGlmIHRoYXQgYml0IGlzIHNldCwgd2UgdXNlIEJhbmsgQiwqLworCVIyID0gQ0M7CQkvKiBlbHNlIHdlIHVzZSBCYW5rIEEuKi8KKwlSMiA8PD0gMjM7CQkvKiBUaGUgQmFuayBzZWxlY3Rpb24ncyBhdCBwb3NuIDIzLiovCisKK2JhbmtfY2hvc2VuOgorCisJLyogV2UgY2FuIGFsc28gZGV0ZXJtaW5lIHRoZSBzdWItYmFuayB1c2VkLCBiZWNhdXNlIHRoaXMgaXMKKwkgKiB0YWtlbiBmcm9tIGJpdHMgMTM6MTIgb2YgdGhlIGFkZHJlc3MuCisJICovCisKKwlSMyA9ICgoMTI8PDgpfDIpOwkJLyogRXh0cmFjdGlvbiBwYXR0ZXJuICovCisJbm9wOwkJCQkvKkFuYW1vbHkgMDUwMDAyMDkqLworCVI0ID0gRVhUUkFDVChSMCwgUjMuTCkgKFopOwkvKiBFeHRyYWN0IGJpdHMqLworCVIzLkggPSBSNC5MIDw8IDAgOwkJLyogU2F2ZSBpbiBleHRyYWN0aW9uIHBhdHRlcm4gZm9yIGxhdGVyIGRlcG9zaXQuKi8KKworCS8qIFNvOgorCSAqIFIwID0gUGFnZSBzdGFydAorCSAqIFIxID0gUGFnZSBsZW5ndGggKGFjdHVhbGx5LCBvZmZzZXQgaW50byBzaXplL3ByZWZpeCB0YWJsZXMpCisJICogUjIgPSBCYW5rIHNlbGVjdCBtYXNrCisJICogUjMgPSBzdWItYmFuayBkZXBvc2l0IHZhbHVlcworICAJICoKKwkgKiBUaGUgY2FjaGUgaGFzIDIgV2F5cywgYW5kIDY0IHNldHMsIHNvIHdlIGl0ZXJhdGUgdGhyb3VnaAorCSAqIHRoZSBzZXRzLCBhY2Nlc3NpbmcgdGhlIHRhZyBmb3IgZWFjaCBXYXksIGZvciBvdXIgQmFuayBhbmQKKwkgKiBzdWItYmFuaywgbG9va2luZyBmb3IgZGlydHksIHZhbGlkIHRhZ3MgdGhhdCBtYXRjaCBvdXIKKwkgKiBhZGRyZXNzIHByZWZpeC4KKwkgKi8KKworCVA1LkwgPSAoRFRFU1RfQ09NTUFORCAmIDB4RkZGRik7CisJUDUuSCA9IChEVEVTVF9DT01NQU5EID4+IDE2KTsKKwlQNC5MID0gKERURVNUX0RBVEEwICYgMHhGRkZGKTsKKwlQNC5IID0gKERURVNUX0RBVEEwID4+IDE2KTsKKworCVAwLkwgPSBwYWdlX3ByZWZpeF90YWJsZTsKKwlQMC5IID0gcGFnZV9wcmVmaXhfdGFibGU7CisJUDEgPSBSMTsKKwlSNSA9IDA7CQkJLyogU2V0IGNvdW50ZXIqLworCVAwID0gUDEgKyBQMDsKKwlSNCA9IFtQMF07CQkvKiBUaGlzIGlzIHRoZSBhZGRyZXNzIHByZWZpeCovCisKKworCS8qIFdlJ3JlIHJlYWRpbmcgKGJpdCAxPT0wKSB0aGUgdGFnIChiaXQgMj09MCksIGFuZCB3ZQorCSAqIGRvbid0IGNhcmUgYWJvdXQgd2hpY2ggZG91YmxlLXdvcmQsIHNpbmNlIHdlJ3JlIG9ubHkKKwkgKiBmZXRjaGluZyB0YWdzLCBzbyB3ZSBvbmx5IGhhdmUgdG8gc2V0IFNldCwgQmFuaywKKwkgKiBTdWItYmFuayBhbmQgV2F5LgorCSAqLworCisJUDIgPSAyOworCUxTRVRVUCAoZnMxLCBmZTEpIExDMSA9IFAyOworZnMxOglQMCA9IDY0OwkJLyogaXRlcmF0ZSBvdmVyIGFsbCBzZXRzKi8KKwlMU0VUVVAgKGZzMCwgZmUwKSBMQzAgPSBQMDsKK2ZzMDoJUjYgPSBSNSA8PCA1OwkJLyogQ29tYmluZSBzZXQqLworCVI2LkggPSBSMy5IIDw8IDAgOwkvKiBhbmQgc3ViLWJhbmsqLworCVI2ID0gUjYgfCBSMjsJCS8qIGFuZCBCYW5rLiBMZWF2ZSBXYXk9PTAgYXQgZmlyc3QuKi8KKwlCSVRTRVQoUjYsMTQpOworCVtQNV0gPSBSNjsJCS8qIElzc3VlIENvbW1hbmQqLworCVNTWU5DOworCVI3ID0gW1A0XTsJCS8qIGFuZCByZWFkIFRhZy4qLworCUNDID0gQklUVFNUKFI3LCAwKTsJLyogQ2hlY2sgaWYgdmFsaWQqLworCUlGICFDQyBKVU1QIGZza2lwOwkvKiBhbmQgc2tpcCBpZiBub3QuKi8KKwlDQyA9IEJJVFRTVChSNywgMSk7CS8qIENoZWNrIGlmIGRpcnR5Ki8KKwlJRiAhQ0MgSlVNUCBmc2tpcDsJLyogYW5kIHNraXAgaWYgbm90LiovCisKKwkvKiBDb21wYXJlIGFnYWluc3QgdGhlIHBhZ2UgYWRkcmVzcy4gRmlyc3QsIHBsYW50IGJpdHMgMTM6MTIKKwkgKiBpbnRvIHRoZSB0YWcsIHNpbmNlIHRob3NlIGFyZW4ndCBwYXJ0IG9mIHRoZSByZXR1cm5lZCBkYXRhLgorCSAqLworCisJUjcgPSBERVBPU0lUKFI3LCBSMyk7CS8qIHNldCAxMzoxMiovCisJUjEgPSBSNyAmIFI0OwkJLyogTWFzayBvZmYgbG93ZXIgYml0cyovCisJQ0MgPSBSMSA9PSBSMDsJCS8qIENvbXBhcmUgYWdhaW5zdCBwYWdlIHN0YXJ0LiovCisJSUYgIUNDIEpVTVAgZnNraXA7CS8qIFNraXAgaXQgaWYgaXQgZG9lc24ndCBtYXRjaC4qLworCisJLyogVGFnIGFkZHJlc3MgbWF0Y2hlcyBhZ2FpbnN0IHBhZ2UsIHNvIHRoaXMgaXMgYW4gZW50cnkKKwkgKiB3ZSBtdXN0IGZsdXNoLgorCSAqLworCisJUjcgPj49IDEwOwkJLyogTWFzayBvZmYgdGhlIG5vbi1hZGRyZXNzIGJpdHMqLworCVI3IDw8PSAxMDsKKwlQMyA9IFI3OworCVNTWU5DOworCUZMVVNISU5WIFtQM107CQkvKiBBbmQgZmx1c2ggdGhlIGVudHJ5Ki8KK2Zza2lwOgorZmUwOglSNSArPSAxOwkJLyogQWR2YW5jZSB0byBuZXh0IFNldCovCitmZTE6CUJJVFNFVChSMiwgMjYpOwkJLyogR28gdG8gbmV4dCBXYXkuKi8KKworZGZpbmlzaGVkOgorCVNTWU5DOwkJCS8qIEVuc3VyZSB0aGUgZGF0YSBnZXRzIG91dCB0byBtZW0uKi8KKworCS8qRmluaXNoZWQuIFJlc3RvcmUgY29udGV4dC4qLworCUxCMSA9IFtTUCsrXTsKKwlMVDEgPSBbU1ArK107CisJTEMxID0gW1NQKytdOworCUxCMCA9IFtTUCsrXTsKKwlMVDAgPSBbU1ArK107CisJTEMwID0gW1NQKytdOworCSggUjc6MCwgUDU6MCApID0gW1NQKytdOworCVJUUzsKKworZGZsdXNoX3dob2xlX3BhZ2U6CisKKwkvKiBJdCdzIGEgMUsgb3IgNEsgcGFnZSwgc28gcXVpY2tlciB0byBqdXN0IGZsdXNoIHRoZQorCSAqIGVudGlyZSBwYWdlLgorCSAqLworCisJUDEgPSAzMjsJCS8qIEZvciAxSyBwYWdlcyovCisJUDIgPSBQMSA8PCAyOwkJLyogRm9yIDRLIHBhZ2VzKi8KKwlQMCA9IFIwOwkJLyogU3RhcnQgb2YgcGFnZSovCisJQ0MgPSBCSVRUU1QoUjEsIDE2KTsJLyogV2hldGhlciAxSyBvciA0SyovCisJSUYgQ0MgUDEgPSBQMjsKKwlQMSArPSAtMTsJCS8qIFVucm9sbCBvbmUgaXRlcmF0aW9uKi8KKyAgICBTU1lOQzsKKwlGTFVTSElOViBbUDArK107CS8qIGJlY2F1c2UgQ1NZTkMgY2FuJ3QgZW5kIGxvb3BzLiovCisJTFNFVFVQIChlYWxsLCBlYWxsKSBMQzAgPSBQMTsKK2VhbGw6CUZMVVNISU5WIFtQMCsrXTsKKwlTU1lOQzsKKwlKVU1QIGRmaW5pc2hlZDsKKworLmFsaWduIDQ7CitwYWdlX3ByZWZpeF90YWJsZToKKy5ieXRlNCAJMHhGRkZGRkMwMDsJLyogMUsgKi8KKy5ieXRlNAkweEZGRkZGMDAwOwkvKiA0SyAqLworLmJ5dGU0CTB4RkZGMDAwMDA7CS8qIDFNICovCisuYnl0ZTQJMHhGRkMwMDAwMDsJLyogNE0gKi8KKy5wYWdlX3ByZWZpeF90YWJsZS5lbmQ6CmRpZmYgLS1naXQgYS9jcHUvYmY1MzMvaW50ZXJydXB0LlMgYi9jcHUvYmY1MzMvaW50ZXJydXB0LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4MGRjNgotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9iZjUzMy9pbnRlcnJ1cHQuUwpAQCAtMCwwICsxLDM5MSBAQAorLyoKKyAqIFUtYm9vdCAtIGludGVycnVwdC5TIFByb2Nlc3Npbmcgb2YgaW50ZXJydXB0cyBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogVGhpcyBmaWxlIGlzIGJhc2VkIG9uIGludGVycnVwdC5TCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAzICBNZXRyb3dlcmtzLCBJbmMuIDxtd2FkZGVsQG1ldHJvd2Vya3MuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDAyICBBcmN0dXJ1cyBOZXR3b3JrcyBMdGQuIFRlZCBNYSA8bWF0ZWRAc3ltcGF0aWNvLmNhPgorICogQ29weXJpZ2h0IChDKSAxOTk4ICBELiBKZWZmIERpb25uZSA8amVmZkByeWVoYW0uZWUucnllcnNvbi5jYT4sCisgKiAgICAgICAgICAgICAgICAgICAgIEtlbm5ldGggQWxiYW5vd3NraSA8a2phaGRzQGtqYWhkcy5jb20+LAorICogICAgICAgICAgICAgICAgICAgICBUaGUgU2lsdmVyIEhhbW1lciBHcm91cCwgTHRkLgorICoKKyAqIChjKSAxOTk1LCBEaW9ubmUgJiBBc3NvY2lhdGVzCisgKiAoYykgMTk5NSwgREtHIERpc3BsYXkgVGVjaC4KKyAqCisgKiBUaGlzIGZpbGUgaXMgYWxzbyBiYXNlZCBvbiBleGNlcHRpb24uYXNtCisgKiAoQykgQ29weXJpZ2h0IDIwMDEtMjAwNSAtIEFuYWxvZyBEZXZpY2VzLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNkZWZpbmUgQVNTRU1CTFkKKworI2luY2x1ZGUgPGFzbS9od19pcnEuaD4KKyNpbmNsdWRlIDxhc20vZW50cnkuaD4KKyNpbmNsdWRlIDxhc20vYmxhY2tmaW5fZGVmcy5oPgorI2luY2x1ZGUgPGFzbS9jcHUvYmY1MzNfaXJxLmg+CisKKy5nbG9iYWwgYmxhY2tmaW5faXJxX3BhbmljOworCisudGV4dAorLmFsaWduIDIKKworI2lmbmRlZiBDT05GSUdfS0dEQgorLmdsb2JhbCBldnRfZW11bGF0aW9uCitldnRfZW11bGF0aW9uOgorCVNBVkVfQ09OVEVYVAorCXIwID0gSVJRX0VNVTsKKwlyMSA9IHNlcXN0YXQ7CisJc3AgKz0gLTEyOworCWNhbGwgYmxhY2tmaW5faXJxX3BhbmljOworCXNwICs9IDEyOworCXJ0ZTsKKyNlbmRpZgorCisuZ2xvYmFsIGV2dF9ubWkKK2V2dF9ubWk6CisJU0FWRV9DT05URVhUCisJcjAgPSBJUlFfTk1JOworCXIxID0gUkVUTjsKKwlzcCArPSAtMTI7CisJY2FsbCBibGFja2Zpbl9pcnFfcGFuaWM7CisJc3AgKz0gMTI7CisKK19ldnRfbm1pX2V4aXQ6CisJcnRuOworCisuZ2xvYmFsIHRyYXAKK3RyYXA6CisJWy0tc3BdID0gcjA7CisJWy0tc3BdID0gcjE7CisJWy0tc3BdID0gcDA7CisJWy0tc3BdID0gcDE7CisJWy0tc3BdID0gYXN0YXQ7CisJcjAgPSBzZXFzdGF0OworCVIwIDw8PSAyNjsKKwlSMCA+Pj0gMjY7CisJcDAgPSByMDsKKwlwMS5sID0gRVZUQUJMRTsKKwlwMS5oID0gRVZUQUJMRTsKKwlwMCA9IHAxICsgKHAwIDw8IDEpOworCXIxID0gV1twMF0gKFopOworCXAxID0gcjE7CisJanVtcCAocGMgKyBwMSk7CisKKy5nbG9iYWwgX0VWRU5UMQorX0VWRU5UMToKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UMgorX0VWRU5UMjoKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UMworX0VWRU5UMzoKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UNAorX0VWRU5UNDoKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UNQorX0VWRU5UNToKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UNgorX0VWRU5UNjoKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UNworX0VWRU5UNzoKKwlSQUlTRSAxNTsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UOAorX0VWRU5UODoKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UOQorX0VWRU5UOToKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UMTAKK19FVkVOVDEwOgorCVJBSVNFIDE0OworCUpVTVAuUyBfRVhJVDsKKworLmdsb2JhbCBfRVZFTlQxMQorX0VWRU5UMTE6CisJUkFJU0UgMTQ7CisJSlVNUC5TIF9FWElUOworCisuZ2xvYmFsIF9FVkVOVDEyCitfRVZFTlQxMjoKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UMTMKK19FVkVOVDEzOgorCVJBSVNFIDE0OworCUpVTVAuUyBfRVhJVDsKKworLmdsb2JhbCBfRVZFTlQxNAorX0VWRU5UMTQ6CisvKglSQUlTRSAxNDsJKi8KKwlDQUxMCV9jcGxiX2hkcjsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VWRU5UMTkKK19FVkVOVDE5OgorCVJBSVNFIDE0OworCUpVTVAuUyBfRVhJVDsKKworLmdsb2JhbCBfRVZFTlQyMAorX0VWRU5UMjA6CisJUkFJU0UgMTQ7CisJSlVNUC5TIF9FWElUOworCisuZ2xvYmFsIF9FVkVOVDIxCitfRVZFTlQyMToKKwlSQUlTRSAxNDsKKwlKVU1QLlMgX0VYSVQ7CisKKy5nbG9iYWwgX0VYSVQKK19FWElUOgorCUFTVEFUID0gW3NwKytdOworCXAxID0gW3NwKytdOworCXAwID0gW3NwKytdOworCXIxID0gW3NwKytdOworCXIwID0gW3NwKytdOworCVJUWDsKKworRVZUQUJMRToKKwkuYnl0ZTIgMHgwMDAwOworCS5ieXRlMiAweDAwMDA7CisJLmJ5dGUyIDB4MDAwMDsKKwkuYnl0ZTIgMHgwMDAwOworCS5ieXRlMiAweDAwMDA7CisJLmJ5dGUyIDB4MDAwMDsKKwkuYnl0ZTIgMHgwMDAwOworCS5ieXRlMiAweDAwMDA7CisJLmJ5dGUyIDB4MDAwMDsKKwkuYnl0ZTIgMHgwMDAwOworCS5ieXRlMiAweDAwMDA7CisJLmJ5dGUyIDB4MDAwMDsKKwkuYnl0ZTIgMHgwMDAwOworCS5ieXRlMiAweDAwMDA7CisJLmJ5dGUyIDB4MDAwMDsKKwkuYnl0ZTIgMHgwMDAwOworCS5ieXRlMiAweDAwM0U7CisJLmJ5dGUyIDB4MDA0MjsKKwkuYnl0ZTQgMHgwMDAwOworCS5ieXRlNCAweDAwMDA7CisJLmJ5dGU0IDB4MDAwMDsKKwkuYnl0ZTQgMHgwMDAwOworCS5ieXRlNCAweDAwMDA7CisJLmJ5dGU0IDB4MDAwMDsKKwkuYnl0ZTQgMHgwMDAwOworCS5ieXRlMiAweDAwMDA7CisJLmJ5dGUyIDB4MDAxRTsKKwkuYnl0ZTIgMHgwMDIyOworCS5ieXRlMiAweDAwMzI7CisJLmJ5dGUyIDB4MDAyZTsKKwkuYnl0ZTIgMHgwMDAyOworCS5ieXRlMiAweDAwMzY7CisJLmJ5dGUyIDB4MDAyQTsKKwkuYnl0ZTIgMHgwMDFBOworCS5ieXRlMiAweDAwMTY7CisJLmJ5dGUyIDB4MDAwQTsKKwkuYnl0ZTIgMHgwMDBFOworCS5ieXRlMiAweDAwMTI7CisJLmJ5dGUyIDB4MDAwNjsKKwkuYnl0ZTIgMHgwMDI2OworCisuZ2xvYmFsIGV2dF9yc3QKK2V2dF9yc3Q6CisJU0FWRV9DT05URVhUCisJcjAgPSBJUlFfUlNUOworCXIxID0gUkVUTjsKKwlzcCArPSAtMTI7CisJY2FsbCBkb19yZXNldDsKKwlzcCArPSAxMjsKKworX2V2dF9yc3RfZXhpdDoKKwlydG47CisKK2lycV9wYW5pYzoKKwlyMCA9IElSUV9FVlg7CisJcjEgPSAgc3A7CisJc3AgKz0gLTEyOworCWNhbGwgYmxhY2tmaW5faXJxX3BhbmljOworCXNwICs9IDEyOworCisuZ2xvYmFsIGV2dF9pdmh3CitldnRfaXZodzoKKwlTQVZFX0NPTlRFWFQKKwlSQUlTRSAxNDsKKworX2V2dF9pdmh3X2V4aXQ6CisJIHJ0aTsKKworLmdsb2JhbCBldnRfdGltZXIKK2V2dF90aW1lcjoKKwlTQVZFX0NPTlRFWFQKKwlyMCA9IElSUV9DT1JFVE1SOworCXNwICs9IC0xMjsKKwkvKiBQb2xsaW5nIG1ldGhvZCB1c2VkIG5vdy4gKi8KKwkvKiBjYWxsIHRpbWVyX2ludDsgKi8KKwlzcCArPSAxMjsKKwlSRVNUT1JFX0NPTlRFWFQKKwlydGk7CisJbm9wOworCisuZ2xvYmFsIGV2dF9ldnQ3CitldnRfZXZ0NzoKKwlTQVZFX0NPTlRFWFQKKwlyMCA9IDc7CisJc3AgKz0gLTEyOworCWNhbGwgcHJvY2Vzc19pbnQ7CisJc3AgKz0gMTI7CisKK2V2dF9ldnQ3X2V4aXQ6CisJUkVTVE9SRV9DT05URVhUCisJcnRpOworCisuZ2xvYmFsIGV2dF9ldnQ4CitldnRfZXZ0ODoKKwlTQVZFX0NPTlRFWFQKKwlyMCA9IDg7CisJc3AgKz0gLTEyOworCWNhbGwgcHJvY2Vzc19pbnQ7CisJc3AgKz0gMTI7CisKK2V2dF9ldnQ4X2V4aXQ6CisJUkVTVE9SRV9DT05URVhUCisJcnRpOworCisuZ2xvYmFsIGV2dF9ldnQ5CitldnRfZXZ0OToKKwlTQVZFX0NPTlRFWFQKKwlyMCA9IDk7CisJc3AgKz0gLTEyOworCWNhbGwgcHJvY2Vzc19pbnQ7CisJc3AgKz0gMTI7CisKK2V2dF9ldnQ5X2V4aXQ6CisJUkVTVE9SRV9DT05URVhUCisJcnRpOworCisuZ2xvYmFsIGV2dF9ldnQxMAorZXZ0X2V2dDEwOgorCVNBVkVfQ09OVEVYVAorCXIwID0gMTA7CisJc3AgKz0gLTEyOworCWNhbGwgcHJvY2Vzc19pbnQ7CisJc3AgKz0gMTI7CisKK2V2dF9ldnQxMF9leGl0OgorCVJFU1RPUkVfQ09OVEVYVAorCXJ0aTsKKworLmdsb2JhbCBldnRfZXZ0MTEKK2V2dF9ldnQxMToKKwlTQVZFX0NPTlRFWFQKKwlyMCA9IDExOworCXNwICs9IC0xMjsKKwljYWxsIHByb2Nlc3NfaW50OworCXNwICs9IDEyOworCitldnRfZXZ0MTFfZXhpdDoKKwlSRVNUT1JFX0NPTlRFWFQKKwlydGk7CisKKy5nbG9iYWwgZXZ0X2V2dDEyCitldnRfZXZ0MTI6CisJU0FWRV9DT05URVhUCisJcjAgPSAxMjsKKwlzcCArPSAtMTI7CisJY2FsbCBwcm9jZXNzX2ludDsKKwlzcCArPSAxMjsKK2V2dF9ldnQxMl9leGl0OgorCSBSRVNUT1JFX0NPTlRFWFQKKwkgcnRpOworCisuZ2xvYmFsIGV2dF9ldnQxMworZXZ0X2V2dDEzOgorCVNBVkVfQ09OVEVYVAorCXIwID0gMTM7CisJc3AgKz0gLTEyOworCWNhbGwgcHJvY2Vzc19pbnQ7CisJc3AgKz0gMTI7CisKK2V2dF9ldnQxM19leGl0OgorCSBSRVNUT1JFX0NPTlRFWFQKKwkgcnRpOworCisuZ2xvYmFsIGV2dF9zeXN0ZW1fY2FsbAorZXZ0X3N5c3RlbV9jYWxsOgorCVstLXNwXSA9IHIwOworCVstLVNQXSA9IFJFVEk7CisJcjAgPSBbc3ArK107CisJcjAgKz0gMjsKKwlbLS1zcF0gPSByMDsKKwlSRVRJID0gW1NQKytdOworCXIwID0gW1NQKytdOworCVNBVkVfQ09OVEVYVAorCXNwICs9IC0xMjsKKwljYWxsIGRpc3BsYXlfZXhjcDsKKwlzcCArPSAxMjsKKwlSRVNUT1JFX0NPTlRFWFQKKwlSVEk7CisKK2V2dF9zeXN0ZW1fY2FsbF9leGl0OgorCXJ0aTsKKworLmdsb2JhbCBldnRfc29mdF9pbnQxCitldnRfc29mdF9pbnQxOgorCVstLXNwXSA9IHIwOworCVstLVNQXSA9IFJFVEk7CisJcjAgPSBbc3ArK107CisJcjAgKz0gMjsKKwlbLS1zcF0gPSByMDsKKwlSRVRJID0gW1NQKytdOworCXIwID0gW1NQKytdOworCVNBVkVfQ09OVEVYVAorCXNwICs9IC0xMjsKKwljYWxsIGRpc3BsYXlfZXhjcDsKKwlzcCArPSAxMjsKKwlSRVNUT1JFX0NPTlRFWFQKKwlSVEk7CisKK2V2dF9zb2Z0X2ludDFfZXhpdDoKKwlydGk7CmRpZmYgLS1naXQgYS9jcHUvYmY1MzMvaW50ZXJydXB0cy5jIGIvY3B1L2JmNTMzL2ludGVycnVwdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjFhMjVlCi0tLSAvZGV2L251bGwKKysrIGIvY3B1L2JmNTMzL2ludGVycnVwdHMuYwpAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIFUtYm9vdCAtIGludGVycnVwdHMuYyBJbnRlcnJ1cHQgcmVsYXRlZCByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBpbnRlcnJ1cHRzLmMKKyAqIENvcHlyaWdodCAxOTk2IFJvbWFuIFppcHBlbAorICogQ29weXJpZ2h0IDE5OTkgRC4gSmVmZiBEaW9ubmUgPGplZmZAdWNsaW51eC5vcmc+CisgKiBDb3B5cmlnaHQgMjAwMC0yMDAxIExpbmVvLCBJbmMuIEQuIEplZmZmIERpb25uZSA8amVmZkBsaW5lby5jYT4KKyAqIENvcHlyaWdodCAyMDAyIEFyY3R1cnVzIE5ldHdvcmtzIEluYy4gTWFUZWQgPG1hdGVkQHN5bXBhdGljby5jYT4KKyAqIENvcHlyaWdodCAyMDAzIE1ldHJvd2Vya3MvTW90b3JvbGEKKyAqIENvcHlyaWdodCAyMDAzIEJhcyBWZXJtZXVsZW4gPGJhc0BidXl3YXlzLm5sPiwKKyAqIAkJCUJ1eVdheXMgQi5WLiAod3d3LmJ1eXdheXMubmwpCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vbWFjaGRlcC5oPgorI2luY2x1ZGUgPGFzbS9pcnEuaD4KKyNpbmNsdWRlIDxhc20vY3B1L2RlZkJGNTMzLmg+CisjaW5jbHVkZSAiY3B1LmgiCisKK3N0YXRpYyB1bG9uZyB0aW1lc3RhbXA7CitzdGF0aWMgdWxvbmcgbGFzdF90aW1lOworc3RhdGljIGludCBpbnRfZmxhZzsKKworaW50IGlycV9mbGFnczsgLyogbmVlZGVkIGJ5IGFzbS1ibGFja2Zpbi9zeXN0ZW0uaCAqLworCisvKiBGdW5jdGlvbnMganVzdCB0byBzYXRpc2Z5IHRoZSBsaW5rZXIgKi8KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIFBvd2VyUEMgY29kZSAocmVhZCB0aW1lYmFzZSBhcyBsb25nIGxvbmcpLgorICogT24gQkY1MzMgaXQganVzdCByZXR1cm5zIHRoZSB0aW1lciB2YWx1ZS4KKyAqLwordW5zaWduZWQgbG9uZyBsb25nIGdldF90aWNrcyh2b2lkKQoreworCXJldHVybiBnZXRfdGltZXIoMCk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGRlcml2ZWQgZnJvbSBQb3dlclBDIGNvZGUgKHRpbWViYXNlIGNsb2NrIGZyZXF1ZW5jeSkuCisgKiBPbiBCRjUzMyBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGltZXIgdGlja3MgcGVyIHNlY29uZC4KKyAqLwordWxvbmcgZ2V0X3RiY2xrICh2b2lkKQoreworCXVsb25nIHRiY2xrOworCisJdGJjbGsgPSBDRkdfSFo7CisJcmV0dXJuIHRiY2xrOworfQorCit2b2lkIGVuYWJsZV9pbnRlcnJ1cHRzKHZvaWQpCit7CisJcmVzdG9yZV9mbGFncyhpbnRfZmxhZyk7Cit9CisKK2ludCBkaXNhYmxlX2ludGVycnVwdHModm9pZCkKK3sKKwlzYXZlX2FuZF9jbGkoaW50X2ZsYWcpOworCXJldHVybiAxOworfQorCitpbnQgaW50ZXJydXB0X2luaXQodm9pZCkKK3sKKwlyZXR1cm4gKDApOworfQorCit2b2lkIHVkZWxheSh1bnNpZ25lZCBsb25nIHVzZWMpCit7CisJdW5zaWduZWQgbG9uZyBkZWxheSwgc3RhcnQsIHN0b3A7CisJdW5zaWduZWQgbG9uZyBjY2xrOworCWNjbGsgPSAoQ09ORklHX0NDTEtfSFopOworCisJd2hpbGUgKCB1c2VjID4gMSApIHsKKwkgICAgICAgLyoKKwkJKiBob3cgbWFueSBjbG9jayB0aWNrcyB0byBkZWxheT8KKwkJKiAgLSByZXF1ZXN0KGluIHVzZWNvbmRzKSAqIGNsb2NrX3RpY2tzKEh6KSAvIHVzZWNvbmRzL3NlY29uZAorCQkqLworCQlpZiAodXNlYyA8IDEwMDApIHsKKwkJCWRlbGF5ID0gKHVzZWMgKiAoY2Nsay8yNDQpKSA+PiAxMiA7CisJCQl1c2VjID0gMDsKKwkJfSBlbHNlIHsKKwkJCWRlbGF5ID0gKDEwMDAgKiAoY2Nsay8yNDQpKSA+PiAxMiA7CisJCQl1c2VjIC09IDEwMDA7CisJCX0KKworCQlhc20gdm9sYXRpbGUgKCIgJTAgPSBDWUNMRVM7IjogIj1nIihzdGFydCkpOworCQlkbyB7CisJCQlhc20gdm9sYXRpbGUgKCIgJTAgPSBDWUNMRVM7ICI6ICI9ZyIoc3RvcCkpOworCQl9IHdoaWxlIChzdG9wIC0gc3RhcnQgPCBkZWxheSk7CisJfQorCisJcmV0dXJuOworfQorCit2b2lkIHRpbWVyX2luaXQodm9pZCkKK3sKKwkqcFRDTlRMID0gMHgxOworCSpwVFNDQUxFID0gMHgwOworCSpwVENPVU5UICA9IE1BWF9USU1fTE9BRDsKKwkqcFRQRVJJT0QgPSBNQVhfVElNX0xPQUQ7CisJKnBUQ05UTCA9IDB4NzsKKwlhc20oIkNTWU5DOyIpOworCisJdGltZXN0YW1wID0gMDsKKwlsYXN0X3RpbWUgPSAwOworfQorCisvKiBBbnkgbmV0d29yayBjb21tYW5kIG9yIGZsYXNoCisgKiBjb21tYW5kIGlzIHN0YXJ0ZWQgZ2V0X3RpbWVyIHNoYWxsCisgKiBiZSBjYWxsZWQgYmVmb3JlIFRDT1VOVCBnZXRzIHJlc2V0LAorICogdG8gaW1wbGVtZW50IHRoZSBhY2N1cmF0ZSB0aW1lb3V0cy4KKyAqCisgKiBIb3cgZXZlciBtaWxsaWNvbmRzIGRvZXNuJ3QgcmV0dXJuCisgKiB0aGUgbnVtYmVyIHRoYXQgaGFzIGJlZW4gZWxhcHNlZCBmcm9tCisgKiB0aGUgbGFzdCByZXNldC4KKyAqCisgKiAgQXMgZ2V0X3RpbWVyIGlzIHVzZWQgaW4gdGhlIHUtYm9vdAorICogIG9ubHkgZm9yIHRpbWVvdXRzIHRoaXMgc2hvdWxkIGJlCisgKiAgc3VmZmljaWVudAorICovCit1bG9uZyBnZXRfdGltZXIodWxvbmcgYmFzZSkKK3sKKwl1bG9uZyBtaWxpc2VjOworCisJLyogTnVtYmVyIG9mIGNsb2NrcyBlbGFwc2VkICovCisJdWxvbmcgY2xvY2tzID0gKE1BWF9USU1fTE9BRCAtICgqcFRDT1VOVCkpOworCisJLyogRmluZCBpZiB0aGUgVENPVU5UIGlzIHJlc2V0CisJdGltZXN0YW1wIGdpdmVzIHRoZSBudW1iZXIgb2YgdGltZXMKKwlUQ09VTlQgZ290IHJlc2V0ICovCisJaWYoY2xvY2tzIDwgbGFzdF90aW1lKQorCQl0aW1lc3RhbXArKzsKKwlsYXN0X3RpbWUgPSBjbG9ja3M7CisKKwkvKiBHZXQgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgKi8KKwltaWxpc2VjID0gY2xvY2tzLyhDT05GSUdfQ0NMS19IWiAvIDEwMDApOworCisJLyogRmluZCB0aGUgbnVtYmVyIG9mIG1pbGxpc29uZHMKKwl0aGF0IGdvdCBlbGFwc2VkIGJlZm9yZSB0aGlzIFRDT1VOVAorCWN5Y2xlICovCisJbWlsaXNlYyArPSB0aW1lc3RhbXAgKiAoTUFYX1RJTV9MT0FELyhDT05GSUdfQ0NMS19IWiAvIDEwMDApKTsKKworCXJldHVybiAobWlsaXNlYyAtIGJhc2UpOworfQpkaWZmIC0tZ2l0IGEvY3B1L2JmNTMzL2ludHMuYyBiL2NwdS9iZjUzMy9pbnRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5ZjRiMgotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9iZjUzMy9pbnRzLmMKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBVLWJvb3QgLSBpbnRzLmMgSW50ZXJydXB0IHJlbGF0ZWQgcm91dGluZXMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBUaGlzIGZpbGUgaXMgYmFzZWQgb24gaW50cy5jCisgKgorICogQXByMTggMjAwMywgQ2hhbmdlZCBieSBIdVRhbyB0byBzdXBwb3J0IGludGVycnVwdCBjYXNjYWRpbmcgZm9yIEJsYWNrZmluCisgKiAgICAgICAgICAgICBkcml2ZXJzCisgKgorICogQ29weXJpZ2h0IDE5OTYgUm9tYW4gWmlwcGVsCisgKiBDb3B5cmlnaHQgMTk5OSBELiBKZWZmIERpb25uZSA8amVmZkB1Y2xpbnV4Lm9yZz4KKyAqIENvcHlyaWdodCAyMDAwLTIwMDEgTGluZW8sIEluYy4gRC4gSmVmZmYgRGlvbm5lIDxqZWZmQGxpbmVvLmNhPgorICogQ29weXJpZ2h0IDIwMDIgQXJjdHVydXMgTmV0d29ya3MgSW5jLiBNYVRlZCA8bWF0ZWRAc3ltcGF0aWNvLmNhPgorICogQ29weXJpZ2h0IDIwMDMgTWV0cm93ZXJrcy9Nb3Rvcm9sYQorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxsaW51eC9zdGRkZWYuaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2lycS5oPgorI2luY2x1ZGUgPGFzbS90cmFwcy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9lcnJuby5oPgorI2luY2x1ZGUgPGFzbS9tYWNoZGVwLmg+CisjaW5jbHVkZSA8YXNtL3NldHVwLmg+CisjaW5jbHVkZSA8YXNtL2JsYWNrZmluLmg+CisjaW5jbHVkZSAiY3B1LmgiCisKK3ZvaWQgYmxhY2tmaW5faXJxX3BhbmljKGludCByZWFzb24sIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXByaW50ZigiXG5cbkV4Y2VwdGlvbjogSVJRIDB4JXggZW50ZXJlZFxuIiwgcmVhc29uKTsKKwlwcmludGYoImNvZGU9WzB4JXhdLCAiLCAodW5zaWduZWQgaW50KSAocmVncy0+c2Vxc3RhdCAmIDB4M2YpKTsKKwlwcmludGYoInN0YWNrIGZyYW1lPTB4JXgsICIsICh1bnNpZ25lZCBpbnQpIHJlZ3MpOworCXByaW50ZigiYmFkIFBDPTB4JTA0eFxuIiwgKHVuc2lnbmVkIGludCkgcmVncy0+cGMpOworCWR1bXAocmVncyk7CisJcHJpbnRmKCJVbmhhbmRsZWQgSVJRIG9yIGV4Y2VwdGlvbnMhXG4iKTsKKwlwcmludGYoIlBsZWFzZSByZXNldCB0aGUgYm9hcmQgXG4iKTsKK30KKwordm9pZCBibGFja2Zpbl9pbml0X0lSUSh2b2lkKQoreworCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoU0lDX0lNQVNLKSA9IFNJQ19VTk1BU0tfQUxMOworCWNsaSgpOworI2lmbmRlZiBDT05GSUdfS0dEQgorCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoRVZUX0VNVUxBVElPTl9BRERSKSA9IDB4MDsKKyNlbmRpZgorCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoRVZUX05NSV9BRERSKSA9CisJCSh1bnNpZ25lZCB2b2xhdGlsZSBsb25nKSBldnRfbm1pOworCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoRVZUX0VYQ0VQVElPTl9BRERSKSA9CisJCSh1bnNpZ25lZCB2b2xhdGlsZSBsb25nKSB0cmFwOworCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoRVZUX0hBUkRXQVJFX0VSUk9SX0FERFIpID0KKwkJKHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcpIGV2dF9pdmh3OworCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoRVZUX1JFU0VUX0FERFIpID0KKwkJKHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcpIGV2dF9yc3Q7CisJKih1bnNpZ25lZCB2b2xhdGlsZSBsb25nICopIChFVlRfVElNRVJfQUREUikgPQorCQkodW5zaWduZWQgdm9sYXRpbGUgbG9uZykgZXZ0X3RpbWVyOworCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoRVZUX0lWRzdfQUREUikgPQorCQkodW5zaWduZWQgdm9sYXRpbGUgbG9uZykgZXZ0X2V2dDc7CisJKih1bnNpZ25lZCB2b2xhdGlsZSBsb25nICopIChFVlRfSVZHOF9BRERSKSA9CisJCSh1bnNpZ25lZCB2b2xhdGlsZSBsb25nKSBldnRfZXZ0ODsKKwkqKHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcgKikgKEVWVF9JVkc5X0FERFIpID0KKwkJKHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcpIGV2dF9ldnQ5OworCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoRVZUX0lWRzEwX0FERFIpID0KKwkJKHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcpIGV2dF9ldnQxMDsKKwkqKHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcgKikgKEVWVF9JVkcxMV9BRERSKSA9CisJCSh1bnNpZ25lZCB2b2xhdGlsZSBsb25nKSBldnRfZXZ0MTE7CisJKih1bnNpZ25lZCB2b2xhdGlsZSBsb25nICopIChFVlRfSVZHMTJfQUREUikgPQorCQkodW5zaWduZWQgdm9sYXRpbGUgbG9uZykgZXZ0X2V2dDEyOworCSoodW5zaWduZWQgdm9sYXRpbGUgbG9uZyAqKSAoRVZUX0lWRzEzX0FERFIpID0KKwkJKHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcpIGV2dF9ldnQxMzsKKwkqKHVuc2lnbmVkIHZvbGF0aWxlIGxvbmcgKikgKEVWVF9JVkcxNF9BRERSKSA9CisJCSh1bnNpZ25lZCB2b2xhdGlsZSBsb25nKSBldnRfc3lzdGVtX2NhbGw7CisJKih1bnNpZ25lZCB2b2xhdGlsZSBsb25nICopIChFVlRfSVZHMTVfQUREUikgPQorCQkodW5zaWduZWQgdm9sYXRpbGUgbG9uZykgZXZ0X3NvZnRfaW50MTsKKwkqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikgSUxBVCA9IDA7CisJYXNtKCJjc3luYzsiKTsKKwlzdGkoKTsKKwkqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikgSU1BU0sgPSAweGZmYmY7CisJYXNtKCJjc3luYzsiKTsKK30KKwordm9pZCBkaXNwbGF5X2V4Y3Aodm9pZCkKK3sKKwlwcmludGYoIkV4Y2VwdGlvbiFcbiIpOworfQpkaWZmIC0tZ2l0IGEvY3B1L2JmNTMzL3NlcmlhbC5jIGIvY3B1L2JmNTMzL3NlcmlhbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YWU5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvYmY1MzMvc2VyaWFsLmMKQEAgLTAsMCArMSwxOTQgQEAKKy8qCisgKiBVLWJvb3QgLSBzZXJpYWwuYyBTZXJpYWwgZHJpdmVyIGZvciBCRjUzMworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbgorICogYmY1MzNfc2VyaWFsLmM6IFNlcmlhbCBkcml2ZXIgZm9yIEJsYWNrRmluIEJGNTMzIERTUCBpbnRlcm5hbCBVQVJULgorICogQ29weXJpZ2h0IChjKSAyMDAzCUJhcyBWZXJtZXVsZW4gPGJhc0BidXl3YXlzLm5sPiwKKyAqIAkJCUJ1eVdheXMgQi5WLiAod3d3LmJ1eXdheXMubmwpCisgKgorICogQmFzZWQgaGVhdmlseSBvbiBibGtmaW5zZXJpYWwuYworICogYmxrZmluc2VyaWFsLmM6IFNlcmlhbCBkcml2ZXIgZm9yIEJsYWNrRmluIERTUCBpbnRlcm5hbCBVU1JUcy4KKyAqIENvcHlyaWdodChjKSAyMDAzCU1ldHJvd2Vya3MJPG13YWRkZWxAbWV0cm93ZXJrcy5jb20+CisgKiBDb3B5cmlnaHQoYykJMjAwMQlUb255IFouIEtvdQk8dG9ueWtvQGFyY3R1cnVzbmV0d29ya3MuY29tPgorICogQ29weXJpZ2h0KGMpCTIwMDEtMjAwMiBBcmN0dXJ1cyBOZXR3b3JrcyBJbmMuIDx3d3cuYXJjdHVydXNuZXR3b3Jrcy5jb20+CisgKgorICogQmFzZWQgb24gY29kZSBmcm9tIDY4MzI4IHZlcnNpb24gc2VyaWFsIGRyaXZlciBpbWxwZW1lbnRhdGlvbiB3aGljaCB3YXM6CisgKiBDb3B5cmlnaHQgKEMpIDE5OTUgICAgICAgRGF2aWQgUy4gTWlsbGVyICAgIDxkYXZlbUBjYWlwLnJ1dGdlcnMuZWR1PgorICogQ29weXJpZ2h0IChDKSAxOTk4ICAgICAgIEtlbm5ldGggQWxiYW5vd3NraSA8a2phaGRzQGtqYWhkcy5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTkgRC4gSmVmZiBEaW9ubmUgICAgIDxqZWZmQHVjbGludXgub3JnPgorICogQ29weXJpZ2h0IChDKSAxOTk5ICAgICAgIFZsYWRpbWlyIEd1cmV2aWNoICA8dmd1cmV2aWNAY2lzY28uY29tPgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vaXJxLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9zZWdtZW50Lmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorI2luY2x1ZGUgPGFzbS9kZWxheS5oPgorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSAiYmY1MzNfc2VyaWFsLmgiCisKK3Vuc2lnbmVkIGxvbmcgcGxsX2Rpdl9mYWN0OworCit2b2lkIGNhbGNfYmF1ZCh2b2lkKQoreworCXVuc2lnbmVkIGNoYXIgaTsKKwlpbnQJdGVtcDsKKworCWZvcihpID0gMDsgaSA8IHNpemVvZihiYXVkX3RhYmxlKS9zaXplb2YoaW50KTsgaSsrKSB7CisJCXRlbXAgPSAgQ09ORklHX1NDTEtfSFovKGJhdWRfdGFibGVbaV0qOCk7CisJCWlmICggdGVtcCAmJiAweDEgPT0gMSApIHsKKwkJCXRlbXArKzsKKwkJfQorCQl0ZW1wID0gdGVtcC8yOworCQlod19iYXVkX3RhYmxlW2ldLmRsX2hpZ2ggPSAodGVtcCA+PiA4KSYgMHhGRjsKKwkJaHdfYmF1ZF90YWJsZVtpXS5kbF9sb3cgPSAodGVtcCkgJiAweEZGOworCX0KK30KKwordm9pZCBzZXJpYWxfc2V0YnJnKHZvaWQpCit7CisJaW50IGk7CisJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisKKwljYWxjX2JhdWQoKTsKKworCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoYmF1ZF90YWJsZSkgLyBzaXplb2YoaW50KTsgaSsrKSB7CisJCWlmIChnZC0+YmF1ZHJhdGUgPT0gYmF1ZF90YWJsZVtpXSkKKwkJCWJyZWFrOworCX0KKworCS8qIEVuYWJsZSBVQVJUICovCisJKnBVQVJUX0dDVEwgfD0gVUFSVF9HQ1RMX1VDRU47CisJYXNtKCJzc3luYzsiKTsKKworCS8qIFNldCBETEFCIGluIExDUiB0byBBY2Nlc3MgRExMIGFuZCBETEggKi8KKwlBQ0NFU1NfTEFUQ0g7CisJYXNtKCJzc3luYzsiKTsKKworCSpwVUFSVF9ETEwgPSBod19iYXVkX3RhYmxlW2ldLmRsX2xvdzsKKwlhc20oInNzeW5jOyIpOworCSpwVUFSVF9ETEggPSBod19iYXVkX3RhYmxlW2ldLmRsX2hpZ2g7CisJYXNtKCJzc3luYzsiKTsKKworCS8qIENsZWFyIERMQUIgaW4gTENSIHRvIEFjY2VzcyBUSFIgUkJSIElFUiAqLworCUFDQ0VTU19QT1JUX0lFUjsKKwlhc20oInNzeW5jOyIpOworCisJLyogRW5hYmxlICBFUkJGSSBhbmQgRUxTSSBpbnRlcnJ1cHRzCisJKiB0byBwb2xsIFNJQ19JU1IgcmVnaXN0ZXIqLworCSpwVUFSVF9JRVIgPSBVQVJUX0lFUl9FTFNJIHwgVUFSVF9JRVJfRVJCRkkgfCBVQVJUX0lFUl9FVEJFSTsKKwlhc20oInNzeW5jOyIpOworCisJLyogU2V0IExDUiB0byBXb3JkIExlbmdoIDgtYml0IHdvcmQgc2VsZWN0ICovCisJKnBVQVJUX0xDUiA9IFVBUlRfTENSX1dMUzg7CisJYXNtKCJzc3luYzsiKTsKKworCXJldHVybjsKK30KKworaW50IHNlcmlhbF9pbml0KHZvaWQpCit7CisJc2VyaWFsX3NldGJyZygpOworCXJldHVybiAoMCk7Cit9CisKK3ZvaWQgc2VyaWFsX3B1dGMoY29uc3QgY2hhciBjKQoreworCWlmICgoKnBVQVJUX0xTUikgJiBVQVJUX0xTUl9URU1UKQorCXsKKwkJaWYgKGMgPT0gJ1xuJykKKwkJCXNlcmlhbF9wdXRjKCdccicpOworCisJCWxvY2FsX3B1dF9jaGFyKGMpOworCX0KKworCXdoaWxlICghKCgqcFVBUlRfTFNSKSAmIFVBUlRfTFNSX1RFTVQpKQorCQlTWU5DX0FMTDsKKworCXJldHVybjsKK30KKworaW50IHNlcmlhbF90c3RjKHZvaWQpCit7CisJaWYgKCpwVUFSVF9MU1IgJiBVQVJUX0xTUl9EUikKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKworaW50IHNlcmlhbF9nZXRjKHZvaWQpCit7CisJdW5zaWduZWQgc2hvcnQgdWFydF9sc3JfdmFsLCB1YXJ0X3Jicl92YWw7CisJdW5zaWduZWQgbG9uZyBpc3JfdmFsOworCWludCByZXQ7CisKKwkvKiBQb2xsIGZvciBSWCBJbnRlcnJ1cHQgKi8KKwl3aGlsZSAoISgoaXNyX3ZhbCA9ICoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNJQ19JU1IpICYgSVJRX1VBUlRfUlhfQklUKSk7CisJYXNtKCJjc3luYzsiKTsKKworCXVhcnRfbHNyX3ZhbCA9ICpwVUFSVF9MU1I7CS8qIENsZWFyIHN0YXR1cyBiaXQgKi8KKwl1YXJ0X3Jicl92YWwgPSAqcFVBUlRfUkJSOwkvKiBnZXRjKCkgKi8KKworCWlmIChpc3JfdmFsICYgSVJRX1VBUlRfRVJST1JfQklUKSB7CisJCXJldCA9ICAtMTsKKwl9CisJZWxzZQorCXsKKwkJcmV0ID0gdWFydF9yYnJfdmFsICYgMHhmZjsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIHNlcmlhbF9wdXRzKGNvbnN0IGNoYXIgKnMpCit7CisJd2hpbGUgKCpzKSB7CisJCXNlcmlhbF9wdXRjKCpzKyspOworCX0KK30KKworc3RhdGljIHZvaWQgbG9jYWxfcHV0X2NoYXIoY2hhciBjaCkKK3sKKwlpbnQgZmxhZ3MgPSAwOworCXVuc2lnbmVkIGxvbmcgaXNyX3ZhbDsKKworCXNhdmVfYW5kX2NsaShmbGFncyk7CisKKwkvKiBQb2xsIGZvciBUWCBJbnRlcnJ1cHV0ICovCisJd2hpbGUgKCEoKGlzcl92YWwgPSAqcFNJQ19JU1IpICYgSVJRX1VBUlRfVFhfQklUKSk7CisJYXNtKCJjc3luYzsiKTsKKworCSpwVUFSVF9USFIgPSBjaDsJCQkvKiBwdXRjKCkgKi8KKworCWlmIChpc3JfdmFsICYgSVJRX1VBUlRfRVJST1JfQklUKSB7CisJCXByaW50ZigiPyIpOworCX0KKworCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOworCisJcmV0dXJuIDsKK30KZGlmZiAtLWdpdCBhL2NwdS9iZjUzMy9zdGFydC5TIGIvY3B1L2JmNTMzL3N0YXJ0LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ1ODU3NQotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9iZjUzMy9zdGFydC5TCkBAIC0wLDAgKzEsNDM1IEBACisvKgorICogVS1ib290IC0gc3RhcnQuUyBTdGFydHVwIGZpbGUgb2YgdS1ib290IGZvciBCRjUzMworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBoZWFkLlMKKyAqIENvcHlyaWdodCAoYykgMjAwMyAgTWV0cm93ZXJrcy9Nb3Rvcm9sYQorICogQ29weXJpZ2h0IChDKSAxOTk4ICBELiBKZWZmIERpb25uZSA8amVmZkByeWVoYW0uZWUucnllcnNvbi5jYT4sCisgKiAgICAgICAgICAgICAgICAgICAgIEtlbm5ldGggQWxiYW5vd3NraSA8a2phaGRzQGtqYWhkcy5jb20+LAorICogICAgICAgICAgICAgICAgICAgICBUaGUgU2lsdmVyIEhhbW1lciBHcm91cCwgTHRkLgorICogKGMpIDE5OTUsIERpb25uZSAmIEFzc29jaWF0ZXMKKyAqIChjKSAxOTk1LCBES0cgRGlzcGxheSBUZWNoLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qCisgKiBOb3RlOiBBIGNoYW5nZSBpbiB0aGlzIGZpbGUgc3Vic2VxdWVudGx5IHJlcXVpcmVzIGEgY2hhbmdlIGluCisgKiAgICAgICBib2FyZC8kKGJvYXJkX25hbWUpL2NvbmZpZy5tayBmb3IgYSB2YWxpZCB1LWJvb3QuYmluCisgKi8KKworI2RlZmluZSBBU1NFTUJMWQorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2JsYWNrZmluLmg+CisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL21lbV9pbml0Lmg+CisKKyNpZiAoQ09ORklHX0NDTEtfRElWID09IDEpCisjZGVmaW5lIENPTkZJR19DQ0xLX0FDVF9ESVYgICBDQ0xLX0RJVjEKKyNlbmRpZgorI2lmIChDT05GSUdfQ0NMS19ESVYgPT0gMikKKyNkZWZpbmUgQ09ORklHX0NDTEtfQUNUX0RJViAgIENDTEtfRElWMgorI2VuZGlmCisjaWYgKENPTkZJR19DQ0xLX0RJViA9PSA0KQorI2RlZmluZSBDT05GSUdfQ0NMS19BQ1RfRElWICAgQ0NMS19ESVY0CisjZW5kaWYKKyNpZiAoQ09ORklHX0NDTEtfRElWID09IDgpCisjZGVmaW5lIENPTkZJR19DQ0xLX0FDVF9ESVYgICBDQ0xLX0RJVjgKKyNlbmRpZgorI2lmbmRlZiBDT05GSUdfQ0NMS19BQ1RfRElWCisjZGVmaW5lIENPTkZJR19DQ0xLX0FDVF9ESVYgICBDT05GSUdfQ0NMS19ESVZfbm90X2RlZmluZWRfcHJvcGVybHkKKyNlbmRpZgorCisuZ2xvYmFsIF9zdGV4dDsKKy5nbG9iYWwgX19ic3Nfc3RhcnQ7CisuZ2xvYmFsIHN0YXJ0OworLmdsb2JhbCBfc3RhcnQ7CisuZ2xvYmFsIF9yYW1iYXNlOworLmdsb2JhbCBfcmFtc3RhcnQ7CisuZ2xvYmFsIF9yYW1lbmQ7CisuZ2xvYmFsIF9iZjUzM19kYXRhX2Rlc3Q7CisuZ2xvYmFsIF9iZjUzM19kYXRhX3NpemU7CisuZ2xvYmFsIGVkYXRhOworLmdsb2JhbCBfaW5pdGlhbGl6ZTsKKy5nbG9iYWwgX2V4aXQ7CisuZ2xvYmFsIGZsYXNoZGF0YWVuZDsKKworLnRleHQKK19zdGFydDoKK3N0YXJ0OgorX3N0ZXh0OgorCisJUjAgPSAweDMwOworCVNZU0NGRyA9IFIwOworCVNTWU5DOworCisJLyogQXMgcGVyIEhXIHJlZmVyZW5jZSBtYW51YWwgREFHIHJlZ2lzdGVycywKKwkgKiBEQVRBIGFuZCBBZGRyZXNzIHJlc2dpc3RlciBzaGFsbCBiZSB6ZXJvJ2QKKwkgKiBpbiBpbml0aWFsaXphdGlvbiwgYWZ0ZXIgYSByZXNldCBzdGF0ZQorCSAqLworCXIxID0gMDsJLyogRGF0YSByZWdpc3RlcnMgemVybydkICovCisJcjIgPSAwOworCXIzID0gMDsKKwlyNCA9IDA7CisJcjUgPSAwOworCXI2ID0gMDsKKwlyNyA9IDA7CisKKwlwMCA9IDA7IC8qIEFkZHJlc3MgcmVnaXN0ZXJzIHplcm8nZCAqLworCXAxID0gMDsKKwlwMiA9IDA7CisJcDMgPSAwOworCXA0ID0gMDsKKwlwNSA9IDA7CisKKwlpMCA9IDA7IC8qIERBRyBSZWdpc3RlcnMgemVybydkICovCisJaTEgPSAwOworCWkyID0gMDsKKwlpMyA9IDA7CisJbTAgPSAwOworCW0xID0gMDsKKwltMyA9IDA7CisJbTMgPSAwOworCWwwID0gMDsKKwlsMSA9IDA7CisJbDIgPSAwOworCWwzID0gMDsKKwliMCA9IDA7CisJYjEgPSAwOworCWIyID0gMDsKKwliMyA9IDA7CisKKwkvKiBTZXQgbG9vcCBjb3VudGVycyB0byB6ZXJvLCB0byBtYWtlIHN1cmUgdGhhdAorCSAqIGh3IGxvb3BzIGFyZSBkaXNhYmxlZC4KKwkgKi8KKwlsYzAgPSAwOworCWxjMSA9IDA7CisKKwlTU1lOQzsKKworCS8qIENoZWNrIHNvZnQgcmVzZXQgc3RhdHVzICovCisJcDAuaCA9IFNXUlNUID4+IDE2OworCXAwLmwgPSBTV1JTVCAmIDB4RkZGRjsKKwlyMC5sID0gd1twMF07CisKKwljYyA9IGJpdHRzdChyMCwgMTUpOworCWlmICFjYyBqdW1wIG5vX3NvZnRfcmVzZXQ7CisKKwkvKiBDbGVhciBTb2Z0IHJlc2V0ICovCisJcjAgPSAweDAwMDA7CisJd1twMF0gPSByMDsKKwlzc3luYzsKKworbm9fc29mdF9yZXNldDoKKwlub3A7CisKKwkvKiBDbGVhciBFVlQgcmVnaXN0ZXJzICovCisJcDAuaCA9IChFVlRfRU1VTEFUSU9OX0FERFIgPj4gMTYpOworCXAwLmwgPSAoRVZUX0VNVUxBVElPTl9BRERSICYgMHhGRkZGKTsKKwlwMCArPSA4OworCXAxID0gMTQ7CisJcjEgPSAwOworCUxTRVRVUCg0LDQpIGxjMCA9IHAxOworCVsgcDAgKysgXSA9IHIxOworCisJLyoKKwkgKiAgU2V0IFBMTF9DVEwKKwkgKiAgIC0gWzE0OjA5XSA9IE1TRUxbNTowXSA6IENMS0lOIC8gVkNPIG11bHRpcGxpY2F0aW9uIGZhY3RvcnMKKwkgKiAgIC0gWzhdICAgICA9IEJZUEFTUyAgICA6IEJZUEFTUyB0aGUgUExMLCBydW4gQ0xLSU4gaW50byBDQ0xLL1NDTEsKKwkgKiAgIC0gWzddICAgICA9IG91dHB1dCBkZWxheSAoYWRkIDIwMHBzIG9mIGRlbGF5IHRvIG1lbSBzaWduYWxzKQorCSAqICAgLSBbNl0gICAgID0gaW5wdXQgZGVsYXkgKGFkZCAyMDBwcyBvZiBpbnB1dCBkZWxheSB0byBtZW0gc2lnbmFscykKKwkgKiAgIC0gWzVdICAgICA9IFBEV04gICAgICA6IDE9QWxsIENsb2NrcyBvZmYKKwkgKiAgIC0gWzNdICAgICA9IFNUT1BDSyAgICA6IDE9Q29yZSBDbG9jayBvZmYKKwkgKiAgIC0gWzFdICAgICA9IFBMTF9PRkYgICA6IDE9RGlzYWJsZSBQb3dlciB0byBQTEwKKwkgKiAgIC0gWzBdICAgICA9IERGICAgICAgICA6IDE9UGFzcyBDTEtJTi8yIHRvIFBMTCAvIDA9UGFzcyBDTEtJTiB0byBQTEwKKwkgKiAgIGFsbCBvdGhlciBiaXRzIHNldCB0byB6ZXJvCisJICovCisKKwlyMCA9IENPTkZJR19WQ09fTVVMVDsJLyogTG9hZCB0aGUgVkNPIG11bHRpcGxpZXIgKi8KKwlyMCA9IHIwIDw8IDk7CQkvKiBTaGlmdCBpdCBvdmVyICovCisJcjEgPSAgQ09ORklHX0NMS0lOX0hBTEY7CS8qIERvIHdlIG5lZWQgdG8gZGl2aWRlIENMS0lOIGJ5IDI/ICovCisJcjAgPSByMSB8IHIwOworCXIxID0gQ09ORklHX1BMTF9CWVBBU1M7CS8qIEJ5cGFzcyB0aGUgUExMPyAgICAgICAgICAgICAgICAgKi8KKwlyMSA9IHIxIDw8IDg7CS8qIFNoaWZ0IGl0IG92ZXIgKi8KKwlyMCA9IHIxIHwgcjA7CS8qIGFkZCB0aGVtIGFsbCB0b2dldGhlciAqLworCisJcDAuaCA9IChQTExfQ1RMID4+IDE2KTsKKwlwMC5sID0gKFBMTF9DVEwgJiAweEZGRkYpOwkvKiBMb2FkIHRoZSBhZGRyZXNzICovCisJY2xpIHIyOwkJCQkvKiBEaXNhYmxlIGludGVycnVwdHMgKi8KKwl3W3AwXSA9IHIwOwkJCS8qIFNldCB0aGUgdmFsdWUgKi8KKwlpZGxlOwkJCQkvKiBXYWl0IGZvciB0aGUgUExMIHRvIHN0YWJsaXplICovCisJc3RpIHIyOwkJCQkvKiBFbmFibGUgaW50ZXJydXB0cyAqLworCXNzeW5jOworCisJLyoKKwkgKiBUdXJuIG9uIHRoZSBDWUNMRVMgQ09VTlRFUgorCSAqLworCXIyID0gU1lTQ0ZHOworCUJJVFNFVCAocjIsMSk7CisJU1lTQ0ZHID0gcjI7CisKKwkvKiBDb25maWd1cmUgU0NMSyAmIENDTEsgRGl2aWRlcnMgKi8KKwlyMCA9IENPTkZJR19DQ0xLX0FDVF9ESVYgfCBDT05GSUdfU0NMS19ESVY7CisJcDAuaCA9IChQTExfRElWID4+IDE2KTsKKwlwMC5sID0gKFBMTF9ESVYgJiAweEZGRkYpOworCXdbcDBdID0gcjA7CisJc3N5bmM7CisKK3dhaXRfZm9yX3BsbF9zdGFiOgorCXAwLmggPSAoUExMX1NUQVQgPj4gMTYpOworCXAwLmwgPSAoUExMX1NUQVQgJiAweEZGRkYpOworCXIwLmwgPSB3W3AwXTsKKwljYyA9IGJpdHRzdChyMCw1KTsKKwlpZiAhY2MganVtcCB3YWl0X2Zvcl9wbGxfc3RhYjsKKworCS8qIENvbmZpZ3VyZSBTRFJBTSBpZiBTRFJBTSBpcyBhbHJlYWR5IG5vdCBlbmFibGVkICovCisJcDAubCA9IChFQklVX1NEU1RBVCAmIDB4RkZGRik7CisJcDAuaCA9IChFQklVX1NEU1RBVCA+PiAxNik7CisJcjAubCA9IHdbcDBdOworCWNjID0gYml0dHN0KHIwLCAzKTsKKwlpZiAhY2MganVtcCBza2lwX3NkcmFtX2VuYWJsZTsKKworCS8qIFNEUkFNIGluaXRpYWxpemF0aW9uICovCisJcDAubCA9IChFQklVX1NER0NUTCAmIDB4RkZGRik7CisJcDAuaCA9IChFQklVX1NER0NUTCA+PiAxNik7CS8qIFNEUkFNIE1lbW9yeSBHbG9iYWwgQ29udHJvbCBSZWdpc3RlciAqLworCXIwLmggPSAobWVtX1NER0NUTCA+PiAxNik7CisJcjAubCA9IChtZW1fU0RHQ1RMICYgMHhGRkZGKTsKKwlbcDBdID0gcjA7CisJc3N5bmM7CisKKwlwMC5sID0gKEVCSVVfU0RCQ1RMICYgMHhGRkZGKTsKKwlwMC5oID0gKEVCSVVfU0RCQ1RMID4+IDE2KTsJLyogU0RSQU0gTWVtb3J5IEJhbmsgQ29udHJvbCBSZWdpc3RlciAqLworCXIwID0gbWVtX1NEQkNUTDsKKwl3W3AwXSA9IHIwLmw7CisJc3N5bmM7CisKKwlwMC5sID0gKEVCSVVfU0RSUkMgJiAweEZGRkYpOworCXAwLmggPSAoRUJJVV9TRFJSQyA+PiAxNik7CS8qIFNEUkFNIFJlZnJlc2ggUmF0ZSBDb250cm9sIFJlZ2lzdGVyICovCisJcjAgPSBtZW1fU0RSUkM7CisJd1twMF0gPSByMC5sOworCXNzeW5jOworCitza2lwX3NkcmFtX2VuYWJsZToKKwlub3A7CisKKyNpZm5kZWYJQ0ZHX05PX0ZMQVNICisJLyogcmVsb2NhdGUgaW50byB0byBSQU0gKi8KKwlwMS5sID0gKENGR19GTEFTSF9CQVNFICYgMHhmZmZmKTsKKwlwMS5oID0gKENGR19GTEFTSF9CQVNFID4+IDE2KTsKKwlwMi5sID0gKENGR19NT05JVE9SX0JBU0UgJiAweGZmZmYpOworCXAyLmggPSAoQ0ZHX01PTklUT1JfQkFTRSA+PiAxNik7CisJcjAubCA9IChDRkdfTU9OSVRPUl9MRU4gJiAweGZmZmYpOworCXIwLmggPSAoQ0ZHX01PTklUT1JfTEVOID4+IDE2KTsKK2xvb3AxOgorCXIxID0gW3AxXTsKKwlbcDJdID0gcjE7CisJcDM9MHg0OworCXAxPXAxK3AzOworCXAyPXAyK3AzOworCXIyPTB4NDsKKwlyMD1yMC1yMjsKKwljYz1yMD09MHgwOworCWlmICFjYyBqdW1wIGxvb3AxOworI2VuZGlmCisJLyoKKwkgKiBjb25maWd1cmUgU1RBQ0sKKwkgKi8KKwlyMC5oID0gKENPTkZJR19TVEFDS0JBU0UgPj4gMTYpOworCXIwLmwgPSAoQ09ORklHX1NUQUNLQkFTRSAmIDB4RkZGRik7CisJc3AgPSByMDsKKwlmcCA9IHNwOworCisJLyoKKwkgKiBUaGlzIG5leHQgc2VjdGlvbiBrZWVwcyB0aGUgcHJvY2Vzc29yIGluIHN1cGVydmlzb3IgbW9kZQorCSAqIGR1cmluZyBrZXJuZWwgYm9vdC4gIFN3aXRjaGVzIHRvIHVzZXIgbW9kZSBhdCBlbmQgb2YgYm9vdC4KKwkgKiBTZWUgcGFnZSAzLTkgb2YgSGFyZHdhcmUgUmVmZXJlbmNlIG1hbnVhbCBmb3IgZG9jdW1lbnRhdGlvbi4KKwkgKi8KKworCS8qIFRvIGtlZXAgb3Vyc2VsdmVzIGluIHRoZSBzdXBlcnZpc29yIG1vZGUgKi8KKwlwMC5sID0gKEVWVF9JVkcxNV9BRERSICYgMHhGRkZGKTsKKwlwMC5oID0gKEVWVF9JVkcxNV9BRERSID4+IDE2KTsKKworCXAxLmwgPSBfcmVhbF9zdGFydDsKKwlwMS5oID0gX3JlYWxfc3RhcnQ7CisJW3AwXSA9IHAxOworCisJcDAubCA9IChJTUFTSyAmIDB4RkZGRik7CisJcDAuaCA9IChJTUFTSyA+PiAxNik7CisJcjAgPSBJVkcxNV9QT1M7CisJW3AwXSA9IHIwOworCXJhaXNlIDE1OworCXAwLmwgPSBXQUlUX0hFUkU7CisJcDAuaCA9IFdBSVRfSEVSRTsKKwlyZXRpID0gcDA7CisJcnRpOworCitXQUlUX0hFUkU6CisJanVtcCBXQUlUX0hFUkU7CisKKy5nbG9iYWwgX3JlYWxfc3RhcnQ7CitfcmVhbF9zdGFydDoKKwlbIC0tIHNwIF0gPSByZXRpOworCisjaWZkZWYgQ09ORklHX0VaS0lUNTMzCisJcDAubCA9IChXRE9HX0NUTCAmIDB4RkZGRik7CisJcDAuaCA9IChXRE9HX0NUTCA+PiAxNik7CisJcjAgPSBXQVRDSERPR19ESVNBQkxFKHopOworCXdbcDBdID0gcjA7CisjZW5kaWYKKworCS8qIENvZGUgZm9yIGluaXRpYWxpemluZyBBc3luYyBtZW0gYmFua3MgKi8KKwlwMi5oID0gKEVCSVVfQU1CQ1RMMSA+PiAxNik7CisJcDIubCA9IChFQklVX0FNQkNUTDEgJiAweEZGRkYpOworCXIwLmggPSAoQU1CQ1RMMVZBTCA+PiAxNik7CisJcjAubCA9IChBTUJDVEwxVkFMICYgMHhGRkZGKTsKKwlbcDJdID0gcjA7CisJc3N5bmM7CisKKwlwMi5oID0gKEVCSVVfQU1CQ1RMMCA+PiAxNik7CisJcDIubCA9IChFQklVX0FNQkNUTDAgJiAweEZGRkYpOworCXIwLmggPSAoQU1CQ1RMMFZBTCA+PiAxNik7CisJcjAubCA9IChBTUJDVEwwVkFMICYgMHhGRkZGKTsKKwlbcDJdID0gcjA7CisJc3N5bmM7CisKKwlwMi5oID0gKEVCSVVfQU1HQ1RMID4+IDE2KTsKKwlwMi5sID0gKEVCSVVfQU1HQ1RMICYgMHhmZmZmKTsKKwlyMCA9IEFNR0NUTFZBTDsKKwl3W3AyXSA9IHIwOworCXNzeW5jOworCisJLyogRE1BIHJlc2V0IGNvZGUgdG8gSGkgb2YgTDEgU1JBTSAqLworY29weToKKwlQMS5IID0gaGkoU1lTTU1SX0JBU0UpOwkvKiBQMSBQb2ludHMgdG8gdGhlIGJlZ2lubmluZyBvZiBTWVNURU0gTU1SIFNwYWNlICovCisJUDEuTCA9IGxvKFNZU01NUl9CQVNFKTsKKworCVIwLkggPSByZXNldF9zdGFydDsJLyogU291cmNlIEFkZHJlc3MgKGhpZ2gpICovCisJUjAuTCA9IHJlc2V0X3N0YXJ0OwkvKiBTb3VyY2UgQWRkcmVzcyAobG93KSAqLworCVIxLkggPSByZXNldF9lbmQ7CisJUjEuTCA9IHJlc2V0X2VuZDsKKwlSMiA9IFIxIC0gUjA7CQkvKiBDb3VudCAqLworCVIxLkggPSBoaShMMV9JU1JBTSk7CS8qIERlc3RpbmF0aW9uIEFkZHJlc3MgKGhpZ2gpICovCisJUjEuTCA9IGxvKEwxX0lTUkFNKTsJLyogRGVzdGluYXRpb24gQWRkcmVzcyAobG93KSAqLworCVIzLkwgPSBETUFFTjsJCS8qIFNvdXJjZSBETUFDb25maWcgVmFsdWUgKDgtYml0IHdvcmRzKSAqLworCVI0LkwgPSAoRElfRU4gfCBXTlIgfCBETUFFTik7CS8qIERlc3RpbmF0aW9uIERNQUNvbmZpZyBWYWx1ZSAoOC1iaXQgd29yZHMpICovCisKK0RNQToKKwlSNiA9IDB4MSAoWik7CisJV1tQMStPRkZTRVRfKE1ETUFfUzBfWF9NT0RJRlkpXSA9IFI2OwkvKiBTb3VyY2UgTW9kaWZ5ID0gMSAqLworCVdbUDErT0ZGU0VUXyhNRE1BX0QwX1hfTU9ESUZZKV0gPSBSNjsJLyogRGVzdGluYXRpb24gTW9kaWZ5ID0gMSAqLworCisJW1AxK09GRlNFVF8oTURNQV9TMF9TVEFSVF9BRERSKV0gPSBSMDsJLyogU2V0IFNvdXJjZSBCYXNlIEFkZHJlc3MgKi8KKwlXW1AxK09GRlNFVF8oTURNQV9TMF9YX0NPVU5UKV0gPSBSMjsJLyogU2V0IFNvdXJjZSBDb3VudCAqLworCS8qIFNldCBTb3VyY2UgIERNQUNvbmZpZyA9IERNQSBFbmFibGUsCisJTWVtb3J5IFJlYWQsICA4LUJpdCBUcmFuc2ZlcnMsIDEtRCBETUEsIEZsb3cgLSBTdG9wICovCisJV1tQMStPRkZTRVRfKE1ETUFfUzBfQ09ORklHKV0gPSBSMzsKKworCVtQMStPRkZTRVRfKE1ETUFfRDBfU1RBUlRfQUREUildID0gUjE7CS8qIFNldCBEZXN0aW5hdGlvbiBCYXNlIEFkZHJlc3MgKi8KKwlXW1AxK09GRlNFVF8oTURNQV9EMF9YX0NPVU5UKV0gPSBSMjsJLyogU2V0IERlc3RpbmF0aW9uIENvdW50ICovCisJLyogU2V0IERlc3RpbmF0aW9uIERNQUNvbmZpZyA9IERNQSBFbmFibGUsCisJTWVtb3J5IFdyaXRlLCA4LUJpdCBUcmFuc2ZlcnMsIDEtRCBETUEsIEZsb3cgLSBTdG9wLCBJT0MgKi8KKwlXW1AxK09GRlNFVF8oTURNQV9EMF9DT05GSUcpXSA9IFI0OworCisJSURMRTsJLyogV2FpdCBmb3IgRE1BIHRvIENvbXBsZXRlICovCisKKwlSMCA9IDB4MTsKKwlXW1AxK09GRlNFVF8oTURNQV9EMF9JUlFfU1RBVFVTKV0gPSBSMDsJLyogV3JpdGUgMSB0byBjbGVhciBETUEgaW50ZXJydXB0ICovCisKKwkvKiBETUEgcmVzZXQgY29kZSB0byBEQVRBIEJBTksgQSB3aGljaCB1c2VzIHRoaXMgcG9ydAorCSAqIHRvIGF2b2lkIGZvbGxvd2luZyBwcm9ibGVtCisJICogIiBEYXRhIGZyb20gYSBEYXRhIENhY2hlIGZpbGwgY2FuIGJlIGNvcnJ1cG90ZWQgYWZ0ZXIgb3IgZHVyaW5nCisJICogICBpbnN0cnVjdGlvbiBETUEgaWYgY2VydGFpbiBjb3JlIHN0YWxscyBleGlzdCIKKwkgKi8KKworY29weV9hc19kYXRhOgorCVIwLkggPSByZXNldF9zdGFydDsJLyogU291cmNlIEFkZHJlc3MgKGhpZ2gpICovCisJUjAuTCA9IHJlc2V0X3N0YXJ0OwkvKiBTb3VyY2UgQWRkcmVzcyAobG93KSAqLworCVIxLkggPSByZXNldF9lbmQ7CisJUjEuTCA9IHJlc2V0X2VuZDsKKwlSMiA9IFIxIC0gUjA7CS8qIENvdW50ICovCisJUjEuSCA9IGhpKERBVEFfQkFOS0FfU1JBTSk7CS8qIERlc3RpbmF0aW9uIEFkZHJlc3MgKGhpZ2gpICovCisJUjEuTCA9IGxvKERBVEFfQkFOS0FfU1JBTSk7CS8qIERlc3RpbmF0aW9uIEFkZHJlc3MgKGxvdykgKi8KKwlSMy5MID0gRE1BRU47CS8qIFNvdXJjZSBETUFDb25maWcgVmFsdWUgKDgtYml0IHdvcmRzKSAqLworCVI0LkwgPSAoRElfRU4gfCBXTlIgfCBETUFFTik7CS8qIERlc3RpbmF0aW9uIERNQUNvbmZpZyBWYWx1ZSAoOC1iaXQgd29yZHMpICovCisKK0RNQV9EQVRBOgorCVI2ID0gMHgxIChaKTsKKwlXW1AxK09GRlNFVF8oTURNQV9TMF9YX01PRElGWSldID0gUjY7CS8qIFNvdXJjZSBNb2RpZnkgPSAxICovCisJV1tQMStPRkZTRVRfKE1ETUFfRDBfWF9NT0RJRlkpXSA9IFI2OwkvKiBEZXN0aW5hdGlvbiBNb2RpZnkgPSAxICovCisKKyAJW1AxK09GRlNFVF8oTURNQV9TMF9TVEFSVF9BRERSKV0gPSBSMDsJLyogU2V0IFNvdXJjZSBCYXNlIEFkZHJlc3MgKi8KKwlXW1AxK09GRlNFVF8oTURNQV9TMF9YX0NPVU5UKV0gPSBSMjsJLyogU2V0IFNvdXJjZSBDb3VudCAqLworCS8qIFNldCBTb3VyY2UgICAgICBETUFDb25maWcgPSBETUEgRW5hYmxlLAorCU1lbW9yeSBSZWFkLCAgOC1CaXQgVHJhbnNmZXJzLCAxLUQgRE1BLCBGbG93IC0gU3RvcCAqLworCVdbUDErT0ZGU0VUXyhNRE1BX1MwX0NPTkZJRyldID0gUjM7CisKKwlbUDErT0ZGU0VUXyhNRE1BX0QwX1NUQVJUX0FERFIpXSA9IFIxOwkvKiBTZXQgRGVzdGluYXRpb24gQmFzZSBBZGRyZXNzICovCisJV1tQMStPRkZTRVRfKE1ETUFfRDBfWF9DT1VOVCldID0gUjI7CS8qIFNldCBEZXN0aW5hdGlvbiBDb3VudCAqLworCS8qIFNldCBEZXN0aW5hdGlvbiBETUFDb25maWcgPSBETUEgRW5hYmxlLAorCU1lbW9yeSBXcml0ZSwgOC1CaXQgVHJhbnNmZXJzLCAxLUQgRE1BLCBGbG93IC0gU3RvcCwgSU9DICovCisJV1tQMStPRkZTRVRfKE1ETUFfRDBfQ09ORklHKV0gPSBSNDsKKworCUlETEU7CS8qIFdhaXQgZm9yIERNQSB0byBDb21wbGV0ZSAqLworCisJUjAgPSAweDE7CisJV1tQMStPRkZTRVRfKE1ETUFfRDBfSVJRX1NUQVRVUyldID0gUjA7CS8qIFdyaXRlIDEgdG8gY2xlYXIgRE1BIGludGVycnVwdCAqLworCitjb3B5X2VuZDogbm9wOworCisJLyogSW5pdGlhbGl6ZSBCU1MgU2VjdGlvbiB3aXRoIDAgcyAqLworCXAxLmwgPSBfX2Jzc19zdGFydDsKKwlwMS5oID0gX19ic3Nfc3RhcnQ7CisJcDIubCA9IF9lbmQ7CisJcDIuaCA9IF9lbmQ7CisJcjEgPSBwMTsKKwlyMiA9IHAyOworCXIzID0gcjIgLSByMTsKKwlyMyA9IHIzID4+IDI7CisJcDMgPSByMzsKKwlsc2V0dXAgKF9jbGVhcl9ic3MsIF9jbGVhcl9ic3NfZW5kICkgbGMxID0gcDM7CisJQ0MgPSBwMjw9cDE7CisJaWYgQ0MganVtcCBfY2xlYXJfYnNzX3NraXA7CisJcjAgPSAwOworX2NsZWFyX2JzczoKK19jbGVhcl9ic3NfZW5kOgorIAlbcDErK10gPSByMDsKK19jbGVhcl9ic3Nfc2tpcDoKKworCXAwLmwgPSBfc3RhcnQxOworCXAwLmggPSBfc3RhcnQxOworCWp1bXAgKHAwKTsKKworcmVzZXRfc3RhcnQ6CisJcDAuaCA9IFdET0dfQ05UID4+IDE2OworCXAwLmwgPSBXRE9HX0NOVCAmIDB4ZmZmZjsKKwlyMCA9IDB4MDAxMDsKKwl3W3AwXSA9IHIwOworCXAwLmggPSBXRE9HX0NUTCA+PiAxNjsKKwlwMC5sID0gV0RPR19DVEwgJiAweGZmZmY7CisJcjAgPSAweDAwMDA7CisJd1twMF0gPSByMDsKK3Jlc2V0X3dhaXQ6CisJanVtcCByZXNldF93YWl0OworCityZXNldF9lbmQ6IG5vcDsKKworX2V4aXQ6CisJanVtcC5zCV9leGl0OwpkaWZmIC0tZ2l0IGEvY3B1L2JmNTMzL3N0YXJ0MS5TIGIvY3B1L2JmNTMzL3N0YXJ0MS5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNDgxMjQKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvYmY1MzMvc3RhcnQxLlMKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIFUtYm9vdCAtIHN0YXJ0MS5TIENvZGUgcnVubmluZyBvdXQgb2YgUkFNIGFmdGVyIHJlbG9jYXRpb24KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjZGVmaW5lIEFTU0VNQkxZCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2JsYWNrZmluLmg+CisjaW5jbHVkZSA8Y29uZmlnLmg+CisKKy5nbG9iYWwJc3RhcnQxOworLmdsb2JhbAlfc3RhcnQxOworCisudGV4dAorX3N0YXJ0MToKK3N0YXJ0MToKKwlzcCArPSAtMTI7CisJY2FsbAlib2FyZF9pbml0X2Y7CisJc3AgKz0gMTI7CmRpZmYgLS1naXQgYS9jcHUvYmY1MzMvdHJhcHMuYyBiL2NwdS9iZjUzMy90cmFwcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDcwZDUKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvYmY1MzMvdHJhcHMuYwpAQCAtMCwwICsxLDczIEBACisvKgorICogVS1ib290IC0gdHJhcHMuYyBSb3V0aW5lcyByZWxhdGVkIHRvIGludGVycnVwdHMgYW5kIGV4Y2VwdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBUaGlzIGZpbGUgaXMgYmFzZWQgb24KKyAqIE5vIG9yaWdpbmFsIENvcHlyaWdodCBob2xkZXIgbGlzdGVkLAorICogUHJvYmFiaWx5IG9yaWdpbmFsIChDKSBSb21hbiBaaXBwZWwgKGFzc2lnbmVkIERKRCwgMTk5OSkKKyAqCisgKiBDb3B5cmlnaHQgMjAwMyBNZXRyb3dlcmtzIC0gZm9yIEJsYWNrZmluCisgKiBDb3B5cmlnaHQgMjAwMC0yMDAxIExpbmVvLCBJbmMuIEQuIEplZmYgRGlvbm5lIDxqZWZmQGxpbmVvLmNhPgorICogQ29weXJpZ2h0IDE5OTktMjAwMCBELiBKZWZmIERpb25uZSwgPGplZmZAdWNsaW51eC5vcmc+CisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8YXNtL2Vycm5vLmg+CisjaW5jbHVkZSA8YXNtL2lycS5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKyNpbmNsdWRlIDxhc20vdHJhcHMuaD4KKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoZGVwLmg+CisjaW5jbHVkZSAiY3B1LmgiCisKK3ZvaWQgaW5pdF9JUlEodm9pZCkKK3sKKwlibGFja2Zpbl9pbml0X0lSUSgpOworCXJldHVybjsKK30KKwordm9pZCBwcm9jZXNzX2ludCh1bnNpZ25lZCBsb25nIHZlYywgc3RydWN0IHB0X3JlZ3MgKmZwKQoreworCXJldHVybjsKK30KKwordm9pZCBkdW1wKHN0cnVjdCBwdF9yZWdzICpmcCkKK3sKKwlwcmludGYoIlBDOiAlMDhseFxuIiwgZnAtPnBjKTsKKwlwcmludGYoIlNFUVNUQVQ6ICUwOGx4ICAgIFNQOiAlMDhseFxuIiwgKGxvbmcpIGZwLT5zZXFzdGF0LAorCQkobG9uZykgZnApOworCXByaW50ZigiUjA6ICUwOGx4ICAgIFIxOiAlMDhseCAgICBSMjogJTA4bHggICAgUjM6ICUwOGx4XG4iLAorCQlmcC0+cjAsIGZwLT5yMSwgZnAtPnIyLCBmcC0+cjMpOworCXByaW50ZigiUjQ6ICUwOGx4ICAgIFI1OiAlMDhseCAgICBSNjogJTA4bHggICAgUjc6ICUwOGx4XG4iLAorCQlmcC0+cjQsIGZwLT5yNSwgZnAtPnI2LCBmcC0+cjcpOworCXByaW50ZigiUDA6ICUwOGx4ICAgIFAxOiAlMDhseCAgICBQMjogJTA4bHggICAgUDM6ICUwOGx4XG4iLAorCQlmcC0+cDAsIGZwLT5wMSwgZnAtPnAyLCBmcC0+cDMpOworCXByaW50ZigiUDQ6ICUwOGx4ICAgIFA1OiAlMDhseCAgICBGUDogJTA4bHhcbiIsIGZwLT5wNCwgZnAtPnA1LAorCQlmcC0+ZnApOworCXByaW50ZigiQTAudzogJTA4bHggICAgQTAueDogJTA4bHggICAgQTEudzogJTA4bHggICAgQTEueDogJTA4bHhcbiIsCisJCWZwLT5hMHcsIGZwLT5hMHgsIGZwLT5hMXcsIGZwLT5hMXgpOworCXByaW50ZigiXG4iKTsKK30KZGlmZiAtLWdpdCBhL2NwdS9tcGM1eHh4L2ZlYy5jIGIvY3B1L21wYzV4eHgvZmVjLmMKaW5kZXggODZjOGNlNi4uMmU4ZTU0OSAxMDA2NDQKLS0tIGEvY3B1L21wYzV4eHgvZmVjLmMKKysrIGIvY3B1L21wYzV4eHgvZmVjLmMKQEAgLTg4MCw4ICs4ODAsOSBAQAogCWZlYy0+cmJkQmFzZSA9IChGRUNfUkJEICopKEZFQ19CRF9CQVNFICsgRkVDX1RCRF9OVU0gKiBzaXplb2YoRkVDX1RCRCkpOwogI2lmIGRlZmluZWQoQ09ORklHX0NBTk1CKSAgIHx8IGRlZmluZWQoQ09ORklHX0hNSTEwMDEpCXx8IFwKICAgICBkZWZpbmVkKENPTkZJR19JQ0VDVUJFKSB8fCBkZWZpbmVkKENPTkZJR19JTktBNFgwKQl8fCBcCisgICAgZGVmaW5lZChDT05GSUdfTUNDMjAwKSAgfHwgZGVmaW5lZChDT05GSUdfTzJETlQpCXx8IFwKICAgICBkZWZpbmVkKENPTkZJR19QTTUyMCkgICB8fCBkZWZpbmVkKENPTkZJR19UT1A1MjAwKQl8fCBcCi0gICAgZGVmaW5lZChDT05GSUdfVFFNNTIwMCkgfHwgZGVmaW5lZChDT05GSUdfTzJETlQpCisgICAgZGVmaW5lZChDT05GSUdfVFFNNTIwMCkKICMgaWZuZGVmIENPTkZJR19GRUNfMTBNQklUCiAJZmVjLT54Y3ZfdHlwZSA9IE1JSTEwMDsKICMgZWxzZQpkaWZmIC0tZ2l0IGEvY3B1L21wYzgyNjAvc3BlZWQuYyBiL2NwdS9tcGM4MjYwL3NwZWVkLmMKaW5kZXggYTc2MWExNy4uOTlhZmU3NiAxMDA2NDQKLS0tIGEvY3B1L21wYzgyNjAvc3BlZWQuYworKysgYi9jcHUvbXBjODI2MC9zcGVlZC5jCkBAIC0xNjMsNyArMTYzLDcgQEAKIAogCXZvbGF0aWxlIGltbWFwX3QgKmltbWFwID0gKGltbWFwX3QgKikgQ0ZHX0lNTVI7CiAJdWxvbmcgc2NjciwgZGZicmc7Ci0JdWxvbmcgc2NtciwgY29yZWNuZiwgYnVzZGYsIGNwbWRmLCBwbGxkZiwgcGxsbWY7CisJdWxvbmcgc2NtciwgY29yZWNuZiwgYnVzZGYsIGNwbWRmLCBwbGxkZiwgcGxsbWYsIHBjaWRmOwogCWNvcmVjbmZfdCAqY3A7CiAKIAlzY2NyID0gaW1tYXAtPmltX2Nsa3JzdC5jYXJfc2NjcjsKQEAgLTE3NSw2ICsxNzUsNyBAQAogCWNwbWRmID0gKHNjbXIgJiBTQ01SX0NQTURGX01TSykgPj4gU0NNUl9DUE1ERl9TSElGVDsKIAlwbGxkZiA9IChzY21yICYgU0NNUl9QTExERikgPyAxIDogMDsKIAlwbGxtZiA9IChzY21yICYgU0NNUl9QTExNRl9NU0spID4+IFNDTVJfUExMTUZfU0hJRlQ7CisJcGNpZGYgPSAoc2NjciAmIFNDQ1JfUENJREZfTVNLKSA+PiBTQ0NSX1BDSURGX1NISUZUOwogCiAJY3AgPSAmY29yZWNuZl90YWJbY29yZWNuZl07CiAKQEAgLTIwNCw4ICsyMDUsOSBAQAogCQkJY3AtPnZjb19kaXYsIGNwLT5mcmVxXzYweCwgY3AtPmZyZXFfY29yZSk7CiAKIAlwcmludGYgKCIgLSBkZmJyZyAlbGQsIGNvcmVjbmYgMHglMDJseCwgYnVzZGYgJWxkLCBjcG1kZiAlbGQsICIKLQkJCSJwbGxkZiAlbGQsIHBsbG1mICVsZFxuIiwgZGZicmcsIGNvcmVjbmYsIGJ1c2RmLCBjcG1kZiwgcGxsZGYsCi0JCQlwbGxtZik7CisJCSJwbGxkZiAlbGQsIHBsbG1mICVsZCwgcGNpZGYgJWxkXG4iLAorCQkJZGZicmcsIGNvcmVjbmYsIGJ1c2RmLCBjcG1kZiwKKwkJCXBsbGRmLCBwbGxtZiwgcGNpZGYpOwogCiAJcHJpbnRmICgiIC0gdmNvX291dCAlMTBsZCwgc2NjX2NsayAlMTBsZCwgYnJnX2NsayAlMTBsZFxuIiwKIAkJCWdkLT52Y29fb3V0LCBnZC0+c2NjX2NsaywgZ2QtPmJyZ19jbGspOwpAQCAtMjE1LDkgKzIxNywyMCBAQAogCiAJaWYgKHNjY3IgJiBTQ0NSX1BDSV9NT0RFKSB7CiAJCXVpbnQgcGNpX2RpdjsKKwkJdWludCBwY2lkZiA9IChzY2NyICYgU0NDUl9QQ0lERl9NU0spID4+IFNDQ1JfUENJREZfU0hJRlQ7CiAKLQkJcGNpX2RpdiA9ICggKHNjY3IgJiBTQ0NSX1BDSV9NT0RDSykgPyAyIDogMSkgKgotCQkJKCAoIChzY2NyICYgU0NDUl9QQ0lERl9NU0spID4+IFNDQ1JfUENJREZfU0hJRlQpICsgMSk7CisJCWlmIChzY2NyICYgU0NDUl9QQ0lfTU9EQ0spIHsKKwkJCXBjaV9kaXYgPSAyOworCQkJaWYgKHBjaWRmID09IDkpIHsKKwkJCQlwY2lfZGl2ICo9IDU7CisJCQl9IGVsc2UgaWYgKHBjaWRmID09IDB4QikgeworCQkJCXBjaV9kaXYgKj0gNjsKKwkJCX0gZWxzZSB7CisJCQkJcGNpX2RpdiAqPSAocGNpZGYgKyAxKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXBjaV9kaXYgPSBwY2lkZiArIDE7CisJCX0KIAogCQlwcmludGYgKCIgLSBwY2lfY2xrICUxMGxkXG4iLCAoZ2QtPmNwbV9jbGsgKiAyKSAvIHBjaV9kaXYpOwogCX0KQEAgLTIyNSw1ICsyMzgsMyBAQAogCiAJcmV0dXJuICgwKTsKIH0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpkaWZmIC0tZ2l0IGEvY3B1L21wYzgzeHgvY3B1LmMgYi9jcHUvbXBjODN4eC9jcHUuYwppbmRleCA4YzliNTE1Li5lNDllNGZlIDEwMDY0NAotLS0gYS9jcHUvbXBjODN4eC9jcHUuYworKysgYi9jcHUvbXBjODN4eC9jcHUuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHdhdGNoZG9nLmg+CiAjaW5jbHVkZSA8Y29tbWFuZC5oPgogI2luY2x1ZGUgPG1wYzgzeHguaD4KKyNpbmNsdWRlIDxmdF9idWlsZC5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KIAogCkBAIC0xNTEsMyArMTUyLDQwIEBACiAJaGFuZygpOwkJLyogRklYTUU6IGltcGxlbWVudCB3YXRjaGRvZ19yZXNldCgpPyAqLwogfQogI2VuZGlmIC8qIENPTkZJR19XQVRDSERPRyAqLworCisjaWYgZGVmaW5lZChDT05GSUdfT0ZfRkxBVF9UUkVFKQordm9pZAorZnRfY3B1X3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQoreworCXUzMiAqcDsKKwlpbnQgbGVuOworCXVsb25nIGNsb2NrOworCisJY2xvY2sgPSBiZC0+YmlfYnVzZnJlcTsKKwlwID0gZnRfZ2V0X3Byb3AoYmxvYiwgIi9jcHVzLyIgT0ZfQ1BVICIvYnVzLWZyZXF1ZW5jeSIsICZsZW4pOworCWlmIChwICE9IE5VTEwpCisJCSpwID0gY3B1X3RvX2JlMzIoY2xvY2spOworCisJcCA9IGZ0X2dldF9wcm9wKGJsb2IsICIvIiBPRl9TT0MgIi9idXMtZnJlcXVlbmN5IiwgJmxlbik7CisJaWYgKHAgIT0gTlVMTCkKKwkJKnAgPSBjcHVfdG9fYmUzMihjbG9jayk7CisKKwlwID0gZnRfZ2V0X3Byb3AoYmxvYiwgIi8iIE9GX1NPQyAiL3NlcmlhbEA0NTAwL2Nsb2NrLWZyZXF1ZW5jeSIsICZsZW4pOworCWlmIChwICE9IE5VTEwpCisJCSpwID0gY3B1X3RvX2JlMzIoY2xvY2spOworCisJcCA9IGZ0X2dldF9wcm9wKGJsb2IsICIvIiBPRl9TT0MgIi9zZXJpYWxANDYwMC9jbG9jay1mcmVxdWVuY3kiLCAmbGVuKTsKKwlpZiAocCAhPSBOVUxMKQorCQkqcCA9IGNwdV90b19iZTMyKGNsb2NrKTsKKworI2lmZGVmIENPTkZJR19NUEM4M1hYX1RTRUMxCisJcCA9IGZ0X2dldF9wcm9wKGJsb2IsICIvIiBPRl9TT0MgIi9ldGhlcm5ldEAyNDAwMC9hZGRyZXNzIiwgJmxlbik7CisJCW1lbWNweShwLCBiZC0+YmlfZW5ldGFkZHIsIDYpOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTVBDODNYWF9UU0VDMgorCXAgPSBmdF9nZXRfcHJvcChibG9iLCAiLyIgT0ZfU09DICIvZXRoZXJuZXRAMjUwMDAvYWRkcmVzcyIsICZsZW4pOworCQltZW1jcHkocCwgYmQtPmJpX2VuZXQxYWRkciwgNik7CisjZW5kaWYKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC80MDVncF9wY2kuYyBiL2NwdS9wcGM0eHgvNDA1Z3BfcGNpLmMKaW5kZXggNjQ0MzFhYi4uZjZiMjllOSAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC80MDVncF9wY2kuYworKysgYi9jcHUvcHBjNHh4LzQwNWdwX3BjaS5jCkBAIC04MSw2ICs4MSwxMCBAQAogCiAjaWZkZWYgQ09ORklHX1BDSQogCisjaWYgZGVmaW5lZChDT05GSUdfUE1DNDA1KQordXNob3J0IHBtYzQwNV9wY2lfc3Vic3lzX2RldmljZWlkKHZvaWQpOworI2VuZGlmCisKIC8qI2RlZmluZSBERUJVRyovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC05NiwxMyArMTAwLDEwIEBACiAJdW5zaWduZWQgc2hvcnQgdGVtcF9zaG9ydDsKIAl1bnNpZ25lZCBsb25nIHB0bXBjaWxhWzJdID0ge0NGR19QQ0lfUFRNMVBDSSwgQ0ZHX1BDSV9QVE0yUENJfTsKICNpZiBkZWZpbmVkKENPTkZJR19DUENJNDA1KSB8fCBkZWZpbmVkKENPTkZJR19QTUM0MDUpCi0JdW5zaWduZWQgbG9uZyBwdG1sYVsyXSAgICA9IHtiZC0+YmlfbWVtc3RhcnQsIGJkLT5iaV9mbGFzaHN0YXJ0fTsKLQl1bnNpZ25lZCBsb25nIHB0bW1zWzJdICAgID0ge34oYmQtPmJpX21lbXNpemUgLSAxKSB8IDEsIH4oYmQtPmJpX2ZsYXNoc2l6ZSAtIDEpIHwgMX07CiAJY2hhciAqcHRtbGFfc3RyLCAqcHRtbXNfc3RyOwotI2Vsc2UKKyNlbmRpZgogCXVuc2lnbmVkIGxvbmcgcHRtbGFbMl0gICAgPSB7Q0ZHX1BDSV9QVE0xTEEsIENGR19QQ0lfUFRNMkxBfTsKIAl1bnNpZ25lZCBsb25nIHB0bW1zWzJdICAgID0ge0NGR19QQ0lfUFRNMU1TLCBDRkdfUENJX1BUTTJNU307Ci0jZW5kaWYKICNpZiBkZWZpbmVkKENPTkZJR19QSVA0MDUpIHx8IGRlZmluZWQgKENPTkZJR19NSVA0MDUpCiAJdW5zaWduZWQgbG9uZyBwbW1sYVszXSAgICA9IHsweDgwMDAwMDAwLCAweEEwMDAwMDAwLCAwfTsKIAl1bnNpZ25lZCBsb25nIHBtbW1hWzNdICAgID0gezB4RTAwMDAwMDEsIDB4RTAwMDAwMDEsIDB9OwpkaWZmIC0tZ2l0IGEvY3B1L3B4YS9jcHUuYyBiL2NwdS9weGEvY3B1LmMKaW5kZXggZDE1NTFkZC4uYjMzZDY3NCAxMDA2NDQKLS0tIGEvY3B1L3B4YS9jcHUuYworKysgYi9jcHUvcHhhL2NwdS5jCkBAIC0xNDMsNiArMTQzLDcgQEAKIAlyZXR1cm4gMDsJCQkJCS8qIGFsd2F5cyBvZmYgKi8KIH0KIAorI2lmbmRlZiBDT05GSUdfQ1BVX01PTkFIQU5TCiB2b2lkIHNldF9HUElPX21vZGUoaW50IGdwaW9fbW9kZSkKIHsKIAlpbnQgZ3BpbyA9IGdwaW9fbW9kZSAmIEdQSU9fTURfTUFTS19OUjsKQEAgLTE2MCwzICsxNjEsNCBAQAogCWdhZnIgPSBHQUZSKGdwaW8pICYgfigweDMgPDwgKCgoZ3BpbykgJiAweGYpKjIpKTsKIAlHQUZSKGdwaW8pID0gZ2FmciB8ICAoZm4gIDw8ICgoKGdwaW8pICYgMHhmKSoyKSk7CiB9CisjZW5kaWYgLyogQ09ORklHX0NQVV9NT05BSEFOUyAqLwpkaWZmIC0tZ2l0IGEvY3B1L3B4YS9zZXJpYWwuYyBiL2NwdS9weGEvc2VyaWFsLmMKaW5kZXggY2VkZWJmZS4uOWJmMmE3YyAxMDA2NDQKLS0tIGEvY3B1L3B4YS9zZXJpYWwuYworKysgYi9jcHUvcHhhL3NlcmlhbC5jCkBAIC01NCw3ICs1NCwxMSBAQAogCQloYW5nICgpOwogCiAjaWZkZWYgQ09ORklHX0ZGVUFSVAorI2lmZGVmIENPTkZJR19DUFVfTU9OQUhBTlMKKwlDS0VOQSB8PSBDS0VOQV8yMl9GRlVBUlQ7CisjZWxzZQogCUNLRU4gfD0gQ0tFTjZfRkZVQVJUOworI2VuZGlmIC8qIENPTkZJR19DUFVfTU9OQUhBTlMgKi8KIAogCUZGSUVSID0gMDsJCQkJCS8qIERpc2FibGUgZm9yIG5vdyAqLwogCUZGRkNSID0gMDsJCQkJCS8qIE5vIGZpZm9zIGVuYWJsZWQgKi8KQEAgLTY4LDcgKzcyLDExIEBACiAJRkZJRVIgPSBJRVJfVVVFOwkJCS8qIEVuYWJsZSBGRlVBUlQgKi8KIAogI2VsaWYgZGVmaW5lZChDT05GSUdfQlRVQVJUKQorI2lmZGVmIENPTkZJR19DUFVfTU9OQUhBTlMKKwlDS0VOQSB8PSBDS0VOQV8yMV9CVFVBUlQ7CisjZWxzZQogCUNLRU4gfD0gQ0tFTjdfQlRVQVJUOworI2VuZGlmIC8qICBDT05GSUdfQ1BVX01PTkFIQU5TICovCiAKIAlCVElFUiA9IDA7CiAJQlRGQ1IgPSAwOwpAQCAtODIsNyArOTAsMTEgQEAKIAlCVElFUiA9IElFUl9VVUU7CQkJLyogRW5hYmxlIEJGVUFSVCAqLwogCiAjZWxpZiBkZWZpbmVkKENPTkZJR19TVFVBUlQpCisjaWZkZWYgQ09ORklHX0NQVV9NT05BSEFOUworCUNLRU5BIHw9IENLRU5BXzIzX1NUVUFSVDsKKyNlbHNlCiAJQ0tFTiB8PSBDS0VONV9TVFVBUlQ7CisjZW5kaWYgLyogQ09ORklHX0NQVV9NT05BSEFOUyAqLwogCiAJU1RJRVIgPSAwOwogCVNURkNSID0gMDsKZGlmZiAtLWdpdCBhL2NwdS9weGEvc3RhcnQuUyBiL2NwdS9weGEvc3RhcnQuUwppbmRleCBhOGNjMDgwLi45NTQxYzliIDEwMDY0NAotLS0gYS9jcHUvcHhhL3N0YXJ0LlMKKysrIGIvY3B1L3B4YS9zdGFydC5TCkBAIC02LDggKzYsOCBAQAogICogIENvcHlyaWdodCAoQykgMjAwMAlXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICogIENvcHlyaWdodCAoQykgMjAwMQlBbGV4IFp1ZXBrZSA8YXp1QHN5c2dvLmRlPgogICogIENvcHlyaWdodCAoQykgMjAwMglLeWxlIEhhcnJpcyA8a2hhcnJpc0BuZXh1cy10ZWNoLm5ldD4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMgIFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMgIEthaS1Vd2UgQmxvZW0gPGthaS11d2UuYmxvZW1AYXVlcnN3YWxkLmRlPgorICogIENvcHlyaWdodCAoQykgMjAwMwlSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+CisgKiAgQ29weXJpZ2h0IChDKSAyMDAzCUthaS1Vd2UgQmxvZW0gPGthaS11d2UuYmxvZW1AYXVlcnN3YWxkLmRlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjaW5jbHVkZSA8dmVyc2lvbi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+CiAKIC5nbG9ibCBfc3RhcnQKIF9zdGFydDogYglyZXNldApAQCAtMTE2LDEzICsxMTcsMTMgQEAKIHJlbG9jYXRlOgkJCQkvKiByZWxvY2F0ZSBVLUJvb3QgdG8gUkFNCSAgICAqLwogCWFkcglyMCwgX3N0YXJ0CQkvKiByMCA8LSBjdXJyZW50IHBvc2l0aW9uIG9mIGNvZGUgICAqLwogCWxkcglyMSwgX1RFWFRfQkFTRQkJLyogdGVzdCBpZiB3ZSBydW4gZnJvbSBmbGFzaCBvciBSQU0gKi8KLQljbXAgICAgIHIwLCByMSAgICAgICAgICAgICAgICAgIC8qIGRvbid0IHJlbG9jIGR1cmluZyBkZWJ1ZyAgICAgICAgICovCi0JYmVxICAgICBzdGFja19zZXR1cAorCWNtcAlyMCwgcjEJCQkvKiBkb24ndCByZWxvYyBkdXJpbmcgZGVidWcJICAgICovCisJYmVxCXN0YWNrX3NldHVwCiAKIAlsZHIJcjIsIF9hcm1ib290X3N0YXJ0CiAJbGRyCXIzLCBfYnNzX3N0YXJ0Ci0Jc3ViCXIyLCByMywgcjIJCS8qIHIyIDwtIHNpemUgb2YgYXJtYm9vdCAgICAgICAgICAgICovCi0JYWRkCXIyLCByMCwgcjIJCS8qIHIyIDwtIHNvdXJjZSBlbmQgYWRkcmVzcyAgICAgICAgICovCisJc3ViCXIyLCByMywgcjIJCS8qIHIyIDwtIHNpemUgb2YgYXJtYm9vdAkgICAgKi8KKwlhZGQJcjIsIHIwLCByMgkJLyogcjIgPC0gc291cmNlIGVuZCBhZGRyZXNzCSAgICAqLwogCiBjb3B5X2xvb3A6CiAJbGRtaWEJcjAhLCB7cjMtcjEwfQkJLyogY29weSBmcm9tIHNvdXJjZSBhZGRyZXNzIFtyMF0gICAgKi8KQEAgLTEzNCwxOSArMTM1LDE5IEBACiAJLyogU2V0IHVwIHRoZSBzdGFjawkJCQkJCSAgICAqLwogc3RhY2tfc2V0dXA6CiAJbGRyCXIwLCBfVEVYVF9CQVNFCQkvKiB1cHBlciAxMjggS2lCOiByZWxvY2F0ZWQgdWJvb3QgICAqLwotCXN1YglyMCwgcjAsICNDRkdfTUFMTE9DX0xFTgkvKiBtYWxsb2MgYXJlYSAgICAgICAgICAgICAgICAgICAgICAqLwotCXN1YglyMCwgcjAsICNDRkdfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8gICAgICAgICAgICAgICAgICAgICAgICAqLworCXN1YglyMCwgcjAsICNDRkdfTUFMTE9DX0xFTiAvKiBtYWxsb2MgYXJlYQkJCSAgICAqLworCXN1YglyMCwgcjAsICNDRkdfR0JMX0RBVEFfU0laRSAvKiBiZGluZm8JCQkgICAgKi8KICNpZmRlZiBDT05GSUdfVVNFX0lSUQogCXN1YglyMCwgcjAsICMoQ09ORklHX1NUQUNLU0laRV9JUlErQ09ORklHX1NUQUNLU0laRV9GSVEpCiAjZW5kaWYKIAlzdWIJc3AsIHIwLCAjMTIJCS8qIGxlYXZlIDMgd29yZHMgZm9yIGFib3J0LXN0YWNrICAgICovCiAKIGNsZWFyX2JzczoKLQlsZHIJcjAsIF9ic3Nfc3RhcnQJCS8qIGZpbmQgc3RhcnQgb2YgYnNzIHNlZ21lbnQgICAgICAgICovCi0JbGRyCXIxLCBfYnNzX2VuZAkJLyogc3RvcCBoZXJlICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQltb3YgCXIyLCAjMHgwMDAwMDAwMAkJLyogY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlsZHIJcjAsIF9ic3Nfc3RhcnQJCS8qIGZpbmQgc3RhcnQgb2YgYnNzIHNlZ21lbnQJICAgICovCisJbGRyCXIxLCBfYnNzX2VuZAkJLyogc3RvcCBoZXJlCQkJICAgICovCisJbW92CXIyLCAjMHgwMDAwMDAwMAkJLyogY2xlYXIJCQkgICAgKi8KIAotY2xic3NfbDpzdHIJcjIsIFtyMF0JCS8qIGNsZWFyIGxvb3AuLi4gICAgICAgICAgICAgICAgICAgICovCitjbGJzc19sOnN0cglyMiwgW3IwXQkJLyogY2xlYXIgbG9vcC4uLgkJICAgICovCiAJYWRkCXIwLCByMCwgIzQKIAljbXAJcjAsIHIxCiAJYmxlCWNsYnNzX2wKQEAgLTE2NCw4ICsxNjUsMTYgQEAKIC8qIC0gc2V0dXAgbWVtb3J5IHRpbWluZwkJCQkJCSAgICAqLwogLyoJCQkJCQkJCQkgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogbWtAdGJkOiBGaXggdGhpcyEgKi8KKyNpZmRlZiBDT05GSUdfQ1BVX01PTkFIQU5TCisjdW5kZWYgSUNNUgorI3VuZGVmIE9TTVIzCisjdW5kZWYgT1NDUgorI3VuZGVmIE9XRVIKKyN1bmRlZiBPSUVSCisjZW5kaWYKIAotLyogSW50ZXJydXB0LUNvbnRyb2xsZXIgYmFzZSBhZGRyZXNzCQkJCSAgICAgICAgICAgICovCisvKiBJbnRlcnJ1cHQtQ29udHJvbGxlciBiYXNlIGFkZHJlc3MJCQkJCSAgICAqLwogSUNfQkFTRToJICAgLndvcmQJICAgMHg0MGQwMDAwMAogI2RlZmluZSBJQ01SCTB4MDQKIApAQCAtMTgwLDcgKzE4OSw3IEBACiAjZGVmaW5lIE9XRVIJMHgxOAogI2RlZmluZSBPSUVSCTB4MUMKIAotLyogQ2xvY2sgTWFuYWdlciBSZWdpc3RlcnMJCQkJCSAgICAgICAgICAgICovCisvKiBDbG9jayBNYW5hZ2VyIFJlZ2lzdGVycwkJCQkJCSAgICAqLwogI2lmZGVmIENGR19DUFVTUEVFRAogQ0NfQkFTRToJLndvcmQJMHg0MTMwMDAwMAogI2RlZmluZSBDQ0NSCTB4MDAKQEAgLTE4OSwyNSArMTk4LDQ0IEBACiAjZXJyb3IgIllvdSBoYXZlIHRvIGRlZmluZSBDRkdfQ1BVU1BFRUQhISIKICNlbmRpZgogCi0KLQkvKiBSUzogPz8/CQkJCQkJCSAgICAqLwotCS5tYWNybyBDUFdBSVQKLQltcmMgIHAxNSwwLHIwLGMyLGMwLDAKLQltb3YgIHIwLHIwCisJLyogdGFrZXMgY2FyZSB0aGUgQ1AxNSB1cGRhdGUgaGFzIHRha2VuIHBsYWNlICovCisJLm1hY3JvIENQV0FJVCByZWcKKwltcmMgIHAxNSwwLFxyZWcsYzIsYzAsMAorCW1vdiAgXHJlZyxccmVnCiAJc3ViICBwYyxwYywjNAogCS5lbmRtCiAKLQogY3B1X2luaXRfY3JpdDoKIAogCS8qIG1hc2sgYWxsIElSUXMJCQkJCQkgICAgKi8KKyNpZm5kZWYgQ09ORklHX0NQVV9NT05BSEFOUwogCWxkcglyMCwgSUNfQkFTRQogCW1vdglyMSwgIzB4MDAKIAlzdHIJcjEsIFtyMCwgI0lDTVJdCisjZWxzZQorCS8qIFN0ZXAgMSAtIEVuYWJsZSBDUDYgcGVybWlzc2lvbiAqLworCW1yYwlwMTUsIDAsIHIxLCBjMTUsIGMxLCAwCUAgcmVhZCBDUEFSCisJb3JyCXIxLCByMSwgIzB4NDAKKwkJbWNyCXAxNSwgMCwgcjEsIGMxNSwgYzEsIDAKKwlDUFdBSVQJcjEKIAotI2lmIGRlZmluZWQoQ0ZHX0NQVVNQRUVEKQorCS8qIFN0ZXAgMiAtIE1hc2sgSUNNUiAmIElDTVIyICovCisJbW92CXIxLCAjMAorCW1jcglwNiwgMCwgcjEsIGMxLCBjMCwgMAlAIElDTVIKKwltY3IJcDYsIDAsIHIxLCBjNywgYzAsIDAJQCBJQ01SMgogCi0JLyogc2V0IGNsb2NrIHNwZWVkICovCisJLyogdHVybiBvZmYgYWxsIGNsb2NrcyBidXQgdGhlIG9uZXMgd2Ugd2lsbCBkZWZpbml0bHkgcmVxdWlyZSAqLworCWxkcglyMSwgPUNLRU5BCisJbGRyCXIyLCA9KENLRU5BXzIyX0ZGVUFSVCB8IENLRU5BXzEwX1NSQU0gfCBDS0VOQV85X1NNQyB8IENLRU5BXzhfRE1DKQorCXN0cglyMiwgW3IxXQorCWxkcglyMSwgPUNLRU5CCisJbGRyCXIyLCA9KENLRU5CXzZfSVJRKQorCXN0cglyMiwgW3IxXQorI2VuZGlmCisKKyNpZm5kZWYgQ09ORklHX0NQVV9NT05BSEFOUworI2lmZGVmIENGR19DUFVTUEVFRAorCS8qIHNldCBjbG9jayBzcGVlZCB0YmRAbWs6IHJlcXVpcmVkIGZvciBtb25haGFucz8gKi8KIAlsZHIJcjAsIENDX0JBU0UKIAlsZHIJcjEsIGNwdXNwZWVkCiAJc3RyCXIxLCBbcjAsICNDQ0NSXQpAQCAtMjE1LDcgKzI0Myw5IEBACiAJbWNyCXAxNCwgMCwgcjAsIGM2LCBjMCwgMAogCiBzZXRzcGVlZF9kb25lOgotI2VuZGlmCisKKyNlbmRpZiAvKiBDRkdfQ1BVU1BFRUQgKi8KKyNlbmRpZiAvKiBDT05GSUdfQ1BVX01PTkFIQU5TICovCiAKIAkvKgogCSAqIGJlZm9yZSByZWxvY2F0aW5nLCB3ZSBoYXZlIHRvIHNldHVwIFJBTSB0aW1pbmcKQEAgLTIyNywxOSArMjU3LDIxIEBACiAJbW92CWxyLAlpcAogCiAJLyogTWVtb3J5IGludGVyZmFjZXMgYXJlIHdvcmtpbmcuIERpc2FibGUgTU1VIGFuZCBlbmFibGUgSS1jYWNoZS4gICAqLworCS8qIG1rOiBobW0sIHRoaXMgaXMgbm90IGluIHRoZSBtb25haGFucyBkb2NzLCBsZWF2ZSBpdCBub3cgYnV0CisJICogICAgIGNoZWNrIGhlcmUgaWYgaXQgZG9lc24ndCB3b3JrIDotKSAqLwogCiAJbGRyCXIwLCA9MHgyMDAxCQkvKiBlbmFibGUgYWNjZXNzIHRvIGFsbCBjb3Byb2MuCSAgICAqLwogCW1jcglwMTUsIDAsIHIwLCBjMTUsIGMxLCAwCi0JQ1BXQUlUCisJQ1BXQUlUIHIwCiAKIAltY3IJcDE1LCAwLCByMCwgYzcsIGMxMCwgNAkvKiBkcmFpbiB0aGUgd3JpdGUgJiBmaWxsIGJ1ZmZlcnMgICAqLwotCUNQV0FJVAorCUNQV0FJVCByMAogCiAJbWNyCXAxNSwgMCwgcjAsIGM3LCBjNywgMAkvKiBmbHVzaCBJY2FjaGUsIERjYWNoZSBhbmQgQlRCCSAgICAqLwotCUNQV0FJVAorCUNQV0FJVCByMAogCiAJbWNyCXAxNSwgMCwgcjAsIGM4LCBjNywgMAkvKiBmbHVzaCBpbnN0dWN0aW9uIGFuZCBkYXRhIFRMQnMgICAqLwotCUNQV0FJVAorCUNQV0FJVCByMAogCiAJLyogRW5hYmxlIHRoZSBJY2FjaGUJCQkJCQkgICAgKi8KIC8qCkBAIC0yOTIsNyArMzI0LDcgQEAKIAogCWxkcglyMiwgX2FybWJvb3Rfc3RhcnQKIAlzdWIJcjIsIHIyLCAjKENPTkZJR19TVEFDS1NJWkUrQ0ZHX01BTExPQ19MRU4pCi0Jc3ViCXIyLCByMiwgIyhDRkdfR0JMX0RBVEFfU0laRSs4KSAgQCBzZXQgYmFzZSAyIHdvcmRzIGludG8gYWJvcnQgc3RhY2sKKwlzdWIJcjIsIHIyLCAjKENGR19HQkxfREFUQV9TSVpFKzgpCUAgc2V0IGJhc2UgMiB3b3JkcyBpbnRvIGFib3J0IHN0YWNrCiAJbGRtaWEJcjIsIHtyMiAtIHI0fQkJCS8qIGdldCBwYywgY3Bzciwgb2xkX3IwCSAgICAqLwogCWFkZAlyMCwgc3AsICNTX0ZSQU1FX1NJWkUJCS8qIHJlc3RvcmUgc3BfU1ZDCSAgICAqLwogCkBAIC00MTksMTcgKzQ1MSwxNyBAQAogI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKgkJCQkJCQkJCSAgICAqLwogLyogUmVzZXQgZnVuY3Rpb246IHRoZSBQWEEyNTAgZG9lc24ndCBoYXZlIGEgcmVzZXQgZnVuY3Rpb24sIHNvIHdlIGhhdmUgdG8gICovCi0vKiBwZXJmb3JtIGEgd2F0Y2hkb2cgdGltZW91dCBmb3IgYSBzb2Z0IHJlc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogcGVyZm9ybSBhIHdhdGNoZG9nIHRpbWVvdXQgZm9yIGEgc29mdCByZXNldC4JCQkJICAgICovCisvKgkJCQkJCQkJCSAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIAkuYWxpZ24JNQogLmdsb2JsIHJlc2V0X2NwdQogCi0JLyogRklYTUU6IHRoaXMgY29kZSBpcyBQWEEyNTAgc3BlY2lmaWMuIEhvdyBpcyB0aGlzIGhhbmRsZWQgb24gICAgICAqLwotCS8qICAgICAgICBvdGhlciBYU2NhbGUgcHJvY2Vzc29ycz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwkvKiBGSVhNRTogdGhpcyBjb2RlIGlzIFBYQTI1MCBzcGVjaWZpYy4gSG93IGlzIHRoaXMgaGFuZGxlZCBvbgkgICAgKi8KKwkvKgkgIG90aGVyIFhTY2FsZSBwcm9jZXNzb3JzPwkJCQkgICAgKi8KIAogcmVzZXRfY3B1OgogCkBAIC00MzcsMTMgKzQ2OSwxMyBAQAogCiAJbGRyCXIwLCBPU1RJTUVSX0JBU0UKIAlsZHIJcjEsIFtyMCwgI09XRVJdCi0Jb3JyCXIxLCByMSwgIzB4MDAwMQkJCS8qIGJpdDA6IFdNRSAgICAgICAgICAgICAgICAqLworCW9ycglyMSwgcjEsICMweDAwMDEJCQkvKiBiaXQwOiBXTUUJCSAgICAqLwogCXN0cglyMSwgW3IwLCAjT1dFUl0KIAogCS8qIE9TIHRpbWVyIGRvZXMgb25seSB3cmFwIGV2ZXJ5IDExNjUgc2Vjb25kcywgc28gd2UgaGF2ZSB0byBzZXQgICAgKi8KLQkvKiB0aGUgbWF0Y2ggcmVnaXN0ZXIgYXMgd2VsbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisJLyogdGhlIG1hdGNoIHJlZ2lzdGVyIGFzIHdlbGwuCQkJCQkgICAgKi8KIAotCWxkcglyMSwgW3IwLCAjT1NDUl0JCQkvKiByZWFkIE9TIHRpbWVyICAgICAgICAgICAgKi8KKwlsZHIJcjEsIFtyMCwgI09TQ1JdCQkJLyogcmVhZCBPUyB0aW1lcgkgICAgKi8KIAlhZGQJcjEsIHIxLCAjMHg4MDAJCQkvKiBsZXQgT1NNUjMgbWF0Y2ggYWZ0ZXIgICAgKi8KIAlhZGQJcjEsIHIxLCAjMHg4MDAJCQkvKiA0MDk2KigxLzMuNjg2NE1Ieik9MW1zICAgKi8KIAlzdHIJcjEsIFtyMCwgI09TTVIzXQpkaWZmIC0tZ2l0IGEvZG9jL1JFQURNRS5uYW5kIGIvZG9jL1JFQURNRS5uYW5kCmluZGV4IDBmMmJkYzUuLmYyZDZhNWIgMTAwNjQ0Ci0tLSBhL2RvYy9SRUFETUUubmFuZAorKysgYi9kb2MvUkVBRE1FLm5hbmQKQEAgLTEsNSArMSw5IEBACiBOQU5EIEZMQVNIIGNvbW1hbmRzIGFuZCBub3RlcwogCisKK1NlZSBOT1RFIGJlbG93ISEhCisKKwogIyAoQykgQ29weXJpZ2h0IDIwMDMKICMgRGF2ZSBFbGxpcywgU0lYTkVULCBkZ2VAc2l4bmV0aW8uY29tCiAjCkBAIC0xNzMsMyArMTc3LDMzIEBACiAgICAjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04gMHgwMAogICAgI2RlZmluZSBOQU5EX01BWF9GTE9PUlMgMQogICAgI2RlZmluZSBOQU5EX01BWF9DSElQUyAxCisKKworTk9URToKKz09PT09CisKK1dlIG5vdyB1c2UgYSBjb21wbGV0ZSByZXdyaXRlIG9mIHRoZSBOQU5EIGNvZGUgYmFzZWQgb24gd2hhdCBpcyBpbgorMi42LjEyIExpbnV4IGtlcm5lbC4KKworVGhlIG9sZCBOQU5EIGhhbmRsaW5nIGNvZGUgaGFzIGJlZW4gcmUtZmFjdG9yZWQgYW5kIGlzIG5vdyBjb25maW5lZAordG8gb25seSBib2FyZC1zcGVjaWZpYyBmaWxlcyBhbmQgLSB1bmZvcnR1bmF0ZWx5IC0gdG8gdGhlIERvQyBjb2RlCisoc2VlIGJlbG93KS4gQSBuZXcgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBoYXMgYmVlbiBpbnRyb2R1Y2VkOgorQ0ZHX05BTkRfTEVHQUNZLCB3aGljaCBoYXMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgYm9hcmQgY29uZmlnIGZpbGUgaWYKK3RoYXQgYm9hcmQgdXNlcyBsZWdhY3kgY29kZS4gSWYgQ0ZHX05BTkRfTEVHQUNZIGlzIGRlZmluZWQsIHRoZSBib2FyZAorc3BlY2lmaWMgY29uZmlnLm1rIGZpbGUgc2hvdWxkIGFsc28gaGF2ZSAiQk9BUkRMSUJTID0KK2RyaXZlcnMvbmFuZF9sZWdhY3kvbGlibmFuZF9sZWdhY3kuYSIuIEZvciBib2FyZHMgdXNpbmcgdGhlIG5ldyBOQU5ECithcHByb2FjaCAoUFBDaGFtZWxlb24gYW5kIG5ldHN0YXIgYXQgdGhlIG1vbWVudCkgbm8gdmFyaWFibGUgaXMKK25lY2Vzc2FyeSwgYnV0IHRoZSBjb25maWcubWsgc2hvdWxkIGhhdmUgIkJPQVJETElCUyA9Citkcml2ZXJzL25hbmQvbGlibmFuZC5hIi4KKworVGhlIG5lY2Vzc2FyeSBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIGFsbCBhZmZlY3RlZCBib2FyZHMsIGFuZCBubworYnVpbGQgYnJlYWthZ2UgaGFzIGJlZW4gaW50cm9kdWNlZCwgZXhjZXB0IGZvciBORVRUQSBhbmQgTkVUVEFfSVNETgordGFyZ2V0cyBmcm9tIE1BS0VBTEwuIFRoaXMgaXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlc2UgdHdvIGJvYXJkcwordXNlIEpGRlMsIHdoaWNoIGhhcyBiZWVuIGFkb3B0ZWQgdG8gdXNlIHRoZSBuZXcgTkFORCwgYW5kIGF0IHRoZSBzYW1lCit0aW1lIHVzZSBOQU5EIGluIGxlZ2FjeSBtb2RlLiBUaGUgYnJlYWthZ2Ugd2lsbCBkaXNhcHBlYXIgd2hlbiB0aGUKK2JvYXJkLXNwZWNpZmljIGNvZGUgaXMgY2hhbmdlZCB0byB0aGUgbmV3IE5BTkQuCisKK0FzIG1lbnRpb25lZCBhYm92ZSwgdGhlIGxlZ2FjeSBjb2RlIGlzIHN0aWxsIHVzZWQgYnkgdGhlIERvQyBzdWJzeXN0ZW0uCitUaGUgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IHRoZSBsZWdhY3kgTkFORCBjYW4ndCBiZSByZW1vdmVkICBmcm9tCit0aGUgdHJlZSB1bnRpbCB0aGUgRG9DIGlzIHBvcnRlZCB0byB1c2UgdGhlIG5ldyBOQU5EIHN1cHBvcnQgKG9yIGJvYXJkcword2l0aCBEb0Mgd2lsbCBicmVhaykuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NmaV9mbGFzaC5jIGIvZHJpdmVycy9jZmlfZmxhc2guYwppbmRleCA0YjdhMTEwLi5hOTg5ZDM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NmaV9mbGFzaC5jCisrKyBiL2RyaXZlcnMvY2ZpX2ZsYXNoLmMKQEAgLTEwNCwxMiArMTA0LDE1IEBACiAjZGVmaW5lIEFNRF9DTURfRVJBU0VfU0VDVE9SCQkweDMwCiAjZGVmaW5lIEFNRF9DTURfVU5MT0NLX1NUQVJUCQkweEFBCiAjZGVmaW5lIEFNRF9DTURfVU5MT0NLX0FDSwkJMHg1NQorI2RlZmluZSBBTURfQ01EX1dSSVRFX1RPX0JVRkZFUgkJMHgyNQorI2RlZmluZSBBTURfQ01EX1dSSVRFX0JVRkZFUl9DT05GSVJNCTB4MjkKIAogI2RlZmluZSBBTURfU1RBVFVTX1RPR0dMRQkJMHg0MAogI2RlZmluZSBBTURfU1RBVFVTX0VSUk9SCQkweDIwCi0jZGVmaW5lIEFNRF9BRERSX0VSQVNFX1NUQVJUCQkweDU1NQotI2RlZmluZSBBTURfQUREUl9TVEFSVAkJCTB4NTU1Ci0jZGVmaW5lIEFNRF9BRERSX0FDSwkJCTB4MkFBCisKKyNkZWZpbmUgQU1EX0FERFJfRVJBU0VfU1RBUlQJKChpbmZvLT5wb3J0d2lkdGggPT0gRkxBU0hfQ0ZJXzhCSVQpID8gMHhBQUEgOiAweDU1NSkKKyNkZWZpbmUgQU1EX0FERFJfU1RBUlQJCSgoaW5mby0+cG9ydHdpZHRoID09IEZMQVNIX0NGSV84QklUKSA/IDB4QUFBIDogMHg1NTUpCisjZGVmaW5lIEFNRF9BRERSX0FDSwkJKChpbmZvLT5wb3J0d2lkdGggPT0gRkxBU0hfQ0ZJXzhCSVQpID8gMHg1NTUgOiAweDJBQSkKIAogI2RlZmluZSBGTEFTSF9PRkZTRVRfQ0ZJCQkweDU1CiAjZGVmaW5lIEZMQVNIX09GRlNFVF9DRklfUkVTUAkJMHgxMApAQCAtMTc1LDYgKzE3OCwxMyBAQAogZmxhc2hfaW5mb190IGZsYXNoX2luZm9bQ0ZHX01BWF9GTEFTSF9CQU5LU107CQkvKiBGTEFTSCBjaGlwcyBpbmZvICovCiAjZW5kaWYKIAorLyoKKyAqIENoZWNrIGlmIGNoaXAgd2lkdGggaXMgZGVmaW5lZC4gSWYgbm90LCBzdGFydCBkZXRlY3Rpbmcgd2l0aCA4Yml0LgorICovCisjaWZuZGVmIENGR19GTEFTSF9DRklfV0lEVEgKKyNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSV9XSURUSAlGTEFTSF9DRklfOEJJVAorI2VuZGlmCisKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogRnVuY3Rpb25zCkBAIC0xOTAsMTAgKzIwMCwxMCBAQAogc3RhdGljIGludCBmbGFzaF9pc3NldCAoZmxhc2hfaW5mb190ICogaW5mbywgZmxhc2hfc2VjdF90IHNlY3QsIHVpbnQgb2Zmc2V0LCB1Y2hhciBjbWQpOwogc3RhdGljIGludCBmbGFzaF90b2dnbGUgKGZsYXNoX2luZm9fdCAqIGluZm8sIGZsYXNoX3NlY3RfdCBzZWN0LCB1aW50IG9mZnNldCwgdWNoYXIgY21kKTsKIHN0YXRpYyBpbnQgZmxhc2hfZGV0ZWN0X2NmaSAoZmxhc2hfaW5mb190ICogaW5mbyk7Ci11bG9uZyBmbGFzaF9nZXRfc2l6ZSAodWxvbmcgYmFzZSwgaW50IGJhbmtudW0pOwogc3RhdGljIGludCBmbGFzaF93cml0ZV9jZml3b3JkIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCBjZml3b3JkX3QgY3dvcmQpOwogc3RhdGljIGludCBmbGFzaF9mdWxsX3N0YXR1c19jaGVjayAoZmxhc2hfaW5mb190ICogaW5mbywgZmxhc2hfc2VjdF90IHNlY3RvciwKIAkJCQkgICAgdWxvbmcgdG91dCwgY2hhciAqcHJvbXB0KTsKK3Vsb25nIGZsYXNoX2dldF9zaXplICh1bG9uZyBiYXNlLCBpbnQgYmFua251bSk7CiAjaWYgZGVmaW5lZChDRkdfRU5WX0lTX0lOX0ZMQVNIKSB8fCBkZWZpbmVkKENGR19FTlZfQUREUl9SRURVTkQpIHx8IChDRkdfTU9OSVRPUl9CQVNFID49IENGR19GTEFTSF9CQVNFKQogc3RhdGljIGZsYXNoX2luZm9fdCAqZmxhc2hfZ2V0X2luZm8odWxvbmcgYmFzZSk7CiAjZW5kaWYKQEAgLTMyOCw2ICszMzgsNyBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiB1bnNpZ25lZCBsb25nIGZsYXNoX2luaXQgKHZvaWQpCkBAIC0zNDUsNiArMzU2LDI0IEBACiAJCQkJaSwgZmxhc2hfaW5mb1tpXS5zaXplLCBmbGFzaF9pbmZvW2ldLnNpemUgPDwgMjApOwogI2VuZGlmIC8qIENGR19GTEFTSF9RVUlFVF9URVNUICovCiAJCX0KKyNpZmRlZiBDRkdfRkxBU0hfUFJPVEVDVElPTgorCQllbHNlIHsKKwkJCWNoYXIgKnMgPSBnZXRlbnYoInVubG9jayIpOworCisJCQlpZiAoKChzID0gZ2V0ZW52KCJ1bmxvY2siKSkgIT0gTlVMTCkgJiYgKHN0cmNtcChzLCAieWVzIikgPT0gMCkpIHsKKwkJCQkvKgorCQkJCSAqIE9ubHkgdGhlIFUtQm9vdCBpbWFnZSBhbmQgaXQncyBlbnZpcm9ubWVudCBpcyBwcm90ZWN0ZWQsCisJCQkJICogYWxsIG90aGVyIHNlY3RvcnMgYXJlIHVucHJvdGVjdGVkICh1bmxvY2tlZCkgaWYgZmxhc2gKKwkJCQkgKiBoYXJkd2FyZSBwcm90ZWN0aW9uIGlzIHVzZWQgKENGR19GTEFTSF9QUk9URUNUSU9OKSBhbmQKKwkJCQkgKiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgInVubG9jayIgaXMgc2V0IHRvICJ5ZXMiLgorCQkJCSAqLworCQkJCWZsYXNoX3Byb3RlY3QgKEZMQUdfUFJPVEVDVF9DTEVBUiwKKwkJCQkJICAgICAgIGZsYXNoX2luZm9baV0uc3RhcnRbMF0sCisJCQkJCSAgICAgICBmbGFzaF9pbmZvW2ldLnN0YXJ0WzBdICsgZmxhc2hfaW5mb1tpXS5zaXplIC0gMSwKKwkJCQkJICAgICAgICZmbGFzaF9pbmZvW2ldKTsKKwkJCX0KKwkJfQorI2VuZGlmIC8qIENGR19GTEFTSF9QUk9URUNUSU9OICovCiAJfQogCiAJLyogTW9uaXRvciBwcm90ZWN0aW9uIE9OIGJ5IGRlZmF1bHQgKi8KQEAgLTU2NSw3ICs1OTQsMjIgQEAKIAlidWZmZXJlZF9zaXplID0gKGluZm8tPnBvcnR3aWR0aCAvIGluZm8tPmNoaXB3aWR0aCk7CiAJYnVmZmVyZWRfc2l6ZSAqPSBpbmZvLT5idWZmZXJfc2l6ZTsKIAl3aGlsZSAoY250ID49IGluZm8tPnBvcnR3aWR0aCkgewotCQlpID0gYnVmZmVyZWRfc2l6ZSA+IGNudCA/IGNudCA6IGJ1ZmZlcmVkX3NpemU7CisJCS8qIHByb2hpYml0IGJ1ZmZlciB3cml0ZSB3aGVuIGJ1ZmZlcl9zaXplIGlzIDEgKi8KKwkJaWYgKGluZm8tPmJ1ZmZlcl9zaXplID09IDEpIHsKKwkJCWN3b3JkLmwgPSAwOworCQkJZm9yIChpID0gMDsgaSA8IGluZm8tPnBvcnR3aWR0aDsgaSsrKQorCQkJCWZsYXNoX2FkZF9ieXRlIChpbmZvLCAmY3dvcmQsICpzcmMrKyk7CisJCQlpZiAoKHJjID0gZmxhc2hfd3JpdGVfY2Zpd29yZCAoaW5mbywgd3AsIGN3b3JkKSkgIT0gMCkKKwkJCQlyZXR1cm4gcmM7CisJCQl3cCArPSBpbmZvLT5wb3J0d2lkdGg7CisJCQljbnQgLT0gaW5mby0+cG9ydHdpZHRoOworCQkJY29udGludWU7CisJCX0KKworCQkvKiB3cml0ZSBidWZmZXIgdW50aWwgbmV4dCBidWZmZXJlZF9zaXplIGFsaWduZWQgYm91bmRhcnkgKi8KKwkJaSA9IGJ1ZmZlcmVkX3NpemUgLSAod3AgJSBidWZmZXJlZF9zaXplKTsKKwkJaWYgKGkgPiBjbnQpCisJCQlpID0gY250OwogCQlpZiAoKHJjID0gZmxhc2hfd3JpdGVfY2ZpYnVmZmVyIChpbmZvLCB3cCwgc3JjLCBpKSkgIT0gRVJSX09LKQogCQkJcmV0dXJuIHJjOwogCQlpIC09IGkgJiAoaW5mby0+cG9ydHdpZHRoIC0gMSk7CkBAIC03MDUsNyArNzQ5LDcgQEAKIAkvKiBXYWl0IGZvciBjb21tYW5kIGNvbXBsZXRpb24gKi8KIAlzdGFydCA9IGdldF90aW1lciAoMCk7CiAJd2hpbGUgKGZsYXNoX2lzX2J1c3kgKGluZm8sIHNlY3RvcikpIHsKLQkJaWYgKGdldF90aW1lciAoc3RhcnQpID4gaW5mby0+ZXJhc2VfYmxrX3RvdXQgKiBDRkdfSFopIHsKKwkJaWYgKGdldF90aW1lciAoc3RhcnQpID4gdG91dCkgewogCQkJcHJpbnRmICgiRmxhc2ggJXMgdGltZW91dCBhdCBhZGRyZXNzICVseCBkYXRhICVseFxuIiwKIAkJCQlwcm9tcHQsIGluZm8tPnN0YXJ0W3NlY3Rvcl0sCiAJCQkJZmxhc2hfcmVhZF9sb25nIChpbmZvLCBzZWN0b3IsIDApKTsKQEAgLTcyOSw3ICs3NzMsNyBAQAogCXN3aXRjaCAoaW5mby0+dmVuZG9yKSB7CiAJY2FzZSBDRklfQ01EU0VUX0lOVEVMX0VYVEVOREVEOgogCWNhc2UgQ0ZJX0NNRFNFVF9JTlRFTF9TVEFOREFSRDoKLQkJaWYgKChyZXRjb2RlICE9IEVSUl9PSykKKwkJaWYgKChyZXRjb2RlID09IEVSUl9PSykKIAkJICAgICYmICFmbGFzaF9pc2VxdWFsIChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX1NUQVRVU19ET05FKSkgewogCQkJcmV0Y29kZSA9IEVSUl9JTlZBTDsKIAkJCXByaW50ZiAoIkZsYXNoICVzIGVycm9yIGF0IGFkZHJlc3MgJWx4XG4iLCBwcm9tcHQsCkBAIC04MzQsMTggKzg3OCwyNyBAQAogCQlkZWJ1ZyAoImZ3YyBhZGRyICVwIGNtZCAleCAleCA4Yml0IHggJWQgYml0XG4iLCBhZGRyLmNwLCBjbWQsCiAJCSAgICAgICBjd29yZC5jLCBpbmZvLT5jaGlwd2lkdGggPDwgQ0ZJX0ZMQVNIX1NISUZUX1dJRFRIKTsKIAkJKmFkZHIuY3AgPSBjd29yZC5jOworI2lmZGVmIENPTkZJR19CTEFDS0ZJTgorCQlhc20oInNzeW5jOyIpOworI2VuZGlmCiAJCWJyZWFrOwogCWNhc2UgRkxBU0hfQ0ZJXzE2QklUOgogCQlkZWJ1ZyAoImZ3YyBhZGRyICVwIGNtZCAleCAlNC40eCAxNmJpdCB4ICVkIGJpdFxuIiwgYWRkci53cCwKIAkJICAgICAgIGNtZCwgY3dvcmQudywKIAkJICAgICAgIGluZm8tPmNoaXB3aWR0aCA8PCBDRklfRkxBU0hfU0hJRlRfV0lEVEgpOwogCQkqYWRkci53cCA9IGN3b3JkLnc7CisjaWZkZWYgQ09ORklHX0JMQUNLRklOCisJCWFzbSgic3N5bmM7Iik7CisjZW5kaWYKIAkJYnJlYWs7CiAJY2FzZSBGTEFTSF9DRklfMzJCSVQ6CiAJCWRlYnVnICgiZndjIGFkZHIgJXAgY21kICV4ICU4LjhseCAzMmJpdCB4ICVkIGJpdFxuIiwgYWRkci5scCwKIAkJICAgICAgIGNtZCwgY3dvcmQubCwKIAkJICAgICAgIGluZm8tPmNoaXB3aWR0aCA8PCBDRklfRkxBU0hfU0hJRlRfV0lEVEgpOwogCQkqYWRkci5scCA9IGN3b3JkLmw7CisjaWZkZWYgQ09ORklHX0JMQUNLRklOCisJCWFzbSgic3N5bmM7Iik7CisjZW5kaWYKIAkJYnJlYWs7CiAJY2FzZSBGTEFTSF9DRklfNjRCSVQ6CiAjaWZkZWYgREVCVUcKQEAgLTg2MCw2ICs5MTMsOSBAQAogCQl9CiAjZW5kaWYKIAkJKmFkZHIubGxwID0gY3dvcmQubGw7CisjaWZkZWYgQ09ORklHX0JMQUNLRklOCisJCWFzbSgic3N5bmM7Iik7CisjZW5kaWYKIAkJYnJlYWs7CiAJfQogfQpAQCAtOTg1LDcgKzEwNDEsNyBAQAogewogCWRlYnVnICgiZmxhc2ggZGV0ZWN0IGNmaVxuIik7CiAKLQlmb3IgKGluZm8tPnBvcnR3aWR0aCA9IEZMQVNIX0NGSV84QklUOworCWZvciAoaW5mby0+cG9ydHdpZHRoID0gQ0ZHX0ZMQVNIX0NGSV9XSURUSDsKIAkgICAgIGluZm8tPnBvcnR3aWR0aCA8PSBGTEFTSF9DRklfNjRCSVQ7IGluZm8tPnBvcnR3aWR0aCA8PD0gMSkgewogCQlmb3IgKGluZm8tPmNoaXB3aWR0aCA9IEZMQVNIX0NGSV9CWTg7CiAJCSAgICAgaW5mby0+Y2hpcHdpZHRoIDw9IGluZm8tPnBvcnR3aWR0aDsKQEAgLTExMDYsOCArMTE2Miw5IEBACiAJCWluZm8tPmVyYXNlX2Jsa190b3V0ID0gKHRtcCAqICgxIDw8IGZsYXNoX3JlYWRfdWNoYXIgKGluZm8sIEZMQVNIX09GRlNFVF9FTUFYX1RPVVQpKSk7CiAJCXRtcCA9IDEgPDwgZmxhc2hfcmVhZF91Y2hhciAoaW5mbywgRkxBU0hfT0ZGU0VUX1dCVE9VVCk7CiAJCWluZm8tPmJ1ZmZlcl93cml0ZV90b3V0ID0gKHRtcCAqICgxIDw8IGZsYXNoX3JlYWRfdWNoYXIgKGluZm8sIEZMQVNIX09GRlNFVF9XQk1BWF9UT1VUKSkpOwotCQl0bXAgPSAxIDw8IGZsYXNoX3JlYWRfdWNoYXIgKGluZm8sIEZMQVNIX09GRlNFVF9XVE9VVCk7Ci0JCWluZm8tPndyaXRlX3RvdXQgPSAodG1wICogKDEgPDwgZmxhc2hfcmVhZF91Y2hhciAoaW5mbywgRkxBU0hfT0ZGU0VUX1dNQVhfVE9VVCkpKSAvIDEwMDA7CisJCXRtcCA9ICgxIDw8IGZsYXNoX3JlYWRfdWNoYXIgKGluZm8sIEZMQVNIX09GRlNFVF9XVE9VVCkpICoKKwkJICAgICAgKDEgPDwgZmxhc2hfcmVhZF91Y2hhciAoaW5mbywgRkxBU0hfT0ZGU0VUX1dNQVhfVE9VVCkpOworCQlpbmZvLT53cml0ZV90b3V0ID0gdG1wIC8gMTAwMCArICh0bXAgJSAxMDAwID8gMSA6IDApOyAvKiByb3VuZCB1cCB3aGVuIGNvbnZlcnRpbmcgdG8gbXMgKi8KIAkJaW5mby0+Zmxhc2hfaWQgPSBGTEFTSF9NQU5fQ0ZJOwogCQlpZiAoKGluZm8tPmludGVyZmFjZSA9PSBGTEFTSF9DRklfWDhYMTYpICYmIChpbmZvLT5jaGlwd2lkdGggPT0gRkxBU0hfQ0ZJX0JZOCkpIHsKIAkJCWluZm8tPnBvcnR3aWR0aCA+Pj0gMTsJLyogWFhYIC0gTmVlZCB0byB0ZXN0IG9uIHg4L3gxNiBpbiBwYXJhbGxlbC4gKi8KQEAgLTExMTgsMTMgKzExNzUsMjYgQEAKIAlyZXR1cm4gKGluZm8tPnNpemUpOwogfQogCisvKiBsb29wIHRocm91Z2ggdGhlIHNlY3RvcnMgZnJvbSB0aGUgaGlnaGVzdCBhZGRyZXNzCisgKiB3aGVuIHRoZSBwYXNzZWQgYWRkcmVzcyBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBzZWN0b3IgYWRkcmVzcworICogd2UgaGF2ZSBhIG1hdGNoCisgKi8KK3N0YXRpYyBmbGFzaF9zZWN0X3QgZmluZF9zZWN0b3IgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGFkZHIpCit7CisJZmxhc2hfc2VjdF90IHNlY3RvcjsKKworCWZvciAoc2VjdG9yID0gaW5mby0+c2VjdG9yX2NvdW50IC0gMTsgc2VjdG9yID49IDA7IHNlY3Rvci0tKSB7CisJCWlmIChhZGRyID49IGluZm8tPnN0YXJ0W3NlY3Rvcl0pCisJCQlicmVhazsKKwl9CisJcmV0dXJuIHNlY3RvcjsKK30KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBzdGF0aWMgaW50IGZsYXNoX3dyaXRlX2NmaXdvcmQgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGRlc3QsCiAJCQkJY2Zpd29yZF90IGN3b3JkKQogewotCiAJY2ZpcHRyX3QgY3RsYWRkcjsKIAljZmlwdHJfdCBjcHRyOwogCWludCBmbGFnOwpAQCAtMTE4OCwyNiArMTI1OCwxMiBAQAogCWlmIChmbGFnKQogCQllbmFibGVfaW50ZXJydXB0cyAoKTsKIAotCXJldHVybiBmbGFzaF9mdWxsX3N0YXR1c19jaGVjayAoaW5mbywgMCwgaW5mby0+d3JpdGVfdG91dCwgIndyaXRlIik7CisJcmV0dXJuIGZsYXNoX2Z1bGxfc3RhdHVzX2NoZWNrIChpbmZvLCBmaW5kX3NlY3RvciAoaW5mbywgZGVzdCksCisJCQkJCWluZm8tPndyaXRlX3RvdXQsICJ3cml0ZSIpOwogfQogCiAjaWZkZWYgQ0ZHX0ZMQVNIX1VTRV9CVUZGRVJfV1JJVEUKIAotLyogbG9vcCB0aHJvdWdoIHRoZSBzZWN0b3JzIGZyb20gdGhlIGhpZ2hlc3QgYWRkcmVzcwotICogd2hlbiB0aGUgcGFzc2VkIGFkZHJlc3MgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgc2VjdG9yIGFkZHJlc3MKLSAqIHdlIGhhdmUgYSBtYXRjaAotICovCi1zdGF0aWMgZmxhc2hfc2VjdF90IGZpbmRfc2VjdG9yIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBhZGRyKQotewotCWZsYXNoX3NlY3RfdCBzZWN0b3I7Ci0KLQlmb3IgKHNlY3RvciA9IGluZm8tPnNlY3Rvcl9jb3VudCAtIDE7IHNlY3RvciA+PSAwOyBzZWN0b3ItLSkgewotCQlpZiAoYWRkciA+PSBpbmZvLT5zdGFydFtzZWN0b3JdKQotCQkJYnJlYWs7Ci0JfQotCXJldHVybiBzZWN0b3I7Ci19Ci0KIHN0YXRpYyBpbnQgZmxhc2hfd3JpdGVfY2ZpYnVmZmVyIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1Y2hhciAqIGNwLAogCQkJCSAgaW50IGxlbikKIHsKQEAgLTEyMTYsNjYgKzEyNzIsMTA2IEBACiAJaW50IHJldGNvZGU7CiAJdm9sYXRpbGUgY2ZpcHRyX3Qgc3JjOwogCXZvbGF0aWxlIGNmaXB0cl90IGRzdDsKLQkvKiBidWZmZXJlZCB3cml0ZXMgaW4gdGhlIEFNRCBjaGlwIHNldCBpcyBub3Qgc3VwcG9ydGVkIHlldCAqLwotCWlmKChpbmZvLT52ZW5kb3IgPT0gIENGSV9DTURTRVRfQU1EX1NUQU5EQVJEKSB8fAotCQkoaW5mby0+dmVuZG9yID09IENGSV9DTURTRVRfQU1EX0VYVEVOREVEKSkKLQkJcmV0dXJuIEVSUl9JTlZBTDsKIAotCXNyYy5jcCA9IGNwOwotCWRzdC5jcCA9ICh1Y2hhciAqKSBkZXN0OwotCXNlY3RvciA9IGZpbmRfc2VjdG9yIChpbmZvLCBkZXN0KTsKLQlmbGFzaF93cml0ZV9jbWQgKGluZm8sIHNlY3RvciwgMCwgRkxBU0hfQ01EX0NMRUFSX1NUQVRVUyk7Ci0JZmxhc2hfd3JpdGVfY21kIChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX0NNRF9XUklURV9UT19CVUZGRVIpOwotCWlmICgocmV0Y29kZSA9Ci0JICAgICBmbGFzaF9zdGF0dXNfY2hlY2sgKGluZm8sIHNlY3RvciwgaW5mby0+YnVmZmVyX3dyaXRlX3RvdXQsCi0JCQkJICJ3cml0ZSB0byBidWZmZXIiKSkgPT0gRVJSX09LKSB7Ci0JCS8qIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGxvb3BzIGJ5IHRoZSB3aWR0aCBvZiB0aGUgcG9ydAkqLworCXN3aXRjaCAoaW5mby0+dmVuZG9yKSB7CisJY2FzZSBDRklfQ01EU0VUX0lOVEVMX1NUQU5EQVJEOgorCWNhc2UgQ0ZJX0NNRFNFVF9JTlRFTF9FWFRFTkRFRDoKKwkJc3JjLmNwID0gY3A7CisJCWRzdC5jcCA9ICh1Y2hhciAqKSBkZXN0OworCQlzZWN0b3IgPSBmaW5kX3NlY3RvciAoaW5mbywgZGVzdCk7CisJCWZsYXNoX3dyaXRlX2NtZCAoaW5mbywgc2VjdG9yLCAwLCBGTEFTSF9DTURfQ0xFQVJfU1RBVFVTKTsKKwkJZmxhc2hfd3JpdGVfY21kIChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX0NNRF9XUklURV9UT19CVUZGRVIpOworCQlpZiAoKHJldGNvZGUgPSBmbGFzaF9zdGF0dXNfY2hlY2sgKGluZm8sIHNlY3RvciwgaW5mby0+YnVmZmVyX3dyaXRlX3RvdXQsCisJCQkJCQkgICAid3JpdGUgdG8gYnVmZmVyIikpID09IEVSUl9PSykgeworCQkJLyogcmVkdWNlIHRoZSBudW1iZXIgb2YgbG9vcHMgYnkgdGhlIHdpZHRoIG9mIHRoZSBwb3J0CSovCisJCQlzd2l0Y2ggKGluZm8tPnBvcnR3aWR0aCkgeworCQkJY2FzZSBGTEFTSF9DRklfOEJJVDoKKwkJCQljbnQgPSBsZW47CisJCQkJYnJlYWs7CisJCQljYXNlIEZMQVNIX0NGSV8xNkJJVDoKKwkJCQljbnQgPSBsZW4gPj4gMTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRkxBU0hfQ0ZJXzMyQklUOgorCQkJCWNudCA9IGxlbiA+PiAyOworCQkJCWJyZWFrOworCQkJY2FzZSBGTEFTSF9DRklfNjRCSVQ6CisJCQkJY250ID0gbGVuID4+IDM7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXJldHVybiBFUlJfSU5WQUw7CisJCQkJYnJlYWs7CisJCQl9CisJCQlmbGFzaF93cml0ZV9jbWQgKGluZm8sIHNlY3RvciwgMCwgKHVjaGFyKSBjbnQgLSAxKTsKKwkJCXdoaWxlIChjbnQtLSA+IDApIHsKKwkJCQlzd2l0Y2ggKGluZm8tPnBvcnR3aWR0aCkgeworCQkJCWNhc2UgRkxBU0hfQ0ZJXzhCSVQ6CisJCQkJCSpkc3QuY3ArKyA9ICpzcmMuY3ArKzsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBGTEFTSF9DRklfMTZCSVQ6CisJCQkJCSpkc3Qud3ArKyA9ICpzcmMud3ArKzsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBGTEFTSF9DRklfMzJCSVQ6CisJCQkJCSpkc3QubHArKyA9ICpzcmMubHArKzsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBGTEFTSF9DRklfNjRCSVQ6CisJCQkJCSpkc3QubGxwKysgPSAqc3JjLmxscCsrOworCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQlyZXR1cm4gRVJSX0lOVkFMOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQlmbGFzaF93cml0ZV9jbWQgKGluZm8sIHNlY3RvciwgMCwKKwkJCQkJIEZMQVNIX0NNRF9XUklURV9CVUZGRVJfQ09ORklSTSk7CisJCQlyZXRjb2RlID0gZmxhc2hfZnVsbF9zdGF0dXNfY2hlY2sgKGluZm8sIHNlY3RvciwKKwkJCQkJCQkgICBpbmZvLT5idWZmZXJfd3JpdGVfdG91dCwKKwkJCQkJCQkgICAiYnVmZmVyIHdyaXRlIik7CisJCX0KKwkJcmV0dXJuIHJldGNvZGU7CisKKwljYXNlIENGSV9DTURTRVRfQU1EX1NUQU5EQVJEOgorCWNhc2UgQ0ZJX0NNRFNFVF9BTURfRVhURU5ERUQ6CisJCXNyYy5jcCA9IGNwOworCQlkc3QuY3AgPSAodWNoYXIgKikgZGVzdDsKKwkJc2VjdG9yID0gZmluZF9zZWN0b3IgKGluZm8sIGRlc3QpOworCisJCWZsYXNoX3VubG9ja19zZXEoaW5mbywwKTsKKwkJZmxhc2hfd3JpdGVfY21kIChpbmZvLCBzZWN0b3IsIDAsIEFNRF9DTURfV1JJVEVfVE9fQlVGRkVSKTsKKwogCQlzd2l0Y2ggKGluZm8tPnBvcnR3aWR0aCkgewogCQljYXNlIEZMQVNIX0NGSV84QklUOgogCQkJY250ID0gbGVuOworCQkJZmxhc2hfd3JpdGVfY21kIChpbmZvLCBzZWN0b3IsIDAsICAodWNoYXIpIGNudCAtIDEpOworCQkJd2hpbGUgKGNudC0tID4gMCkgKmRzdC5jcCsrID0gKnNyYy5jcCsrOwogCQkJYnJlYWs7CiAJCWNhc2UgRkxBU0hfQ0ZJXzE2QklUOgogCQkJY250ID0gbGVuID4+IDE7CisJCQlmbGFzaF93cml0ZV9jbWQgKGluZm8sIHNlY3RvciwgMCwgICh1Y2hhcikgY250IC0gMSk7CisJCQl3aGlsZSAoY250LS0gPiAwKSAqZHN0LndwKysgPSAqc3JjLndwKys7CiAJCQlicmVhazsKIAkJY2FzZSBGTEFTSF9DRklfMzJCSVQ6CiAJCQljbnQgPSBsZW4gPj4gMjsKKwkJCWZsYXNoX3dyaXRlX2NtZCAoaW5mbywgc2VjdG9yLCAwLCAgKHVjaGFyKSBjbnQgLSAxKTsKKwkJCXdoaWxlIChjbnQtLSA+IDApICpkc3QubHArKyA9ICpzcmMubHArKzsKIAkJCWJyZWFrOwogCQljYXNlIEZMQVNIX0NGSV82NEJJVDoKIAkJCWNudCA9IGxlbiA+PiAzOworCQkJZmxhc2hfd3JpdGVfY21kIChpbmZvLCBzZWN0b3IsIDAsICAodWNoYXIpIGNudCAtIDEpOworCQkJd2hpbGUgKGNudC0tID4gMCkgKmRzdC5sbHArKyA9ICpzcmMubGxwKys7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiBFUlJfSU5WQUw7Ci0JCQlicmVhazsKLQkJfQotCQlmbGFzaF93cml0ZV9jbWQgKGluZm8sIHNlY3RvciwgMCwgKHVjaGFyKSBjbnQgLSAxKTsKLQkJd2hpbGUgKGNudC0tID4gMCkgewotCQkJc3dpdGNoIChpbmZvLT5wb3J0d2lkdGgpIHsKLQkJCWNhc2UgRkxBU0hfQ0ZJXzhCSVQ6Ci0JCQkJKmRzdC5jcCsrID0gKnNyYy5jcCsrOwotCQkJCWJyZWFrOwotCQkJY2FzZSBGTEFTSF9DRklfMTZCSVQ6Ci0JCQkJKmRzdC53cCsrID0gKnNyYy53cCsrOwotCQkJCWJyZWFrOwotCQkJY2FzZSBGTEFTSF9DRklfMzJCSVQ6Ci0JCQkJKmRzdC5scCsrID0gKnNyYy5scCsrOwotCQkJCWJyZWFrOwotCQkJY2FzZSBGTEFTSF9DRklfNjRCSVQ6Ci0JCQkJKmRzdC5sbHArKyA9ICpzcmMubGxwKys7Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCXJldHVybiBFUlJfSU5WQUw7Ci0JCQkJYnJlYWs7Ci0JCQl9CiAJCX0KLQkJZmxhc2hfd3JpdGVfY21kIChpbmZvLCBzZWN0b3IsIDAsCi0JCQkJIEZMQVNIX0NNRF9XUklURV9CVUZGRVJfQ09ORklSTSk7Ci0JCXJldGNvZGUgPQotCQkJZmxhc2hfZnVsbF9zdGF0dXNfY2hlY2sgKGluZm8sIHNlY3RvciwKLQkJCQkJCSBpbmZvLT5idWZmZXJfd3JpdGVfdG91dCwKLQkJCQkJCSAiYnVmZmVyIHdyaXRlIik7CisKKwkJZmxhc2hfd3JpdGVfY21kIChpbmZvLCBzZWN0b3IsIDAsIEFNRF9DTURfV1JJVEVfQlVGRkVSX0NPTkZJUk0pOworCQlyZXRjb2RlID0gZmxhc2hfZnVsbF9zdGF0dXNfY2hlY2sgKGluZm8sIHNlY3RvciwgaW5mby0+YnVmZmVyX3dyaXRlX3RvdXQsCisJCQkJCQkgICAiYnVmZmVyIHdyaXRlIik7CisJCXJldHVybiByZXRjb2RlOworCisJZGVmYXVsdDoKKwkJZGVidWcgKCJVbmtub3duIENvbW1hbmQgU2V0XG4iKTsKKwkJcmV0dXJuIEVSUl9JTlZBTDsKIAl9Ci0JZmxhc2hfd3JpdGVfY21kIChpbmZvLCBzZWN0b3IsIDAsIEZMQVNIX0NNRF9DTEVBUl9TVEFUVVMpOwotCXJldHVybiByZXRjb2RlOwogfQogI2VuZGlmIC8qIENGR19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFICovCiAjZW5kaWYgLyogQ0ZHX0ZMQVNIX0NGSSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jdDY5MDAwLmMgYi9kcml2ZXJzL2N0NjkwMDAuYwppbmRleCA3YmNmMTlmLi4yOWQ4MmU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2N0NjkwMDAuYworKysgYi9kcml2ZXJzL2N0NjkwMDAuYwpAQCAtMjcyLDYgKzI3Miw5IEBACiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RmYl9jaGlwc19wcm9wZXJ0aWVzIGNoaXBzW10gPSB7CiAJe1BDSV9ERVZJQ0VfSURfQ1RfNjkwMDAsIDB4MjAwMDAwLCAxLCA0LCAtMiwgMywgMjU3LCAxMDAsIDIyMH0sCisjaWZkZWYgQ09ORklHX1VTRV9DUENJRFZJCisJe1BDSV9ERVZJQ0VfSURfQ1RfNjkwMzAsIDB4NDAwMDAwLCAxLCA0LCAtMiwgMywgMjU3LCAxMDAsIDIyMH0sCisjZW5kaWYKIAl7UENJX0RFVklDRV9JRF9DVF82NTU1NSwgMHgxMDAwMDAsIDE2LCA0LCAwLCAxLCAyNTUsIDQ4LCAyMjB9LAkvKiBOT1QgVEVTVEVEICovCiAJezAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CS8qIFRlcm1pbmF0b3IgKi8KIH07CkBAIC05NTcsNiArOTYwLDkgQEAKICovCiBzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3VwcG9ydGVkW10gPSB7CiAJe1BDSV9WRU5ET1JfSURfQ1QsIFBDSV9ERVZJQ0VfSURfQ1RfNjkwMDB9LAorI2lmZGVmIENPTkZJR19VU0VfQ1BDSURWSQorCXtQQ0lfVkVORE9SX0lEX0NULCBQQ0lfREVWSUNFX0lEX0NUXzY5MDMwfSwKKyNlbmRpZgogCXt9CiB9OwogCkBAIC0xMTIxLDcgKzExMjcsMjIgQEAKIAlwR0QtPmNwckJhc2UgPSBwY2lfbWVtX2Jhc2U7CS8qIER1bW15ICovCiAJLyogc2V0IHVwIEhhcmR3YXJlICovCiAKKyNpZmRlZiBDT05GSUdfVVNFX0NQQ0lEVkkKKwlpZiAoZGV2aWNlX2lkID09IFBDSV9ERVZJQ0VfSURfQ1RfNjkwMzApIHsKKwkJY3RXcml0ZSAoQ1RfTVNSX1dfTywgMHgwYik7CisJCWN0V3JpdGUgKDB4M2NkLCAweDEzKTsKKwkJY3RXcml0ZV9pIChDVF9GUF9PLCAweDAyLCAweDAwKTsKKwkJY3RXcml0ZV9pIChDVF9GUF9PLCAweDA1LCAweDAwKTsKKwkJY3RXcml0ZV9pIChDVF9GUF9PLCAweDA2LCAweDAwKTsKKwkJY3RXcml0ZSAoMHgzYzIsIDB4MGIpOworCQljdFdyaXRlX2kgKENUX0ZQX08sIDB4MDIsIDB4MTApOworCQljdFdyaXRlX2kgKENUX0ZQX08sIDB4MDEsIDB4MDkpOworCX0gZWxzZSB7CisJCWN0V3JpdGUgKENUX01TUl9XX08sIDB4MDEpOworCX0KKyNlbHNlCiAJY3RXcml0ZSAoQ1RfTVNSX1dfTywgMHgwMSk7CisjZW5kaWYKIAogCS8qIHNldCB0aGUgZXh0ZW5kZWQgUmVnaXN0ZXJzICovCiAJY3RMb2FkUmVncyAoQ1RfWFJfTywgeHJlZyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RhdGFmbGFzaC5jIGIvZHJpdmVycy9kYXRhZmxhc2guYwppbmRleCBkZWQwMzk1Li4xN2ViODU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RhdGFmbGFzaC5jCisrKyBiL2RyaXZlcnMvZGF0YWZsYXNoLmMKQEAgLTE3NCw4ICsxNzQsNyBAQAogLyogRnVuY3Rpb24gTmFtZSAgICAgICA6IEFUOTFGX0RhdGFmbGFzaFNlbGVjdCAJCQkJCSovCiAvKiBPYmplY3QgICAgICAgICAgICAgIDogU2VsZWN0IHRoZSBjb3JyZWN0IGRldmljZQkJCQkqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQVQ5MVBTX0RhdGFGbGFzaCBBVDkxRl9EYXRhZmxhc2hTZWxlY3QgKEFUOTFQU19EYXRhRmxhc2ggcEZsYXNoLAotCQkJCQkJCQkJCXVuc2lnbmVkIGludCAqYWRkcikKK0FUOTFQU19EYXRhRmxhc2ggQVQ5MUZfRGF0YWZsYXNoU2VsZWN0IChBVDkxUFNfRGF0YUZsYXNoIHBGbGFzaCwgdW5zaWduZWQgbG9uZyAqYWRkcikKIHsKIAljaGFyIGFkZHJfdmFsaWQgPSAwOwogCWludCBpOwpAQCAtMjkxLDcgKzI5MCw3IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBpbnQgcmVhZF9kYXRhZmxhc2ggKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLCBjaGFyICpyZXN1bHQpCiB7Ci0JaW50IEFkZHJUb1JlYWQgPSBhZGRyOworCXVuc2lnbmVkIGxvbmcgQWRkclRvUmVhZCA9IGFkZHI7CiAJQVQ5MVBTX0RhdGFGbGFzaCBwRmxhc2ggPSAmRGF0YUZsYXNoSW5zdDsKIAogCXBGbGFzaCA9IEFUOTFGX0RhdGFmbGFzaFNlbGVjdCAocEZsYXNoLCAmQWRkclRvUmVhZCk7CkBAIC0zMTMsNyArMzEyLDcgQEAKIGludCB3cml0ZV9kYXRhZmxhc2ggKHVuc2lnbmVkIGxvbmcgYWRkcl9kZXN0LCB1bnNpZ25lZCBsb25nIGFkZHJfc3JjLAogCQkgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKLQlpbnQgQWRkclRvV3JpdGUgPSBhZGRyX2Rlc3Q7CisJdW5zaWduZWQgbG9uZyBBZGRyVG9Xcml0ZSA9IGFkZHJfZGVzdDsKIAlBVDkxUFNfRGF0YUZsYXNoIHBGbGFzaCA9ICZEYXRhRmxhc2hJbnN0OwogCiAJcEZsYXNoID0gQVQ5MUZfRGF0YWZsYXNoU2VsZWN0IChwRmxhc2gsICZBZGRyVG9Xcml0ZSk7CkBAIC0zMzAsNyArMzI5LDcgQEAKIAlpZiAoQWRkclRvV3JpdGUgPT0gLTEpCiAJCXJldHVybiAtMTsKIAotCXJldHVybiBBVDkxRl9EYXRhRmxhc2hXcml0ZSAocEZsYXNoLCAoY2hhciAqKSBhZGRyX3NyYywgQWRkclRvV3JpdGUsIHNpemUpOworCXJldHVybiBBVDkxRl9EYXRhRmxhc2hXcml0ZSAocEZsYXNoLCAodWNoYXIgKilhZGRyX3NyYywgQWRkclRvV3JpdGUsIHNpemUpOwogfQogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTgwNDIuYyBiL2RyaXZlcnMvaTgwNDIuYwppbmRleCBlMjE5NzhkLi4yMmMyYTRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2k4MDQyLmMKKysrIGIvZHJpdmVycy9pODA0Mi5jCkBAIC0xMiw3ICsxMiw3IEBACiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQogICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqCiAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMjksNiArMjksMTQgQEAKIAogI2lmZGVmIENPTkZJR19JODA0Ml9LQkQKIAorI2lmZGVmIENPTkZJR19VU0VfQ1BDSURWSQorZXh0ZXJuIHU4ICBndF9jcGNpZHZpX2luOCh1MzIgb2Zmc2V0KTsKK2V4dGVybiB2b2lkIGd0X2NwY2lkdmlfb3V0OCh1MzIgb2Zmc2V0LCB1OCBkYXRhKTsKKworI2RlZmluZSBpbjgoYSkJICAgZ3RfY3BjaWR2aV9pbjgoYSkKKyNkZWZpbmUgb3V0OChhLCBiKSBndF9jcGNpZHZpX291dDgoYSxiKQorI2VuZGlmCisKICNpbmNsdWRlIDxpODA0Mi5oPgogCiAvKiBkZWZpbmVzICovCkBAIC00MSwxMCArNDksMTAgQEAKIAogLyogbG9jYWxzICovCiAKLXN0YXRpYyBpbnQgIGtiZF9pbnB1dCAgICA9IC0xOyAgICAgICAgICAvKiBubyBpbnB1dCB5ZXQgKi8KLXN0YXRpYyBpbnQgIGtiZF9tYXBwaW5nICA9IEtCRF9VUzsgICAgICAvKiBkZWZhdWx0IFVTIGtleWJvYXJkICovCi1zdGF0aWMgaW50ICBrYmRfZmxhZ3MgICAgPSBOT1JNQUw7ICAgICAgLyogYWZ0ZXIgcmVzZXQgKi8KLXN0YXRpYyBpbnQgIGtiZF9zdGF0ZSAgICA9IDA7ICAgICAgICAgICAvKiB1bnNoaWZ0IGNvZGUgKi8KK3N0YXRpYyBpbnQgIGtiZF9pbnB1dAkgPSAtMTsJCS8qIG5vIGlucHV0IHlldCAqLworc3RhdGljIGludCAga2JkX21hcHBpbmcJID0gS0JEX1VTOwkvKiBkZWZhdWx0IFVTIGtleWJvYXJkICovCitzdGF0aWMgaW50ICBrYmRfZmxhZ3MJID0gTk9STUFMOwkvKiBhZnRlciByZXNldCAqLworc3RhdGljIGludCAga2JkX3N0YXRlCSA9IDA7CQkvKiB1bnNoaWZ0IGNvZGUgKi8KIAogc3RhdGljIHZvaWQga2JkX2NvbnZfY2hhciAodW5zaWduZWQgY2hhciBzY2FuX2NvZGUpOwogc3RhdGljIHZvaWQga2JkX2xlZF9zZXQgKHZvaWQpOwpAQCAtNjAsMjMwICs2OCwyMzAgQEAKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIga2JkX2ZjdF9tYXAgWzE0NF0gPQogICAgIHsgLyoga2JkX2ZjdF9tYXAgdGFibGUgZm9yIHNjYW4gY29kZSAqLwotICAgIDAsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsIC8qIHNjYW4gIDAtIDcgKi8KLSAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAvKiBzY2FuICA4LSBGICovCi0gICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgLyogc2NhbiAxMC0xNyAqLwotICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQ04sICAgQVMsICAgQVMsIC8qIHNjYW4gMTgtMUYgKi8KLSAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAvKiBzY2FuIDIwLTI3ICovCi0gICBBUywgICBBUywgICBTSCwgICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgLyogc2NhbiAyOC0yRiAqLwotICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgU0gsICAgQVMsIC8qIHNjYW4gMzAtMzcgKi8KLSAgIEFTLCAgIEFTLCAgIENQLCAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgICAwLCAvKiBzY2FuIDM4LTNGICovCi0gICAgMCwgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICBOTSwgICBTVCwgICBFUywgLyogc2NhbiA0MC00NyAqLwotICAgRVMsICAgRVMsICAgRVMsICAgRVMsICAgRVMsICAgRVMsICAgRVMsICAgRVMsIC8qIHNjYW4gNDgtNEYgKi8KLSAgIEVTLCAgIEVTLCAgIEVTLCAgIEVTLCAgIDAsICAgIDAsICAgIEFTLCAgICAwLCAvKiBzY2FuIDUwLTU3ICovCi0gICAgMCwgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAgMCwgLyogc2NhbiA1OC01RiAqLwotICAgIDAsICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KLSAgICAwLCAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgICAwLCAvKiBzY2FuIDY4LTZGICovCi0gICBBUywgICAwLCAgICAwLCAgICBBUywgICAwLCAgICAwLCAgICBBUywgICAgMCwgLyogc2NhbiA3MC03NyAqLwotICAgIDAsICAgQVMsICAgMCwgICAgMCwgICAgMCwgICAgQVMsICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KLSAgIEFTLCAgIENOLCAgIEFTLCAgIEFTLCAgIEFLLCAgIFNULCAgIEVYLCAgIEVYLCAvKiBlbmhhbmNlZCAgICovCi0gICBBUywgICBFWCwgICBFWCwgICBBUywgICBFWCwgICBBUywgICBFWCwgICBFWCAgLyogZW5oYW5jZWQgICAqLworICAgIDAsCSBBUywgICBBUywgICBBUywgICBBUywJIEFTLCAgIEFTLCAgIEFTLCAvKiBzY2FuICAwLSA3ICovCisgICBBUywJIEFTLCAgIEFTLCAgIEFTLCAgIEFTLAkgQVMsICAgQVMsICAgQVMsIC8qIHNjYW4gIDgtIEYgKi8KKyAgIEFTLAkgQVMsICAgQVMsICAgQVMsICAgQVMsCSBBUywgICBBUywgICBBUywgLyogc2NhbiAxMC0xNyAqLworICAgQVMsCSBBUywgICBBUywgICBBUywgICBBUywJIENOLCAgIEFTLCAgIEFTLCAvKiBzY2FuIDE4LTFGICovCisgICBBUywJIEFTLCAgIEFTLCAgIEFTLCAgIEFTLAkgQVMsICAgQVMsICAgQVMsIC8qIHNjYW4gMjAtMjcgKi8KKyAgIEFTLAkgQVMsICAgU0gsICAgQVMsICAgQVMsCSBBUywgICBBUywgICBBUywgLyogc2NhbiAyOC0yRiAqLworICAgQVMsCSBBUywgICBBUywgICBBUywgICBBUywJIEFTLCAgIFNILCAgIEFTLCAvKiBzY2FuIDMwLTM3ICovCisgICBBUywJIEFTLCAgIENQLCAgIDAsCSAgIDAsCSAwLCAgICAwLCAgICAgMCwgLyogc2NhbiAzOC0zRiAqLworICAgIDAsCSAwLCAgICAwLCAgICAwLAkgICAwLAkgTk0sICAgU1QsICAgRVMsIC8qIHNjYW4gNDAtNDcgKi8KKyAgIEVTLAkgRVMsICAgRVMsICAgRVMsICAgRVMsCSBFUywgICBFUywgICBFUywgLyogc2NhbiA0OC00RiAqLworICAgRVMsCSBFUywgICBFUywgICBFUywgICAwLAkgMCwgICAgQVMsICAgIDAsIC8qIHNjYW4gNTAtNTcgKi8KKyAgICAwLAkgMCwgICAgMCwgICAgMCwJICAgMCwJIDAsICAgIDAsICAgICAwLCAvKiBzY2FuIDU4LTVGICovCisgICAgMCwJIDAsICAgIDAsICAgIDAsCSAgIDAsCSAwLCAgICAwLCAgICAgMCwgLyogc2NhbiA2MC02NyAqLworICAgIDAsCSAwLCAgICAwLCAgICAwLAkgICAwLAkgMCwgICAgMCwgICAgIDAsIC8qIHNjYW4gNjgtNkYgKi8KKyAgIEFTLAkgMCwgICAgMCwgICAgQVMsICAgMCwJIDAsICAgIEFTLCAgICAwLCAvKiBzY2FuIDcwLTc3ICovCisgICAgMCwJIEFTLCAgIDAsICAgIDAsCSAgIDAsCSBBUywgICAwLCAgICAgMCwgLyogc2NhbiA3OC03RiAqLworICAgQVMsCSBDTiwgICBBUywgICBBUywgICBBSywJIFNULCAgIEVYLCAgIEVYLCAvKiBlbmhhbmNlZCAgICovCisgICBBUywJIEVYLCAgIEVYLCAgIEFTLCAgIEVYLAkgQVMsICAgRVgsICAgRVgJIC8qIGVuaGFuY2VkICAgKi8KICAgICB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBrYmRfa2V5X21hcCBbMl1bNV1bMTQ0XSA9CiAgICAgewogICAgIHsgLyogVVMga2V5Ym9hcmQgKi8KICAgICB7IC8qIHVuc2hpZnQgY29kZSAqLwotICAgIDAsICAweDFiLCAgICcxJywgICAnMicsICAgJzMnLCAgICc0JywgICAnNScsICAgJzYnLCAgICAvKiBzY2FuICAwLSA3ICovCi0gICc3JywgICAnOCcsICAgJzknLCAgICcwJywgICAnLScsICAgJz0nLCAgMHgwOCwgICdcdCcsICAgIC8qIHNjYW4gIDgtIEYgKi8KLSAgJ3EnLCAgICd3JywgICAnZScsICAgJ3InLCAgICd0JywgICAneScsICAgJ3UnLCAgICdpJywgICAgLyogc2NhbiAxMC0xNyAqLwotICAnbycsICAgJ3AnLCAgICdbJywgICAnXScsICAnXHInLCAgIENOLCAgICAnYScsICAgJ3MnLCAgICAvKiBzY2FuIDE4LTFGICovCi0gICdkJywgICAnZicsICAgJ2cnLCAgICdoJywgICAnaicsICAgJ2snLCAgICdsJywgICAnOycsICAgIC8qIHNjYW4gMjAtMjcgKi8KLSAnXCcnLCAgICdgJywgICBTSCwgICAnXFwnLCAgICd6JywgICAneCcsICAgJ2MnLCAgICd2JywgICAgLyogc2NhbiAyOC0yRiAqLwotICAnYicsICAgJ24nLCAgICdtJywgICAnLCcsICAgJy4nLCAgICcvJywgICBTSCwgICAgJyonLCAgICAvKiBzY2FuIDMwLTM3ICovCi0gICcgJywgICAnICcsICAgQ1AsICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gMzgtM0YgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICBOTSwgICAgU1QsICAgICc3JywgICAgLyogc2NhbiA0MC00NyAqLwotICAnOCcsICAgJzknLCAgICctJywgICAnNCcsICAgJzUnLCAgICc2JywgICAnKycsICAgJzEnLCAgICAvKiBzY2FuIDQ4LTRGICovCi0gICcyJywgICAnMycsICAgJzAnLCAgICcuJywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNTAtNTcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA1OC01RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDYwLTY3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNjgtNkYgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA3MC03NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDc4LTdGICovCi0gICdccicsICAgQ04sICAgJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsICAgIC8qIGV4dGVuZGVkICovCi0gICAgMCwgICAnRCcsICAgJ0MnLCAgICAgMCwgICAnQicsICAgICAwLCAgICAnQCcsICAnUCcgICAgIC8qIGV4dGVuZGVkICovCisgICAgMCwJMHgxYiwJJzEnLCAgICcyJywgICAnMycsICAgJzQnLCAgICc1JywgICAnNicsCSAgIC8qIHNjYW4gIDAtIDcgKi8KKyAgJzcnLAkgJzgnLAknOScsICAgJzAnLCAgICctJywgICAnPScsICAweDA4LCAgJ1x0JywJICAgLyogc2NhbiAgOC0gRiAqLworICAncScsCSAndycsCSdlJywgICAncicsICAgJ3QnLCAgICd5JywgICAndScsICAgJ2knLAkgICAvKiBzY2FuIDEwLTE3ICovCisgICdvJywJICdwJywJJ1snLCAgICddJywgICdccicsICAgQ04sICAgICdhJywgICAncycsCSAgIC8qIHNjYW4gMTgtMUYgKi8KKyAgJ2QnLAkgJ2YnLAknZycsICAgJ2gnLCAgICdqJywgICAnaycsICAgJ2wnLCAgICc7JywJICAgLyogc2NhbiAyMC0yNyAqLworICdcJycsCSAnYCcsCVNILCAgICdcXCcsICAgJ3onLCAgICd4JywgICAnYycsICAgJ3YnLAkgICAvKiBzY2FuIDI4LTJGICovCisgICdiJywJICduJywJJ20nLCAgICcsJywgICAnLicsICAgJy8nLCAgIFNILAkgICAnKicsCSAgIC8qIHNjYW4gMzAtMzcgKi8KKyAgJyAnLAkgJyAnLAlDUCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gMzgtM0YgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgIE5NLCAgICBTVCwJICAgJzcnLAkgICAvKiBzY2FuIDQwLTQ3ICovCisgICc4JywJICc5JywJJy0nLCAgICc0JywgICAnNScsICAgJzYnLCAgICcrJywgICAnMScsCSAgIC8qIHNjYW4gNDgtNEYgKi8KKyAgJzInLAkgJzMnLAknMCcsICAgJy4nLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDUwLTU3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA1OC01RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNjAtNjcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDY4LTZGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA3MC03NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsCSAgIC8qIGV4dGVuZGVkICovCisgICAgMCwJICdEJywJJ0MnLAkgMCwgICAnQicsICAgICAwLCAgICAnQCcsICAnUCcJICAgLyogZXh0ZW5kZWQgKi8KICAgICB9LAogICAgIHsgLyogc2hpZnQgY29kZSAqLwotICAgIDAsICAweDFiLCAgICchJywgICAnQCcsICAgJyMnLCAgICckJywgICAnJScsICAgJ14nLCAgICAvKiBzY2FuICAwLSA3ICovCi0gICcmJywgICAnKicsICAgJygnLCAgICcpJywgICAnXycsICAgJysnLCAgMHgwOCwgICdcdCcsICAgIC8qIHNjYW4gIDgtIEYgKi8KLSAgJ1EnLCAgICdXJywgICAnRScsICAgJ1InLCAgICdUJywgICAnWScsICAgJ1UnLCAgICdJJywgICAgLyogc2NhbiAxMC0xNyAqLwotICAnTycsICAgJ1AnLCAgICd7JywgICAnfScsICAnXHInLCAgIENOLCAgICAnQScsICAgJ1MnLCAgICAvKiBzY2FuIDE4LTFGICovCi0gICdEJywgICAnRicsICAgJ0cnLCAgICdIJywgICAnSicsICAgJ0snLCAgICdMJywgICAnOicsICAgIC8qIHNjYW4gMjAtMjcgKi8KLSAgJyInLCAgICd+JywgICBTSCwgICAgJ3wnLCAgICdaJywgICAnWCcsICAgJ0MnLCAgICdWJywgICAgLyogc2NhbiAyOC0yRiAqLwotICAnQicsICAgJ04nLCAgICdNJywgICAnPCcsICAgJz4nLCAgICc/JywgICBTSCwgICAgJyonLCAgICAvKiBzY2FuIDMwLTM3ICovCi0gICcgJywgICAnICcsICAgQ1AsICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gMzgtM0YgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICBOTSwgICAgU1QsICAgICc3JywgICAgLyogc2NhbiA0MC00NyAqLwotICAnOCcsICAgJzknLCAgICctJywgICAnNCcsICAgJzUnLCAgICc2JywgICAnKycsICAgJzEnLCAgICAvKiBzY2FuIDQ4LTRGICovCi0gICcyJywgICAnMycsICAgJzAnLCAgICcuJywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNTAtNTcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA1OC01RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDYwLTY3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNjgtNkYgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA3MC03NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDc4LTdGICovCi0gICdccicsICAgQ04sICAgJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsICAgIC8qIGV4dGVuZGVkICovCi0gICAgMCwgICAnRCcsICAgJ0MnLCAgICAgMCwgICAnQicsICAgICAwLCAgICdAJywgICAnUCcgICAgIC8qIGV4dGVuZGVkICovCisgICAgMCwJMHgxYiwJJyEnLCAgICdAJywgICAnIycsICAgJyQnLCAgICclJywgICAnXicsCSAgIC8qIHNjYW4gIDAtIDcgKi8KKyAgJyYnLAkgJyonLAknKCcsICAgJyknLCAgICdfJywgICAnKycsICAweDA4LCAgJ1x0JywJICAgLyogc2NhbiAgOC0gRiAqLworICAnUScsCSAnVycsCSdFJywgICAnUicsICAgJ1QnLCAgICdZJywgICAnVScsICAgJ0knLAkgICAvKiBzY2FuIDEwLTE3ICovCisgICdPJywJICdQJywJJ3snLCAgICd9JywgICdccicsICAgQ04sICAgICdBJywgICAnUycsCSAgIC8qIHNjYW4gMTgtMUYgKi8KKyAgJ0QnLAkgJ0YnLAknRycsICAgJ0gnLCAgICdKJywgICAnSycsICAgJ0wnLCAgICc6JywJICAgLyogc2NhbiAyMC0yNyAqLworICAnIicsCSAnficsCVNILCAgICAnfCcsICAgJ1onLCAgICdYJywgICAnQycsICAgJ1YnLAkgICAvKiBzY2FuIDI4LTJGICovCisgICdCJywJICdOJywJJ00nLCAgICc8JywgICAnPicsICAgJz8nLCAgIFNILAkgICAnKicsCSAgIC8qIHNjYW4gMzAtMzcgKi8KKyAgJyAnLAkgJyAnLAlDUCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gMzgtM0YgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgIE5NLCAgICBTVCwJICAgJzcnLAkgICAvKiBzY2FuIDQwLTQ3ICovCisgICc4JywJICc5JywJJy0nLCAgICc0JywgICAnNScsICAgJzYnLCAgICcrJywgICAnMScsCSAgIC8qIHNjYW4gNDgtNEYgKi8KKyAgJzInLAkgJzMnLAknMCcsICAgJy4nLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDUwLTU3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA1OC01RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNjAtNjcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDY4LTZGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA3MC03NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsCSAgIC8qIGV4dGVuZGVkICovCisgICAgMCwJICdEJywJJ0MnLAkgMCwgICAnQicsICAgICAwLCAgICdAJywgICAnUCcJICAgLyogZXh0ZW5kZWQgKi8KICAgICB9LAogICAgIHsgLyogY29udHJvbCBjb2RlICovCi0gMHhmZiwgIDB4MWIsICAweGZmLCAgMHgwMCwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgIC8qIHNjYW4gIDAtIDcgKi8KLSAweDFlLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHgxZiwgIDB4ZmYsICAweGZmLCAgJ1x0JywgICAgLyogc2NhbiAgOC0gRiAqLwotIDB4MTEsICAweDE3LCAgMHgwNSwgIDB4MTIsICAweDE0LCAgMHgxOSwgIDB4MTUsICAweDA5LCAgICAvKiBzY2FuIDEwLTE3ICovCi0gMHgwZiwgIDB4MTAsICAweDFiLCAgMHgxZCwgICdccicsICAgQ04sICAgMHgwMSwgIDB4MTMsICAgIC8qIHNjYW4gMTgtMUYgKi8KLSAweDA0LCAgMHgwNiwgIDB4MDcsICAweDA4LCAgMHgwYSwgIDB4MGIsICAweDBjLCAgMHhmZiwgICAgLyogc2NhbiAyMC0yNyAqLwotIDB4ZmYsICAweDFjLCAgIFNILCAgIDB4ZmYsICAweDFhLCAgMHgxOCwgIDB4MDMsICAweDE2LCAgICAvKiBzY2FuIDI4LTJGICovCi0gMHgwMiwgIDB4MGUsICAweDBkLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgIFNILCAgIDB4ZmYsICAgIC8qIHNjYW4gMzAtMzcgKi8KLSAweGZmLCAgMHhmZiwgICBDUCwgICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICAgLyogc2NhbiAzOC0zRiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgIE5NLCAgICBTVCwgICAweGZmLCAgICAvKiBzY2FuIDQwLTQ3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgIC8qIHNjYW4gNDgtNEYgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICAgLyogc2NhbiA1MC01NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgICAvKiBzY2FuIDU4LTVGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgIC8qIHNjYW4gNjAtNjcgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICAgLyogc2NhbiA2OC02RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgICAvKiBzY2FuIDcwLTc3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAweGZmLCAgMHhmZiwgICAgLyogZXh0ZW5kZWQgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiAgICAgLyogZXh0ZW5kZWQgKi8KKyAweGZmLAkweDFiLCAgMHhmZiwgIDB4MDAsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLAkgICAvKiBzY2FuICAwLSA3ICovCisgMHgxZSwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHgxZiwgIDB4ZmYsICAweGZmLCAgJ1x0JywJICAgLyogc2NhbiAgOC0gRiAqLworIDB4MTEsCTB4MTcsICAweDA1LCAgMHgxMiwgIDB4MTQsICAweDE5LCAgMHgxNSwgIDB4MDksCSAgIC8qIHNjYW4gMTAtMTcgKi8KKyAweDBmLAkweDEwLCAgMHgxYiwgIDB4MWQsICAnXHInLCAgIENOLCAgIDB4MDEsICAweDEzLAkgICAvKiBzY2FuIDE4LTFGICovCisgMHgwNCwJMHgwNiwgIDB4MDcsICAweDA4LCAgMHgwYSwgIDB4MGIsICAweDBjLCAgMHhmZiwJICAgLyogc2NhbiAyMC0yNyAqLworIDB4ZmYsCTB4MWMsCVNILCAgIDB4ZmYsICAweDFhLCAgMHgxOCwgIDB4MDMsICAweDE2LAkgICAvKiBzY2FuIDI4LTJGICovCisgMHgwMiwJMHgwZSwgIDB4MGQsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgU0gsCSAgMHhmZiwJICAgLyogc2NhbiAzMC0zNyAqLworIDB4ZmYsCTB4ZmYsCUNQLCAgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLAkgICAvKiBzY2FuIDM4LTNGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICBOTSwgICAgU1QsCSAgMHhmZiwJICAgLyogc2NhbiA0MC00NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsCSAgIC8qIHNjYW4gNDgtNEYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLAkgICAvKiBzY2FuIDUwLTU3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwJICAgLyogc2NhbiA1OC01RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsCSAgIC8qIHNjYW4gNjAtNjcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLAkgICAvKiBzY2FuIDY4LTZGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwJICAgLyogc2NhbiA3MC03NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsCSAgIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgMHhmZiwgIDB4ZmYsCSAgIC8qIGV4dGVuZGVkICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZgkgICAvKiBleHRlbmRlZCAqLwogICAgIH0sCiAgICAgeyAvKiBub24gbnVtZXJpYyBjb2RlICovCi0gICAgMCwgIDB4MWIsICAgJzEnLCAgICcyJywgICAnMycsICAgJzQnLCAgICc1JywgICAnNicsICAgIC8qIHNjYW4gIDAtIDcgKi8KLSAgJzcnLCAgICc4JywgICAnOScsICAgJzAnLCAgICctJywgICAnPScsICAweDA4LCAgJ1x0JywgICAgLyogc2NhbiAgOC0gRiAqLwotICAncScsICAgJ3cnLCAgICdlJywgICAncicsICAgJ3QnLCAgICd5JywgICAndScsICAgJ2knLCAgICAvKiBzY2FuIDEwLTE3ICovCi0gICdvJywgICAncCcsICAgJ1snLCAgICddJywgICdccicsICAgQ04sICAgICdhJywgICAncycsICAgIC8qIHNjYW4gMTgtMUYgKi8KLSAgJ2QnLCAgICdmJywgICAnZycsICAgJ2gnLCAgICdqJywgICAnaycsICAgJ2wnLCAgICc7JywgICAgLyogc2NhbiAyMC0yNyAqLwotICdcJycsICAgJ2AnLCAgIFNILCAgICdcXCcsICAgJ3onLCAgICd4JywgICAnYycsICAgJ3YnLCAgICAvKiBzY2FuIDI4LTJGICovCi0gICdiJywgICAnbicsICAgJ20nLCAgICcsJywgICAnLicsICAgJy8nLCAgIFNILCAgICAnKicsICAgIC8qIHNjYW4gMzAtMzcgKi8KLSAgJyAnLCAgICcgJywgICBDUCwgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiAzOC0zRiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIE5NLCAgICBTVCwgICAgJ3cnLCAgICAvKiBzY2FuIDQwLTQ3ICovCi0gICd4JywgICAneScsICAgJ2wnLCAgICd0JywgICAndScsICAgJ3YnLCAgICdtJywgICAncScsICAgIC8qIHNjYW4gNDgtNEYgKi8KLSAgJ3InLCAgICdzJywgICAncCcsICAgJ24nLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA1MC01NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDU4LTVGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNjAtNjcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA2OC02RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDcwLTc3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAgJ0YnLCAgICdBJywgICAgLyogZXh0ZW5kZWQgKi8KLSAgICAwLCAgICdEJywgICAnQycsICAgICAwLCAgICdCJywgICAgIDAsICAgICdAJywgICdQJyAgICAgLyogZXh0ZW5kZWQgKi8KKyAgICAwLAkweDFiLAknMScsICAgJzInLCAgICczJywgICAnNCcsICAgJzUnLCAgICc2JywJICAgLyogc2NhbiAgMC0gNyAqLworICAnNycsCSAnOCcsCSc5JywgICAnMCcsICAgJy0nLCAgICc9JywgIDB4MDgsICAnXHQnLAkgICAvKiBzY2FuICA4LSBGICovCisgICdxJywJICd3JywJJ2UnLCAgICdyJywgICAndCcsICAgJ3knLCAgICd1JywgICAnaScsCSAgIC8qIHNjYW4gMTAtMTcgKi8KKyAgJ28nLAkgJ3AnLAknWycsICAgJ10nLCAgJ1xyJywgICBDTiwgICAgJ2EnLCAgICdzJywJICAgLyogc2NhbiAxOC0xRiAqLworICAnZCcsCSAnZicsCSdnJywgICAnaCcsICAgJ2onLCAgICdrJywgICAnbCcsICAgJzsnLAkgICAvKiBzY2FuIDIwLTI3ICovCisgJ1wnJywJICdgJywJU0gsICAgJ1xcJywgICAneicsICAgJ3gnLCAgICdjJywgICAndicsCSAgIC8qIHNjYW4gMjgtMkYgKi8KKyAgJ2InLAkgJ24nLAknbScsICAgJywnLCAgICcuJywgICAnLycsICAgU0gsCSAgICcqJywJICAgLyogc2NhbiAzMC0zNyAqLworICAnICcsCSAnICcsCUNQLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiAzOC0zRiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgTk0sICAgIFNULAkgICAndycsCSAgIC8qIHNjYW4gNDAtNDcgKi8KKyAgJ3gnLAkgJ3knLAknbCcsICAgJ3QnLCAgICd1JywgICAndicsICAgJ20nLCAgICdxJywJICAgLyogc2NhbiA0OC00RiAqLworICAncicsCSAncycsCSdwJywgICAnbicsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNTAtNTcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDU4LTVGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA2MC02NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNjgtNkYgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDcwLTc3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA3OC03RiAqLworICAnXHInLAkgIENOLAknLycsICAgJyonLCAgICcgJywgICAgU1QsICAgJ0YnLCAgICdBJywJICAgLyogZXh0ZW5kZWQgKi8KKyAgICAwLAkgJ0QnLAknQycsCSAwLCAgICdCJywgICAgIDAsICAgICdAJywgICdQJwkgICAvKiBleHRlbmRlZCAqLwogICAgIH0sCiAgICAgeyAvKiByaWdodCBhbHQgbW9kZSAtIG5vdCB1c2VkIGluIFVTIGtleWJvYXJkICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gIDAgLSA3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gIDggLSBGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMTAgLTE3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMTggLTFGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMjAgLTI3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMjggLTJGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMzAgLTM3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMzggLTNGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDAgLTQ3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDggLTRGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNTAgLTU3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNTggLTVGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjAgLTY3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjggLTZGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzAgLTc3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzggLTdGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIGV4dGVuZGVkICAgICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYgIC8qIGV4dGVuZGVkICAgICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbgkgMCAtIDcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuCSA4IC0gRiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMTAgLTE3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAxOCAtMUYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDIwIC0yNyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMjggLTJGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAzMCAtMzcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDM4IC0zRiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDAgLTQ3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA0OCAtNEYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDUwIC01NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNTggLTVGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA2MCAtNjcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDY4IC02RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzAgLTc3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA3OCAtN0YgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBleHRlbmRlZCAgICAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYJLyogZXh0ZW5kZWQgICAgKi8KICAgICB9CiAgICAgfSwKICAgICB7IC8qIGdlcm1hbiBrZXlib2FyZCAqLwogICAgIHsgLyogdW5zaGlmdCBjb2RlICovCi0gICAgMCwgIDB4MWIsICAgJzEnLCAgICcyJywgICAnMycsICAgJzQnLCAgICc1JywgICAnNicsIC8qIHNjYW4gIDAtIDcgKi8KLSAgJzcnLCAgICc4JywgICAnOScsICAgJzAnLCAgMHhlMSwgICdcJycsICAweDA4LCAgJ1x0JywgLyogc2NhbiAgOC0gRiAqLwotICAncScsICAgJ3cnLCAgICdlJywgICAncicsICAgJ3QnLCAgICd6JywgICAndScsICAgJ2knLCAvKiBzY2FuIDEwLTE3ICovCi0gICdvJywgICAncCcsICAweDgxLCAgICcrJywgICdccicsICAgQ04sICAgICdhJywgICAncycsIC8qIHNjYW4gMTgtMUYgKi8KLSAgJ2QnLCAgICdmJywgICAnZycsICAgJ2gnLCAgICdqJywgICAnaycsICAgJ2wnLCAgMHg5NCwgLyogc2NhbiAyMC0yNyAqLwotIDB4ODQsICAgJ14nLCAgIFNILCAgICAnIycsICAgJ3knLCAgICd4JywgICAnYycsICAgJ3YnLCAvKiBzY2FuIDI4LTJGICovCi0gICdiJywgICAnbicsICAgJ20nLCAgICcsJywgICAnLicsICAgJy0nLCAgIFNILCAgICAnKicsIC8qIHNjYW4gMzAtMzcgKi8KLSAgJyAnLCAgICcgJywgICBDUCwgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiAzOC0zRiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIE5NLCAgICBTVCwgICAgJzcnLCAvKiBzY2FuIDQwLTQ3ICovCi0gICc4JywgICAnOScsICAgJy0nLCAgICc0JywgICAnNScsICAgJzYnLCAgICcrJywgICAnMScsIC8qIHNjYW4gNDgtNEYgKi8KLSAgJzInLCAgICczJywgICAnMCcsICAgJywnLCAgICAgMCwgICAgIDAsICAgJzwnLCAgICAgMCwgLyogc2NhbiA1MC01NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDU4LTVGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA2OC02RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDcwLTc3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAgJ0YnLCAgICdBJywgLyogZXh0ZW5kZWQgKi8KLSAgICAwLCAgICdEJywgICAnQycsICAgICAwLCAgICdCJywgICAgIDAsICAgICdAJywgICdQJyAgLyogZXh0ZW5kZWQgKi8KKyAgICAwLAkweDFiLAknMScsICAgJzInLCAgICczJywgICAnNCcsICAgJzUnLCAgICc2JywgLyogc2NhbgkgMC0gNyAqLworICAnNycsCSAnOCcsCSc5JywgICAnMCcsICAweGUxLCAgJ1wnJywgIDB4MDgsICAnXHQnLCAvKiBzY2FuCSA4LSBGICovCisgICdxJywJICd3JywJJ2UnLCAgICdyJywgICAndCcsICAgJ3onLCAgICd1JywgICAnaScsIC8qIHNjYW4gMTAtMTcgKi8KKyAgJ28nLAkgJ3AnLCAgMHg4MSwgICAnKycsICAnXHInLCAgIENOLCAgICAnYScsICAgJ3MnLCAvKiBzY2FuIDE4LTFGICovCisgICdkJywJICdmJywJJ2cnLCAgICdoJywgICAnaicsICAgJ2snLCAgICdsJywgIDB4OTQsIC8qIHNjYW4gMjAtMjcgKi8KKyAweDg0LAkgJ14nLAlTSCwgICAgJyMnLCAgICd5JywgICAneCcsICAgJ2MnLCAgICd2JywgLyogc2NhbiAyOC0yRiAqLworICAnYicsCSAnbicsCSdtJywgICAnLCcsICAgJy4nLCAgICctJywgICBTSCwJICAgJyonLCAvKiBzY2FuIDMwLTM3ICovCisgICcgJywJICcgJywJQ1AsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDM4LTNGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICBOTSwgICAgU1QsCSAgICc3JywgLyogc2NhbiA0MC00NyAqLworICAnOCcsCSAnOScsCSctJywgICAnNCcsICAgJzUnLCAgICc2JywgICAnKycsICAgJzEnLCAvKiBzY2FuIDQ4LTRGICovCisgICcyJywJICczJywJJzAnLCAgICcsJywJMCwgICAgIDAsICAgJzwnLCAgICAgMCwgLyogc2NhbiA1MC01NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNTgtNUYgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDYwLTY3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA2OC02RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzAtNzcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDc4LTdGICovCisgICdccicsCSAgQ04sCScvJywgICAnKicsICAgJyAnLCAgICBTVCwgICAnRicsICAgJ0EnLCAvKiBleHRlbmRlZCAqLworICAgIDAsCSAnRCcsCSdDJywJIDAsICAgJ0InLCAgICAgMCwgICAgJ0AnLCAgJ1AnCS8qIGV4dGVuZGVkICovCiAgICAgfSwKICAgICB7IC8qIHNoaWZ0IGNvZGUgKi8KLSAgICAwLCAgMHgxYiwgICAnIScsICAgJyInLCAgMHgxNSwgICAnJCcsICAgJyUnLCAgICcmJywgLyogc2NhbiAgMC0gNyAqLwotICAnLycsICAgJygnLCAgICcpJywgICAnPScsICAgJz8nLCAgICdgJywgIDB4MDgsICAnXHQnLCAvKiBzY2FuICA4LSBGICovCi0gICdRJywgICAnVycsICAgJ0UnLCAgICdSJywgICAnVCcsICAgJ1onLCAgICdVJywgICAnSScsIC8qIHNjYW4gMTAtMTcgKi8KLSAgJ08nLCAgICdQJywgIDB4OWEsICAgJyonLCAgJ1xyJywgICBDTiwgICAgJ0EnLCAgICdTJywgLyogc2NhbiAxOC0xRiAqLwotICAnRCcsICAgJ0YnLCAgICdHJywgICAnSCcsICAgJ0onLCAgICdLJywgICAnTCcsICAweDk5LCAvKiBzY2FuIDIwLTI3ICovCi0gMHg4ZSwgIDB4ZjgsICAgU0gsICAgJ1wnJywgICAnWScsICAgJ1gnLCAgICdDJywgICAnVicsIC8qIHNjYW4gMjgtMkYgKi8KLSAgJ0InLCAgICdOJywgICAnTScsICAgJzsnLCAgICc6JywgICAnXycsICAgU0gsICAgICcqJywgLyogc2NhbiAzMC0zNyAqLwotICAnICcsICAgJyAnLCAgIENQLCAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDM4LTNGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgTk0sICAgIFNULCAgICAnNycsIC8qIHNjYW4gNDAtNDcgKi8KLSAgJzgnLCAgICc5JywgICAnLScsICAgJzQnLCAgICc1JywgICAnNicsICAgJysnLCAgICcxJywgLyogc2NhbiA0OC00RiAqLwotICAnMicsICAgJzMnLCAgICcwJywgICAnLCcsICAgICAwLCAgICAgMCwgICAnPicsICAgICAwLCAvKiBzY2FuIDUwLTU3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNTgtNUYgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA2MC02NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDY4LTZGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzAtNzcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA3OC03RiAqLwotICAnXHInLCAgIENOLCAgICcvJywgICAnKicsICAgJyAnLCAgICBTVCwgICAnRicsICAgJ0EnLCAvKiBleHRlbmRlZCAqLwotICAgIDAsICAgJ0QnLCAgICdDJywgICAgIDAsICAgJ0InLCAgICAgMCwgICAnQCcsICAgJ1AnICAvKiBleHRlbmRlZCAqLworICAgIDAsCTB4MWIsCSchJywgICAnIicsICAweDE1LCAgICckJywgICAnJScsICAgJyYnLCAvKiBzY2FuCSAwLSA3ICovCisgICcvJywJICcoJywJJyknLCAgICc9JywgICAnPycsICAgJ2AnLCAgMHgwOCwgICdcdCcsIC8qIHNjYW4JIDgtIEYgKi8KKyAgJ1EnLAkgJ1cnLAknRScsICAgJ1InLCAgICdUJywgICAnWicsICAgJ1UnLCAgICdJJywgLyogc2NhbiAxMC0xNyAqLworICAnTycsCSAnUCcsICAweDlhLCAgICcqJywgICdccicsICAgQ04sICAgICdBJywgICAnUycsIC8qIHNjYW4gMTgtMUYgKi8KKyAgJ0QnLAkgJ0YnLAknRycsICAgJ0gnLCAgICdKJywgICAnSycsICAgJ0wnLCAgMHg5OSwgLyogc2NhbiAyMC0yNyAqLworIDB4OGUsCTB4ZjgsCVNILCAgICdcJycsICAgJ1knLCAgICdYJywgICAnQycsICAgJ1YnLCAvKiBzY2FuIDI4LTJGICovCisgICdCJywJICdOJywJJ00nLCAgICc7JywgICAnOicsICAgJ18nLCAgIFNILAkgICAnKicsIC8qIHNjYW4gMzAtMzcgKi8KKyAgJyAnLAkgJyAnLAlDUCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gMzgtM0YgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgIE5NLCAgICBTVCwJICAgJzcnLCAvKiBzY2FuIDQwLTQ3ICovCisgICc4JywJICc5JywJJy0nLCAgICc0JywgICAnNScsICAgJzYnLCAgICcrJywgICAnMScsIC8qIHNjYW4gNDgtNEYgKi8KKyAgJzInLAkgJzMnLAknMCcsICAgJywnLAkwLCAgICAgMCwgICAnPicsICAgICAwLCAvKiBzY2FuIDUwLTU3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA1OC01RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDY4LTZGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA3MC03NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsIC8qIGV4dGVuZGVkICovCisgICAgMCwJICdEJywJJ0MnLAkgMCwgICAnQicsICAgICAwLCAgICdAJywgICAnUCcJLyogZXh0ZW5kZWQgKi8KICAgICB9LAogICAgIHsgLyogY29udHJvbCBjb2RlICovCi0gMHhmZiwgIDB4MWIsICAweGZmLCAgMHgwMCwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gIDAtIDcgKi8KLSAweDFlLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHgxZiwgIDB4ZmYsICAweGZmLCAgJ1x0JywgLyogc2NhbiAgOC0gRiAqLwotIDB4MTEsICAweDE3LCAgMHgwNSwgIDB4MTIsICAweDE0LCAgMHgxOSwgIDB4MTUsICAweDA5LCAvKiBzY2FuIDEwLTE3ICovCi0gMHgwZiwgIDB4MTAsICAweDFiLCAgMHgxZCwgICdccicsICAgQ04sICAgMHgwMSwgIDB4MTMsIC8qIHNjYW4gMTgtMUYgKi8KLSAweDA0LCAgMHgwNiwgIDB4MDcsICAweDA4LCAgMHgwYSwgIDB4MGIsICAweDBjLCAgMHhmZiwgLyogc2NhbiAyMC0yNyAqLwotIDB4ZmYsICAweDFjLCAgIFNILCAgIDB4ZmYsICAweDFhLCAgMHgxOCwgIDB4MDMsICAweDE2LCAvKiBzY2FuIDI4LTJGICovCi0gMHgwMiwgIDB4MGUsICAweDBkLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgIFNILCAgIDB4ZmYsIC8qIHNjYW4gMzAtMzcgKi8KLSAweGZmLCAgMHhmZiwgICBDUCwgICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAzOC0zRiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgIE5NLCAgICBTVCwgICAweGZmLCAvKiBzY2FuIDQwLTQ3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDgtNEYgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA1MC01NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDU4LTVGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjAtNjcgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA2OC02RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDcwLTc3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAweGZmLCAgMHhmZiwgLyogZXh0ZW5kZWQgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiAgLyogZXh0ZW5kZWQgKi8KKyAweGZmLAkweDFiLCAgMHhmZiwgIDB4MDAsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuCSAwLSA3ICovCisgMHgxZSwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHgxZiwgIDB4ZmYsICAweGZmLCAgJ1x0JywgLyogc2NhbgkgOC0gRiAqLworIDB4MTEsCTB4MTcsICAweDA1LCAgMHgxMiwgIDB4MTQsICAweDE5LCAgMHgxNSwgIDB4MDksIC8qIHNjYW4gMTAtMTcgKi8KKyAweDBmLAkweDEwLCAgMHgxYiwgIDB4MWQsICAnXHInLCAgIENOLCAgIDB4MDEsICAweDEzLCAvKiBzY2FuIDE4LTFGICovCisgMHgwNCwJMHgwNiwgIDB4MDcsICAweDA4LCAgMHgwYSwgIDB4MGIsICAweDBjLCAgMHhmZiwgLyogc2NhbiAyMC0yNyAqLworIDB4ZmYsCTB4MWMsCVNILCAgIDB4ZmYsICAweDFhLCAgMHgxOCwgIDB4MDMsICAweDE2LCAvKiBzY2FuIDI4LTJGICovCisgMHgwMiwJMHgwZSwgIDB4MGQsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgU0gsCSAgMHhmZiwgLyogc2NhbiAzMC0zNyAqLworIDB4ZmYsCTB4ZmYsCUNQLCAgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDM4LTNGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICBOTSwgICAgU1QsCSAgMHhmZiwgLyogc2NhbiA0MC00NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDgtNEYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDUwLTU3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA1OC01RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjAtNjcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDY4LTZGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA3MC03NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgMHhmZiwgIDB4ZmYsIC8qIGV4dGVuZGVkICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZgkvKiBleHRlbmRlZCAqLwogICAgIH0sCiAgICAgeyAvKiBub24gbnVtZXJpYyBjb2RlICovCi0gICAgMCwgIDB4MWIsICAgJzEnLCAgICcyJywgICAnMycsICAgJzQnLCAgICc1JywgICAnNicsIC8qIHNjYW4gIDAtIDcgKi8KLSAgJzcnLCAgICc4JywgICAnOScsICAgJzAnLCAgMHhlMSwgICdcJycsICAweDA4LCAgJ1x0JywgLyogc2NhbiAgOC0gRiAqLwotICAncScsICAgJ3cnLCAgICdlJywgICAncicsICAgJ3QnLCAgICd6JywgICAndScsICAgJ2knLCAvKiBzY2FuIDEwLTE3ICovCi0gICdvJywgICAncCcsICAweDgxLCAgICcrJywgICdccicsICAgQ04sICAgICdhJywgICAncycsIC8qIHNjYW4gMTgtMUYgKi8KLSAgJ2QnLCAgICdmJywgICAnZycsICAgJ2gnLCAgICdqJywgICAnaycsICAgJ2wnLCAgMHg5NCwgLyogc2NhbiAyMC0yNyAqLwotIDB4ODQsICAgJ14nLCAgIFNILCAgICAgIDAsICAgJ3knLCAgICd4JywgICAnYycsICAgJ3YnLCAvKiBzY2FuIDI4LTJGICovCi0gICdiJywgICAnbicsICAgJ20nLCAgICcsJywgICAnLicsICAgJy0nLCAgIFNILCAgICAnKicsIC8qIHNjYW4gMzAtMzcgKi8KLSAgJyAnLCAgICcgJywgICBDUCwgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiAzOC0zRiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIE5NLCAgICBTVCwgICAgJ3cnLCAvKiBzY2FuIDQwLTQ3ICovCi0gICd4JywgICAneScsICAgJ2wnLCAgICd0JywgICAndScsICAgJ3YnLCAgICdtJywgICAncScsIC8qIHNjYW4gNDgtNEYgKi8KLSAgJ3InLCAgICdzJywgICAncCcsICAgJ24nLCAgICAgMCwgICAgIDAsICAgJzwnLCAgICAgMCwgLyogc2NhbiA1MC01NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDU4LTVGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA2OC02RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDcwLTc3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAgJ0YnLCAgICdBJywgLyogZXh0ZW5kZWQgKi8KLSAgICAwLCAgICdEJywgICAnQycsICAgICAwLCAgICdCJywgICAgIDAsICAgICdAJywgICdQJyAgLyogZXh0ZW5kZWQgKi8KKyAgICAwLAkweDFiLAknMScsICAgJzInLCAgICczJywgICAnNCcsICAgJzUnLCAgICc2JywgLyogc2NhbgkgMC0gNyAqLworICAnNycsCSAnOCcsCSc5JywgICAnMCcsICAweGUxLCAgJ1wnJywgIDB4MDgsICAnXHQnLCAvKiBzY2FuCSA4LSBGICovCisgICdxJywJICd3JywJJ2UnLCAgICdyJywgICAndCcsICAgJ3onLCAgICd1JywgICAnaScsIC8qIHNjYW4gMTAtMTcgKi8KKyAgJ28nLAkgJ3AnLCAgMHg4MSwgICAnKycsICAnXHInLCAgIENOLCAgICAnYScsICAgJ3MnLCAvKiBzY2FuIDE4LTFGICovCisgICdkJywJICdmJywJJ2cnLCAgICdoJywgICAnaicsICAgJ2snLCAgICdsJywgIDB4OTQsIC8qIHNjYW4gMjAtMjcgKi8KKyAweDg0LAkgJ14nLAlTSCwJIDAsICAgJ3knLCAgICd4JywgICAnYycsICAgJ3YnLCAvKiBzY2FuIDI4LTJGICovCisgICdiJywJICduJywJJ20nLCAgICcsJywgICAnLicsICAgJy0nLCAgIFNILAkgICAnKicsIC8qIHNjYW4gMzAtMzcgKi8KKyAgJyAnLAkgJyAnLAlDUCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gMzgtM0YgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgIE5NLCAgICBTVCwJICAgJ3cnLCAvKiBzY2FuIDQwLTQ3ICovCisgICd4JywJICd5JywJJ2wnLCAgICd0JywgICAndScsICAgJ3YnLCAgICdtJywgICAncScsIC8qIHNjYW4gNDgtNEYgKi8KKyAgJ3InLAkgJ3MnLAkncCcsICAgJ24nLAkwLCAgICAgMCwgICAnPCcsICAgICAwLCAvKiBzY2FuIDUwLTU3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA1OC01RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDY4LTZGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA3MC03NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsIC8qIGV4dGVuZGVkICovCisgICAgMCwJICdEJywJJ0MnLAkgMCwgICAnQicsICAgICAwLCAgICAnQCcsICAnUCcJLyogZXh0ZW5kZWQgKi8KICAgICB9LAogICAgIHsgLyogUmlnaHQgYWx0IG1vZGUgLSBpcyB1c2VkIGluIEdlcm1hbiBrZXlib2FyZCAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuICAwIC0gNyAqLwotICAneycsICAgJ1snLCAgICddJywgICAnfScsICAnXFwnLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuICA4IC0gRiAqLwotICAnQCcsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDEwIC0xNyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgICAnficsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDE4IC0xRiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDIwIC0yNyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDI4IC0yRiAqLwotIDB4ZmYsICAweGZmLCAgMHhlNiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDMwIC0zNyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDM4IC0zRiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDQwIC00NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDQ4IC00RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICAnfCcsICAweGZmLCAvKiBzY2FuIDUwIC01NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDU4IC01RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDYwIC02NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDY4IC02RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDcwIC03NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDc4IC03RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBleHRlbmRlZCAgICAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmICAvKiBleHRlbmRlZCAgICAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4JIDAgLSA3ICovCisgICd7JywJICdbJywJJ10nLCAgICd9JywgICdcXCcsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4JIDggLSBGICovCisgICdAJywJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAxMCAtMTcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgICAnficsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDE4IC0xRiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMjAgLTI3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAyOCAtMkYgKi8KKyAweGZmLAkweGZmLCAgMHhlNiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDMwIC0zNyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMzggLTNGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA0MCAtNDcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDQ4IC00RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgICd8JywgIDB4ZmYsIC8qIHNjYW4gNTAgLTU3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA1OCAtNUYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDYwIC02NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjggLTZGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA3MCAtNzcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDc4IC03RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIGV4dGVuZGVkICAgICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZgkvKiBleHRlbmRlZCAgICAqLwogICAgIH0KICAgICB9CiAgICAgfTsKQEAgLTMxOCw2ICszMjYsMTMgQEAKICAgICBpbnQga2V5bWFwLCB0cnk7CiAgICAgY2hhciAqcGVudjsKIAorI2lmZGVmIENPTkZJR19VU0VfQ1BDSURWSQorICAgIGlmICgocGVudiA9IGdldGVudiAoImNvbnNvbGUiKSkgIT0gTlVMTCkgeworCSAgICBpZiAoc3RybmNtcCAocGVudiwgInNlcmlhbCIsIDcpID09IDApIHsKKwkJICAgIHJldHVybiAtMTsKKwkgICAgfQorICAgIH0KKyNlbmRpZgogICAgIC8qIEluaXQga2V5Ym9hcmQgZGV2aWNlIChkZWZhdWx0IFVTIGxheW91dCkgKi8KICAgICBrZXltYXAgPSBLQkRfVVM7CiAgICAgaWYgKChwZW52ID0gZ2V0ZW52ICgia2V5bWFwIikpICE9IE5VTEwpCkBAIC0zMzAsOSArMzQ1LDkgQEAKICAgICB7CiAJaWYgKGtiZF9yZXNldCgpID09IDApCiAJewotCSAgICBrYmRfbWFwcGluZyAgID0ga2V5bWFwOwotCSAgICBrYmRfZmxhZ3MgICAgID0gTk9STUFMOwotCSAgICBrYmRfc3RhdGUgICAgID0gMDsKKwkgICAga2JkX21hcHBpbmcJICA9IGtleW1hcDsKKwkgICAga2JkX2ZsYWdzCSAgPSBOT1JNQUw7CisJICAgIGtiZF9zdGF0ZQkgID0gMDsKIAkgICAga2JkX2xlZF9zZXQoKTsKIAkgICAgcmV0dXJuIDA7CiAJICAgIH0KQEAgLTM0NCw3ICszNTksNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBpODA0Ml90c3RjIC0gdGVzdCBpZiBrZXlib2FyZCBpbnB1dCBpcyBhdmFpbGFibGUKLSAqICAgICAgICAgICAgICBvcHRpb246IGN1cnNvciBibGlua2luZyBpZiBjYWxsZWQgaW4gYSBsb29wCisgKgkJb3B0aW9uOiBjdXJzb3IgYmxpbmtpbmcgaWYgY2FsbGVkIGluIGEgbG9vcAogICovCiBpbnQgaTgwNDJfdHN0YyAodm9pZCkKIHsKQEAgLTM4MCw3ICszOTUsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBpODA0Ml9nZXRjIC0gd2FpdCB0aWxsIGtleWJvYXJkIGlucHV0IGlzIGF2YWlsYWJsZQotICogICAgICAgICAgICAgIG9wdGlvbjogdHVybiBvbi9vZmYgY3Vyc29yIHdoaWxlIHdhaXRpbmcKKyAqCQlvcHRpb246IHR1cm4gb24vb2ZmIGN1cnNvciB3aGlsZSB3YWl0aW5nCiAgKi8KIGludCBpODA0Ml9nZXRjICh2b2lkKQogewpAQCAtNDMzLDggKzQ0OCw4IEBACiAgICAgewogCWlmIChzY2FuX2NvZGUgPT0gMHhlMSkKIAl7Ci0JICAgIGtiZF9mbGFncyBePSBCUks7ICAgICAvKiByZXNldCB0aGUgYnJlYWsgZmxhZyAqLwotCSAgICBrYmRfZmxhZ3MgXj0gRTE7ICAgICAgLyogYml0d2lzZSBFWE9SIHdpdGggRTEgZmxhZyAqLworCSAgICBrYmRfZmxhZ3MgXj0gQlJLOwkgIC8qIHJlc2V0IHRoZSBicmVhayBmbGFnICovCisJICAgIGtiZF9mbGFncyBePSBFMTsJICAvKiBiaXR3aXNlIEVYT1Igd2l0aCBFMSBmbGFnICovCiAJfQogCXJldHVybjsKICAgICB9CkBAIC01NDUsNyArNTYwLDcgQEAKICAgICBpZiAoKGtiZF9mbGFncyAmIEJSSykgPT0gTk9STUFMKQogICAgIHsKICAgICAgICBrYmRfZmxhZ3MgXj0gQ0FQUzsKLSAgICAgICBrYmRfbGVkX3NldCAoKTsgICAgICAgICAgICAvKiB1cGRhdGUga2V5Ym9hcmQgTEVEICovCisgICAgICAga2JkX2xlZF9zZXQgKCk7CQkgIC8qIHVwZGF0ZSBrZXlib2FyZCBMRUQgKi8KICAgICB9CiB9CiAKQEAgLTU1OCw3ICs1NzMsNyBAQAogICAgIHsKICAgICAgICBrYmRfZmxhZ3MgXj0gTlVNOwogICAgICAgIGtiZF9zdGF0ZSA9IChrYmRfZmxhZ3MgJiBOVU0pID8gQVMgOiBOTTsKLSAgICAgICBrYmRfbGVkX3NldCAoKTsgICAgICAgICAgICAvKiB1cGRhdGUga2V5Ym9hcmQgTEVEICovCisgICAgICAga2JkX2xlZF9zZXQgKCk7CQkgIC8qIHVwZGF0ZSBrZXlib2FyZCBMRUQgKi8KICAgICB9CiB9CiAKQEAgLTU3MCw3ICs1ODUsNyBAQAogICAgIGlmICgoa2JkX2ZsYWdzICYgQlJLKSA9PSBOT1JNQUwpCiAgICAgewogCWtiZF9mbGFncyBePSBTVFA7Ci0Ja2JkX2xlZF9zZXQgKCk7ICAgICAgICAgICAgLyogdXBkYXRlIGtleWJvYXJkIExFRCAqLworCWtiZF9sZWRfc2V0ICgpOwkJICAgLyogdXBkYXRlIGtleWJvYXJkIExFRCAqLwogCWlmIChrYmRfZmxhZ3MgJiBTVFApCiAJICAgIGtiZF9pbnB1dCA9IDB4MTM7CiAJZWxzZQpAQCAtNjAwLDkgKzYxNSw5IEBACiBzdGF0aWMgdm9pZCBrYmRfbGVkX3NldCAodm9pZCkKIHsKICAgICBrYmRfaW5wdXRfZW1wdHkoKTsKLSAgICBvdXQ4IChJODA0Ml9EQVRBX1JFRywgMHhlZCk7ICAgICAgICAvKiBTRVQgTEVEIGNvbW1hbmQgKi8KKyAgICBvdXQ4IChJODA0Ml9EQVRBX1JFRywgMHhlZCk7CS8qIFNFVCBMRUQgY29tbWFuZCAqLwogICAgIGtiZF9pbnB1dF9lbXB0eSgpOwotICAgIG91dDggKEk4MDQyX0RBVEFfUkVHLCAoa2JkX2ZsYWdzICYgMHg3KSk7ICAgIC8qIExFRCBiaXRzIG9ubHkgKi8KKyAgICBvdXQ4IChJODA0Ml9EQVRBX1JFRywgKGtiZF9mbGFncyAmIDB4NykpOwkgLyogTEVEIGJpdHMgb25seSAqLwogfQogCiAKQEAgLTYzMyw3ICs2NDgsMTEgQEAKICAgICBpZiAoa2JkX2lucHV0X2VtcHR5KCkgPT0gMCkKIAlyZXR1cm4gLTE7CiAKKyNpZmRlZiBDT05GSUdfVVNFX0NQQ0lEVkkKKyAgICBvdXQ4IChJODA0Ml9DT01NQU5EX1JFRywgMHg2MCk7CisjZWxzZQogICAgIG91dDggKEk4MDQyX0RBVEFfUkVHLCAweDYwKTsKKyNlbmRpZgogCiAgICAgaWYgKGtiZF9pbnB1dF9lbXB0eSgpID09IDApCiAJcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9rczg2OTVldGguYyBiL2RyaXZlcnMva3M4Njk1ZXRoLmMKaW5kZXggYTRiMDNhZS4uYTBmNWJlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9rczg2OTVldGguYworKysgYi9kcml2ZXJzL2tzODY5NWV0aC5jCkBAIC0xOCw4ICsxOCw2IEBACiAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAgKi8KIAotI2lmZGVmCUNPTkZJR19EUklWRVJfS1M4Njk1RVRICi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8Y29tbW9uLmg+CkBAIC0yOCw2ICsyNiw3IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvcGxhdGZvcm0uaD4KIAorI2lmZGVmCUNPTkZJR19EUklWRVJfS1M4Njk1RVRICiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTIxNiwxMCArMjE1LDEwIEBACiAJCXBhY2tldCwgbGVuKTsKIAogCWRwID0gJmtzODY5NV90eFtuZXh0XTsKLQltZW1jcHkoKHZvaWQgKikgZHAtPmFkZHIsIHBhY2tldCwgbGVuKTsKKwltZW1jcHkoKHZvaWQgKikgZHAtPmFkZHIsICh2b2lkICopIHBhY2tldCwgbGVuKTsKIAogCWlmIChsZW4gPCA2NCkgewotCQltZW1zZXQoZHAtPmFkZHIrbGVuLCAwLCA2NC1sZW4pOworCQltZW1zZXQoKHZvaWQgKikgKGRwLT5hZGRyICsgbGVuKSwgMCwgNjQtbGVuKTsKIAkJbGVuID0gNjQ7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xhbjkxYzk2LmMgYi9kcml2ZXJzL2xhbjkxYzk2LmMKaW5kZXggYmIwM2RhZS4uYTUwYzVmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sYW45MWM5Ni5jCisrKyBiL2RyaXZlcnMvbGFuOTFjOTYuYwpAQCAtMTg1LDIxICsxODUsMjEgQEAKICAuIElmIGFuIEVFUFJPTSBpcyBwcmVzZW50IGl0IHJlYWxseSBzaG91bGQgYmUgY29uc3VsdGVkLgogKi8KIGludCBzbWNfZ2V0X2V0aGFkZHIoYmRfdCAqYmQpOwotaW50IGdldF9yb21fbWFjKGNoYXIgKnZfcm9tX21hYyk7CitpbnQgZ2V0X3JvbV9tYWModW5zaWduZWQgY2hhciAqdl9yb21fbWFjKTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJbnRlcm5hbCByb3V0aW5lcwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAotc3RhdGljIGNoYXIgc21jX21hY19hZGRyW10gPSB7IDB4YzAsIDB4MDAsIDB4MDAsIDB4MWIsIDB4NjIsIDB4OWMgfTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHNtY19tYWNfYWRkcltdID0geyAweGMwLCAweDAwLCAweDAwLCAweDFiLCAweDYyLCAweDljIH07CiAKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBzbWNfb3BlbigpIGlmIHlvdSB3YW50IHRvIG92ZXJyaWRlCiAgKiB0aGUgZGVmYXVsdCBtYWMgYWRkcmVzcy4KICAqLwogCi12b2lkIHNtY19zZXRfbWFjX2FkZHIgKGNvbnN0IGNoYXIgKmFkZHIpCit2b2lkIHNtY19zZXRfbWFjX2FkZHIgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpCiB7CiAJaW50IGk7CiAKQEAgLTg4Myw3ICs4ODMsNyBAQAogCWNoYXIgKnMgPSBOVUxMOwogCWNoYXIgKmUgPSBOVUxMOwogCWNoYXIgKnZfbWFjLCBlc1tdID0gIjExOjIyOjMzOjQ0OjU1OjY2IjsKLQl1Y2hhciBzX2Vudl9tYWNbNjRdOworCWNoYXIgc19lbnZfbWFjWzY0XTsKIAl1Y2hhciB2X2Vudl9tYWNbNl07CiAJdWNoYXIgdl9yb21fbWFjWzZdOwogCkBAIC05MDUsNyArOTA1LDcgQEAKIAogCWlmICghZW52X3ByZXNlbnQpIHsJLyogaWYgTk8gZW52ICovCiAJCWlmIChyb21fdmFsaWQpIHsJLyogYnV0IFJPTSBpcyB2YWxpZCAqLwotCQkJdl9tYWMgPSB2X3JvbV9tYWM7CisJCQl2X21hYyA9IChjaGFyICopdl9yb21fbWFjOwogCQkJc3ByaW50ZiAoc19lbnZfbWFjLCAiJTAyWDolMDJYOiUwMlg6JTAyWDolMDJYOiUwMlgiLAogCQkJCSB2X21hY1swXSwgdl9tYWNbMV0sIHZfbWFjWzJdLCB2X21hY1szXSwKIAkJCQkgdl9tYWNbNF0sIHZfbWFjWzVdKTsKQEAgLTkxNSw3ICs5MTUsNyBAQAogCQkJcmV0dXJuICgtMSk7CiAJCX0KIAl9IGVsc2UgewkJLyogZ29vZCBlbnYsIGRvbid0IGNhcmUgUk9NICovCi0JCXZfbWFjID0gdl9lbnZfbWFjOwkvKiBhbHdheXMgdXNlIGEgZ29vZCBlbnYgb3ZlciBhIFJPTSAqLworCQl2X21hYyA9IChjaGFyICopdl9lbnZfbWFjOwkvKiBhbHdheXMgdXNlIGEgZ29vZCBlbnYgb3ZlciBhIFJPTSAqLwogCX0KIAogCWlmIChlbnZfcHJlc2VudCAmJiByb21fdmFsaWQpIHsgLyogaWYgYm90aCBlbnYgYW5kIFJPTSBhcmUgZ29vZCAqLwpAQCAtOTM1LDcgKzkzNSw3IEBACiAJCX0KIAl9CiAJbWVtY3B5IChiZC0+YmlfZW5ldGFkZHIsIHZfbWFjLCA2KTsJLyogdXBkYXRlIGdsb2JhbCBhZGRyZXNzIHRvIG1hdGNoIGVudiAoYWxsb3dzIGVudiBjaGFuZ2luZykgKi8KLQlzbWNfc2V0X21hY19hZGRyICh2X21hYyk7CS8qIHVzZSBvbGQgZnVuY3Rpb24gdG8gdXBkYXRlIHNtYyBkZWZhdWx0ICovCisJc21jX3NldF9tYWNfYWRkciAoKHVuc2lnbmVkIGNoYXIgKil2X21hYyk7IC8qIHVzZSBvbGQgZnVuY3Rpb24gdG8gdXBkYXRlIHNtYyBkZWZhdWx0ICovCiAJUFJJTlRLKCJVc2luZyBNQUMgQWRkcmVzcyAlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWFxuIiwgdl9tYWNbMF0sIHZfbWFjWzFdLAogCQl2X21hY1syXSwgdl9tYWNbM10sIHZfbWFjWzRdLCB2X21hY1s1XSk7CiAJcmV0dXJuICgwKTsKQEAgLTk0Niw3ICs5NDYsNyBAQAogICogTm90ZSwgdGhpcyBoYXMgb21seSBiZWVuIHRlc3RlZCBmb3IgdGhlIE9NQVA3MzAgUDIuCiAgKi8KIAotaW50IGdldF9yb21fbWFjIChjaGFyICp2X3JvbV9tYWMpCitpbnQgZ2V0X3JvbV9tYWMgKHVuc2lnbmVkIGNoYXIgKnZfcm9tX21hYykKIHsKICNpZmRlZiBIQVJEQ09ERV9NQUMJLyogdXNlZCBmb3IgdGVzdGluZyBvciB0byBzdXByZXNzIHJ1biB0aW1lIHdhcm5pbmdzICovCiAJY2hhciBod19tYWNfYWRkcltdID0geyAweDAyLCAweDgwLCAweGFkLCAweDIwLCAweDMxLCAweGI4IH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xhbjkxYzk2LmggYi9kcml2ZXJzL2xhbjkxYzk2LmgKaW5kZXggYjdkNzQ1NS4uN2QzM2E4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9sYW45MWM5Ni5oCisrKyBiL2RyaXZlcnMvbGFuOTFjOTYuaApAQCAtNTEsNyArNTEsNyBAQAogICogaW4gb3JkZXIgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbWFjIGFkZHJlc3MuCiAgKi8KIAotdm9pZCBzbWNfc2V0X21hY19hZGRyKGNvbnN0IGNoYXIgKmFkZHIpOwordm9pZCBzbWNfc2V0X21hY19hZGRyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpOwogCiAKIC8qIEkgd2FudCBzb21lIHNpbXBsZSB0eXBlcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uYW5kL01ha2VmaWxlIGIvZHJpdmVycy9uYW5kL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZjY3ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25hbmQvTWFrZWZpbGUKQEAgLTAsMCArMSwxNiBAQAoraW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCisKK0xJQiA6PSBsaWJuYW5kLmEKKworT0JKUyA6PSBuYW5kLm8gbmFuZF9iYXNlLm8gbmFuZF9pZHMubyBuYW5kX2VjYy5vIG5hbmRfYmJ0Lm8KK2FsbDoJJChMSUIpCisKKyQoTElCKToJJChPQkpTKQorCSQoQVIpIGNydiAkQCAkKE9CSlMpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworLmRlcGVuZDoJTWFrZWZpbGUgJChPQkpTOi5vPS5jKQorCQkkKENDKSAtTSAkKENGTEFHUykgJChPQkpTOi5vPS5jKSA+ICRACisKK3NpbmNsdWRlIC5kZXBlbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmFuZC9kaXNrb25jaGlwLmMgYi9kcml2ZXJzL25hbmQvZGlza29uY2hpcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYWFlODMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25hbmQvZGlza29uY2hpcC5jCkBAIC0wLDAgKzEsMTc4OCBAQAorLyoKKyAqIGRyaXZlcnMvbXRkL25hbmQvZGlza29uY2hpcC5jCisgKgorICogKEMpIDIwMDMgUmVkIEhhdCwgSW5jLgorICogKEMpIDIwMDQgRGFuIEJyb3duIDxkYW5fYnJvd25AaWVlZS5vcmc+CisgKiAoQykgMjAwNCBLYWxldiBMZW1iZXIgPGthbGV2QHNtYXJ0bGluay5lZT4KKyAqCisgKiBBdXRob3I6IERhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFkZWFkLm9yZz4KKyAqIEFkZGl0aW9uYWwgRGlza29uY2hpcCAyMDAwIGFuZCBNaWxsZW5uaXVtIHN1cHBvcnQgYnkgRGFuIEJyb3duIDxkYW5fYnJvd25AaWVlZS5vcmc+CisgKiBEaXNrb25jaGlwIE1pbGxlbm5pdW0gUGx1cyBzdXBwb3J0IGJ5IEthbGV2IExlbWJlciA8a2FsZXZAc21hcnRsaW5rLmVlPgorICoKKyAqIEVycm9yIGNvcnJlY3Rpb24gY29kZSBsaWZ0ZWQgZnJvbSB0aGUgb2xkIGRvY2VjYyBjb2RlCisgKiBBdXRob3I6IEZhYnJpY2UgQmVsbGFyZCAoZmFicmljZS5iZWxsYXJkQG5ldGdlbS5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTmV0Z2VtIFMuQS4KKyAqIGNvbnZlcnRlZCB0byB0aGUgZ2VuZXJpYyBSZWVkLVNvbG9tb24gbGlicmFyeSBieSBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KKyAqCisgKiBJbnRlcmZhY2UgdG8gZ2VuZXJpYyBOQU5EIGNvZGUgZm9yIE0tU3lzdGVtcyBEaXNrT25DaGlwIGRldmljZXMKKyAqCisgKiAkSWQ6IGRpc2tvbmNoaXAuYyx2IDEuNDUgMjAwNS8wMS8wNSAxODowNToxNCBkd213MiBFeHAgJAorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2lmZGVmIENGR19OQU5EX0xFR0FDWQorI2Vycm9yIENGR19OQU5EX0xFR0FDWSBkZWZpbmVkIGluIGEgZmlsZSBub3QgdXNpbmcgdGhlIGxlZ2FjeSBOQU5EIHN1cHBvcnQhCisjZW5kaWYKKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvcnNsaWIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCisjaW5jbHVkZSA8bGludXgvbXRkL210ZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL2RvYzIwMDAuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvY29tcGF0bWFjLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL3BhcnRpdGlvbnMuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvaW5mdGwuaD4KKworLyogV2hlcmUgdG8gbG9vayBmb3IgdGhlIGRldmljZXM/ICovCisjaWZuZGVmIENPTkZJR19NVERfRElTS09OQ0hJUF9QUk9CRV9BRERSRVNTCisjZGVmaW5lIENPTkZJR19NVERfRElTS09OQ0hJUF9QUk9CRV9BRERSRVNTIDAKKyNlbmRpZgorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXRkYXRhIGRvY19sb2NhdGlvbnNbXSA9IHsKKyNpZiBkZWZpbmVkIChfX2FscGhhX18pIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKKyNpZmRlZiBDT05GSUdfTVREX0RJU0tPTkNISVBfUFJPQkVfSElHSAorCTB4ZmZmYzgwMDAsIDB4ZmZmY2EwMDAsIDB4ZmZmY2MwMDAsIDB4ZmZmY2UwMDAsCisJMHhmZmZkMDAwMCwgMHhmZmZkMjAwMCwgMHhmZmZkNDAwMCwgMHhmZmZkNjAwMCwKKwkweGZmZmQ4MDAwLCAweGZmZmRhMDAwLCAweGZmZmRjMDAwLCAweGZmZmRlMDAwLAorCTB4ZmZmZTAwMDAsIDB4ZmZmZTIwMDAsIDB4ZmZmZTQwMDAsIDB4ZmZmZTYwMDAsCisJMHhmZmZlODAwMCwgMHhmZmZlYTAwMCwgMHhmZmZlYzAwMCwgMHhmZmZlZTAwMCwKKyNlbHNlIC8qICBDT05GSUdfTVREX0RPQ1BST0JFX0hJR0ggKi8KKwkweGM4MDAwLCAweGNhMDAwLCAweGNjMDAwLCAweGNlMDAwLAorCTB4ZDAwMDAsIDB4ZDIwMDAsIDB4ZDQwMDAsIDB4ZDYwMDAsCisJMHhkODAwMCwgMHhkYTAwMCwgMHhkYzAwMCwgMHhkZTAwMCwKKwkweGUwMDAwLCAweGUyMDAwLCAweGU0MDAwLCAweGU2MDAwLAorCTB4ZTgwMDAsIDB4ZWEwMDAsIDB4ZWMwMDAsIDB4ZWUwMDAsCisjZW5kaWYgLyogIENPTkZJR19NVERfRE9DUFJPQkVfSElHSCAqLworI2VsaWYgZGVmaW5lZChfX1BQQ19fKQorCTB4ZTQwMDAwMDAsCisjZWxpZiBkZWZpbmVkKENPTkZJR19NT01FTkNPX09DRUxPVCkKKwkweDJmMDAwMDAwLAorCTB4ZmYwMDAwMDAsCisjZWxpZiBkZWZpbmVkKENPTkZJR19NT01FTkNPX09DRUxPVF9HKSB8fCBkZWZpbmVkIChDT05GSUdfTU9NRU5DT19PQ0VMT1RfQykKKwkweGZmMDAwMDAwLAorIyNlbHNlCisjd2FybmluZyBVbmtub3duIGFyY2hpdGVjdHVyZSBmb3IgRGlza09uQ2hpcC4gTm8gZGVmYXVsdCBwcm9iZSBsb2NhdGlvbnMgZGVmaW5lZAorI2VuZGlmCisJMHhmZmZmZmZmZiB9OworCitzdGF0aWMgc3RydWN0IG10ZF9pbmZvICpkb2NsaXN0ID0gTlVMTDsKKworc3RydWN0IGRvY19wcml2IHsKKwl2b2lkIF9faW9tZW0gKnZpcnRhZHI7CisJdW5zaWduZWQgbG9uZyBwaHlzYWRyOworCXVfY2hhciBDaGlwSUQ7CisJdV9jaGFyIENEU05Db250cm9sOworCWludCBjaGlwc19wZXJfZmxvb3I7IC8qIFRoZSBudW1iZXIgb2YgY2hpcHMgZGV0ZWN0ZWQgb24gZWFjaCBmbG9vciAqLworCWludCBjdXJmbG9vcjsKKwlpbnQgY3VyY2hpcDsKKwlpbnQgbWgwX3BhZ2U7CisJaW50IG1oMV9wYWdlOworCXN0cnVjdCBtdGRfaW5mbyAqbmV4dGRvYzsKK307CisKKy8qIE1heCBudW1iZXIgb2YgZXJhc2VibG9ja3MgdG8gc2NhbiAoZnJvbSBzdGFydCBvZiBkZXZpY2UpIGZvciB0aGUgKEkpTkZUTAorICAgTWVkaWFIZWFkZXIuICBUaGUgc3BlYyBzYXlzIHRvIGp1c3Qga2VlcCBnb2luZywgSSB0aGluaywgYnV0IHRoYXQncyBqdXN0CisgICBzaWxseS4gKi8KKyNkZWZpbmUgTUFYX01FRElBSEVBREVSX1NDQU4gOAorCisvKiBUaGlzIGlzIHRoZSBzeW5kcm9tZSBjb21wdXRlZCBieSB0aGUgSFcgZWNjIGdlbmVyYXRvciB1cG9uIHJlYWRpbmcgYW4gZW1wdHkKKyAgIHBhZ2UsIG9uZSB3aXRoIGFsbCAweGZmIGZvciBkYXRhIGFuZCBzdG9yZWQgZWNjIGNvZGUuICovCitzdGF0aWMgdV9jaGFyIGVtcHR5X3JlYWRfc3luZHJvbWVbNl0gPSB7IDB4MjYsIDB4ZmYsIDB4NmQsIDB4NDcsIDB4NzMsIDB4N2EgfTsKKy8qIFRoaXMgaXMgdGhlIGVjYyB2YWx1ZSBjb21wdXRlZCBieSB0aGUgSFcgZWNjIGdlbmVyYXRvciB1cG9uIHdyaXRpbmcgYW4gZW1wdHkKKyAgIHBhZ2UsIG9uZSB3aXRoIGFsbCAweGZmIGZvciBkYXRhLiAqLworc3RhdGljIHVfY2hhciBlbXB0eV93cml0ZV9lY2NbNl0gPSB7IDB4NGIsIDB4MDAsIDB4ZTIsIDB4MGUsIDB4OTMsIDB4ZjcgfTsKKworI2RlZmluZSBJTkZUTF9CQlRfUkVTRVJWRURfQkxPQ0tTIDQKKworI2RlZmluZSBEb0NfaXNfTWlsbGVubml1bVBsdXMoZG9jKSAoKGRvYyktPkNoaXBJRCA9PSBET0NfQ2hpcElEX0RvY01pbFBsdXMxNiB8fCAoZG9jKS0+Q2hpcElEID09IERPQ19DaGlwSURfRG9jTWlsUGx1czMyKQorI2RlZmluZSBEb0NfaXNfTWlsbGVubml1bShkb2MpICgoZG9jKS0+Q2hpcElEID09IERPQ19DaGlwSURfRG9jTWlsKQorI2RlZmluZSBEb0NfaXNfMjAwMChkb2MpICgoZG9jKS0+Q2hpcElEID09IERPQ19DaGlwSURfRG9jMmspCisKK3N0YXRpYyB2b2lkIGRvYzIwMHhfaHdjb250cm9sKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY21kKTsKK3N0YXRpYyB2b2lkIGRvYzIwMHhfc2VsZWN0X2NoaXAoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBjaGlwKTsKKworc3RhdGljIGludCBkZWJ1Zz0wOworbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQsIDApOworCitzdGF0aWMgaW50IHRyeV9kd29yZD0xOworbW9kdWxlX3BhcmFtKHRyeV9kd29yZCwgaW50LCAwKTsKKworc3RhdGljIGludCBub19lY2NfZmFpbHVyZXM9MDsKK21vZHVsZV9wYXJhbShub19lY2NfZmFpbHVyZXMsIGludCwgMCk7CisKKyNpZmRlZiBDT05GSUdfTVREX1BBUlRJVElPTlMKK3N0YXRpYyBpbnQgbm9fYXV0b3BhcnQ9MDsKK21vZHVsZV9wYXJhbShub19hdXRvcGFydCwgaW50LCAwKTsKKyNlbmRpZgorCisjaWZkZWYgTVREX05BTkRfRElTS09OQ0hJUF9CQlRXUklURQorc3RhdGljIGludCBpbmZ0bF9iYnRfd3JpdGU9MTsKKyNlbHNlCitzdGF0aWMgaW50IGluZnRsX2JidF93cml0ZT0wOworI2VuZGlmCittb2R1bGVfcGFyYW0oaW5mdGxfYmJ0X3dyaXRlLCBpbnQsIDApOworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBkb2NfY29uZmlnX2xvY2F0aW9uID0gQ09ORklHX01URF9ESVNLT05DSElQX1BST0JFX0FERFJFU1M7Cittb2R1bGVfcGFyYW0oZG9jX2NvbmZpZ19sb2NhdGlvbiwgdWxvbmcsIDApOworTU9EVUxFX1BBUk1fREVTQyhkb2NfY29uZmlnX2xvY2F0aW9uLCAiUGh5c2ljYWwgbWVtb3J5IGFkZHJlc3MgYXQgd2hpY2ggdG8gcHJvYmUgZm9yIERpc2tPbkNoaXAiKTsKKworCisvKiBTZWN0b3Igc2l6ZSBmb3IgSFcgRUNDICovCisjZGVmaW5lIFNFQ1RPUl9TSVpFIDUxMgorLyogVGhlIHNlY3RvciBieXRlcyBhcmUgcGFja2VkIGludG8gTkJfREFUQSAxMCBiaXQgd29yZHMgKi8KKyNkZWZpbmUgTkJfREFUQSAoKChTRUNUT1JfU0laRSArIDEpICogOCArIDYpIC8gMTApCisvKiBOdW1iZXIgb2Ygcm9vdHMgKi8KKyNkZWZpbmUgTlJPT1RTIDQKKy8qIEZpcnN0IGNvbnNlY3RpdmUgcm9vdCAqLworI2RlZmluZSBGQ1IgNTEwCisvKiBOdW1iZXIgb2Ygc3ltYm9scyAqLworI2RlZmluZSBOTiAxMDIzCisKKy8qIHRoZSBSZWVkIFNvbG9tb24gY29udHJvbCBzdHJ1Y3R1cmUgKi8KK3N0YXRpYyBzdHJ1Y3QgcnNfY29udHJvbCAqcnNfZGVjb2RlcjsKKworLyoKKyAqIFRoZSBIVyBkZWNvZGVyIGluIHRoZSBEb0MgQVNJQydzIHByb3ZpZGVzIHVzIGEgZXJyb3Igc3luZHJvbWUsCisgKiB3aGljaCB3ZSBtdXN0IGNvbnZlcnQgdG8gYSBzdGFuZGFyZCBzeW5kcm9tIHVzYWJsZSBieSB0aGUgZ2VuZXJpYworICogUmVlZC1Tb2xvbW9uIGxpYnJhcnkgY29kZS4KKyAqCisgKiBGYWJyaWNlIEJlbGxhcmQgZmlndXJlZCB0aGlzIG91dCBpbiB0aGUgb2xkIGRvY2VjYyBjb2RlLiBJIGFkZGVkCisgKiBzb21lIGNvbW1lbnRzLCBpbXByb3ZlZCBhIG1pbm9yIGJpdCBhbmQgY29udmVydGVkIGl0IHRvIG1ha2UgdXNlCisgKiBvZiB0aGUgZ2VuZXJpYyBSZWVkLVNvbG9tb24gbGliYXJ5LiB0Z2x4CisgKi8KK3N0YXRpYyBpbnQgZG9jX2VjY19kZWNvZGUgKHN0cnVjdCByc19jb250cm9sICpycywgdWludDhfdCAqZGF0YSwgdWludDhfdCAqZWNjKQoreworCWludCBpLCBqLCBuZXJyLCBlcnJwb3NbOF07CisJdWludDhfdCBwYXJpdHk7CisJdWludDE2X3QgZHNbNF0sIHNbNV0sIHRtcCwgZXJydmFsWzhdLCBzeW5bNF07CisKKwkvKiBDb252ZXJ0IHRoZSBlY2MgYnl0ZXMgaW50byB3b3JkcyAqLworCWRzWzBdID0gKChlY2NbNF0gJiAweGZmKSA+PiAwKSB8ICgoZWNjWzVdICYgMHgwMykgPDwgOCk7CisJZHNbMV0gPSAoKGVjY1s1XSAmIDB4ZmMpID4+IDIpIHwgKChlY2NbMl0gJiAweDBmKSA8PCA2KTsKKwlkc1syXSA9ICgoZWNjWzJdICYgMHhmMCkgPj4gNCkgfCAoKGVjY1szXSAmIDB4M2YpIDw8IDQpOworCWRzWzNdID0gKChlY2NbM10gJiAweGMwKSA+PiA2KSB8ICgoZWNjWzBdICYgMHhmZikgPDwgMik7CisJcGFyaXR5ID0gZWNjWzFdOworCisJLyogSW5pdGlhbGl6ZSB0aGUgc3luZHJvbSBidWZmZXIgKi8KKwlmb3IgKGkgPSAwOyBpIDwgTlJPT1RTOyBpKyspCisJCXNbaV0gPSBkc1swXTsKKwkvKgorCSAqICBFdmFsdWF0ZQorCSAqICBzW2ldID0gZHNbM114XjMgKyBkc1syXXheMiArIGRzWzFdeF4xICsgZHNbMF0KKwkgKiAgd2hlcmUgeCA9IGFscGhhXihGQ1IgKyBpKQorCSAqLworCWZvcihqID0gMTsgaiA8IE5ST09UUzsgaisrKSB7CisJCWlmKGRzW2pdID09IDApCisJCQljb250aW51ZTsKKwkJdG1wID0gcnMtPmluZGV4X29mW2RzW2pdXTsKKwkJZm9yKGkgPSAwOyBpIDwgTlJPT1RTOyBpKyspCisJCQlzW2ldIF49IHJzLT5hbHBoYV90b1tyc19tb2RubihycywgdG1wICsgKEZDUiArIGkpICogaildOworCX0KKworCS8qIENhbGMgc1tpXSA9IHNbaV0gLyBhbHBoYV4odiArIGkpICovCisJZm9yIChpID0gMDsgaSA8IE5ST09UUzsgaSsrKSB7CisJCWlmIChzeW5baV0pCisgCQkJc3luW2ldID0gcnNfbW9kbm4ocnMsIHJzLT5pbmRleF9vZltzW2ldXSArIChOTiAtIEZDUiAtIGkpKTsKKwl9CisJLyogQ2FsbCB0aGUgZGVjb2RlciBsaWJyYXJ5ICovCisJbmVyciA9IGRlY29kZV9yczE2KHJzLCBOVUxMLCBOVUxMLCAxMDE5LCBzeW4sIDAsIGVycnBvcywgMCwgZXJydmFsKTsKKworCS8qIEluY29ycmVjdGFibGUgZXJyb3JzID8gKi8KKwlpZiAobmVyciA8IDApCisJCXJldHVybiBuZXJyOworCisJLyoKKwkgKiBDb3JyZWN0IHRoZSBlcnJvcnMuIFRoZSBiaXRwb3NpdGlvbnMgYXJlIGEgYml0IG9mIG1hZ2ljLAorCSAqIGJ1dCB0aGV5IGFyZSBnaXZlbiBieSB0aGUgZGVzaWduIG9mIHRoZSBkZS9lbmNvZGVyIGNpcmN1aXQKKwkgKiBpbiB0aGUgRG9DIEFTSUMncy4KKwkgKi8KKwlmb3IoaSA9IDA7aSA8IG5lcnI7IGkrKykgeworCQlpbnQgaW5kZXgsIGJpdHBvcywgcG9zID0gMTAxNSAtIGVycnBvc1tpXTsKKwkJdWludDhfdCB2YWw7CisJCWlmIChwb3MgPj0gTkJfREFUQSAmJiBwb3MgPCAxMDE5KQorCQkJY29udGludWU7CisJCWlmIChwb3MgPCBOQl9EQVRBKSB7CisJCQkvKiBleHRyYWN0IGJpdCBwb3NpdGlvbiAoTVNCIGZpcnN0KSAqLworCQkJcG9zID0gMTAgKiAoTkJfREFUQSAtIDEgLSBwb3MpIC0gNjsKKwkJCS8qIG5vdyBjb3JyZWN0IHRoZSBmb2xsb3dpbmcgMTAgYml0cy4gQXQgbW9zdCB0d28gYnl0ZXMKKwkJCSAgIGNhbiBiZSBtb2RpZmllZCBzaW5jZSBwb3MgaXMgZXZlbiAqLworCQkJaW5kZXggPSAocG9zID4+IDMpIF4gMTsKKwkJCWJpdHBvcyA9IHBvcyAmIDc7CisJCQlpZiAoKGluZGV4ID49IDAgJiYgaW5kZXggPCBTRUNUT1JfU0laRSkgfHwKKwkJCSAgICBpbmRleCA9PSAoU0VDVE9SX1NJWkUgKyAxKSkgeworCQkJCXZhbCA9ICh1aW50OF90KSAoZXJydmFsW2ldID4+ICgyICsgYml0cG9zKSk7CisJCQkJcGFyaXR5IF49IHZhbDsKKwkJCQlpZiAoaW5kZXggPCBTRUNUT1JfU0laRSkKKwkJCQkJZGF0YVtpbmRleF0gXj0gdmFsOworCQkJfQorCQkJaW5kZXggPSAoKHBvcyA+PiAzKSArIDEpIF4gMTsKKwkJCWJpdHBvcyA9IChiaXRwb3MgKyAxMCkgJiA3OworCQkJaWYgKGJpdHBvcyA9PSAwKQorCQkJCWJpdHBvcyA9IDg7CisJCQlpZiAoKGluZGV4ID49IDAgJiYgaW5kZXggPCBTRUNUT1JfU0laRSkgfHwKKwkJCSAgICBpbmRleCA9PSAoU0VDVE9SX1NJWkUgKyAxKSkgeworCQkJCXZhbCA9ICh1aW50OF90KShlcnJ2YWxbaV0gPDwgKDggLSBiaXRwb3MpKTsKKwkJCQlwYXJpdHkgXj0gdmFsOworCQkJCWlmIChpbmRleCA8IFNFQ1RPUl9TSVpFKQorCQkJCQlkYXRhW2luZGV4XSBePSB2YWw7CisJCQl9CisJCX0KKwl9CisJLyogSWYgdGhlIHBhcml0eSBpcyB3cm9uZywgbm8gcmVzY3VlIHBvc3NpYmxlICovCisJcmV0dXJuIHBhcml0eSA/IC0xIDogbmVycjsKK30KKworc3RhdGljIHZvaWQgRG9DX0RlbGF5KHN0cnVjdCBkb2NfcHJpdiAqZG9jLCB1bnNpZ25lZCBzaG9ydCBjeWNsZXMpCit7CisJdm9sYXRpbGUgY2hhciBkdW1teTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBjeWNsZXM7IGkrKykgeworCQlpZiAoRG9DX2lzX01pbGxlbm5pdW0oZG9jKSkKKwkJCWR1bW15ID0gUmVhZERPQyhkb2MtPnZpcnRhZHIsIE5PUCk7CisJCWVsc2UgaWYgKERvQ19pc19NaWxsZW5uaXVtUGx1cyhkb2MpKQorCQkJZHVtbXkgPSBSZWFkRE9DKGRvYy0+dmlydGFkciwgTXBsdXNfTk9QKTsKKwkJZWxzZQorCQkJZHVtbXkgPSBSZWFkRE9DKGRvYy0+dmlydGFkciwgRE9DU3RhdHVzKTsKKwl9CisKK30KKworI2RlZmluZSBDRFNOX0NUUkxfRlJfQl9NQVNLCShDRFNOX0NUUkxfRlJfQjAgfCBDRFNOX0NUUkxfRlJfQjEpCisKKy8qIERPQ19XYWl0UmVhZHk6IFdhaXQgZm9yIFJEWSBsaW5lIHRvIGJlIGFzc2VydGVkIGJ5IHRoZSBmbGFzaCBjaGlwICovCitzdGF0aWMgaW50IF9Eb0NfV2FpdFJlYWR5KHN0cnVjdCBkb2NfcHJpdiAqZG9jKQoreworCXZvaWQgX19pb21lbSAqZG9jcHRyID0gZG9jLT52aXJ0YWRyOworCXVuc2lnbmVkIGxvbmcgdGltZW8gPSBqaWZmaWVzICsgKEhaICogMTApOworCisJaWYoZGVidWcpIHByaW50aygiX0RvQ19XYWl0UmVhZHkuLi5cbiIpOworCS8qIE91dC1vZi1saW5lIHJvdXRpbmUgdG8gd2FpdCBmb3IgY2hpcCByZXNwb25zZSAqLworCWlmIChEb0NfaXNfTWlsbGVubml1bVBsdXMoZG9jKSkgeworCQl3aGlsZSAoKFJlYWRET0MoZG9jcHRyLCBNcGx1c19GbGFzaENvbnRyb2wpICYgQ0RTTl9DVFJMX0ZSX0JfTUFTSykgIT0gQ0RTTl9DVFJMX0ZSX0JfTUFTSykgeworCQkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW8pKSB7CisJCQkJcHJpbnRrKCJfRG9DX1dhaXRSZWFkeSB0aW1lZCBvdXQuXG4iKTsKKwkJCQlyZXR1cm4gLUVJTzsKKwkJCX0KKwkJCXVkZWxheSgxKTsKKwkJCWNvbmRfcmVzY2hlZCgpOworCQl9CisJfSBlbHNlIHsKKwkJd2hpbGUgKCEoUmVhZERPQyhkb2NwdHIsIENEU05Db250cm9sKSAmIENEU05fQ1RSTF9GUl9CKSkgeworCQkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW8pKSB7CisJCQkJcHJpbnRrKCJfRG9DX1dhaXRSZWFkeSB0aW1lZCBvdXQuXG4iKTsKKwkJCQlyZXR1cm4gLUVJTzsKKwkJCX0KKwkJCXVkZWxheSgxKTsKKwkJCWNvbmRfcmVzY2hlZCgpOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IERvQ19XYWl0UmVhZHkoc3RydWN0IGRvY19wcml2ICpkb2MpCit7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisJaW50IHJldCA9IDA7CisKKwlpZiAoRG9DX2lzX01pbGxlbm5pdW1QbHVzKGRvYykpIHsKKwkJRG9DX0RlbGF5KGRvYywgNCk7CisKKwkJaWYgKChSZWFkRE9DKGRvY3B0ciwgTXBsdXNfRmxhc2hDb250cm9sKSAmIENEU05fQ1RSTF9GUl9CX01BU0spICE9IENEU05fQ1RSTF9GUl9CX01BU0spCisJCQkvKiBDYWxsIHRoZSBvdXQtb2YtbGluZSByb3V0aW5lIHRvIHdhaXQgKi8KKwkJCXJldCA9IF9Eb0NfV2FpdFJlYWR5KGRvYyk7CisJfSBlbHNlIHsKKwkJRG9DX0RlbGF5KGRvYywgNCk7CisKKwkJaWYgKCEoUmVhZERPQyhkb2NwdHIsIENEU05Db250cm9sKSAmIENEU05fQ1RSTF9GUl9CKSkKKwkJCS8qIENhbGwgdGhlIG91dC1vZi1saW5lIHJvdXRpbmUgdG8gd2FpdCAqLworCQkJcmV0ID0gX0RvQ19XYWl0UmVhZHkoZG9jKTsKKwkJRG9DX0RlbGF5KGRvYywgMik7CisJfQorCisJaWYoZGVidWcpIHByaW50aygiRG9DX1dhaXRSZWFkeSBPS1xuIik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgZG9jMjAwMF93cml0ZV9ieXRlKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1X2NoYXIgZGF0dW0pCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisKKwlpZihkZWJ1ZylwcmludGsoIndyaXRlX2J5dGUgJTAyeFxuIiwgZGF0dW0pOworCVdyaXRlRE9DKGRhdHVtLCBkb2NwdHIsIENEU05TbG93SU8pOworCVdyaXRlRE9DKGRhdHVtLCBkb2NwdHIsIDJrX0NEU05fSU8pOworfQorCitzdGF0aWMgdV9jaGFyIGRvYzIwMDBfcmVhZF9ieXRlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXZvaWQgX19pb21lbSAqZG9jcHRyID0gZG9jLT52aXJ0YWRyOworCXVfY2hhciByZXQ7CisKKwlSZWFkRE9DKGRvY3B0ciwgQ0RTTlNsb3dJTyk7CisJRG9DX0RlbGF5KGRvYywgMik7CisJcmV0ID0gUmVhZERPQyhkb2NwdHIsIDJrX0NEU05fSU8pOworCWlmIChkZWJ1ZykgcHJpbnRrKCJyZWFkX2J5dGUgcmV0dXJucyAlMDJ4XG4iLCByZXQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGRvYzIwMDBfd3JpdGVidWYoc3RydWN0IG10ZF9pbmZvICptdGQsCisJCQkgICAgIGNvbnN0IHVfY2hhciAqYnVmLCBpbnQgbGVuKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXZvaWQgX19pb21lbSAqZG9jcHRyID0gZG9jLT52aXJ0YWRyOworCWludCBpOworCWlmIChkZWJ1ZylwcmludGsoIndyaXRlYnVmIG9mICVkIGJ5dGVzOiAiLCBsZW4pOworCWZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHsKKwkJV3JpdGVET0NfKGJ1ZltpXSwgZG9jcHRyLCBEb0NfMmtfQ0RTTl9JTyArIGkpOworCQlpZiAoZGVidWcgJiYgaSA8IDE2KQorCQkJcHJpbnRrKCIlMDJ4ICIsIGJ1ZltpXSk7CisJfQorCWlmIChkZWJ1ZykgcHJpbnRrKCJcbiIpOworfQorCitzdGF0aWMgdm9pZCBkb2MyMDAwX3JlYWRidWYoc3RydWN0IG10ZF9pbmZvICptdGQsCisJCQkgICAgdV9jaGFyICpidWYsIGludCBsZW4pCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisgCWludCBpOworCisJaWYgKGRlYnVnKXByaW50aygicmVhZGJ1ZiBvZiAlZCBieXRlczogIiwgbGVuKTsKKworCWZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHsKKwkJYnVmW2ldID0gUmVhZERPQyhkb2NwdHIsIDJrX0NEU05fSU8gKyBpKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGRvYzIwMDBfcmVhZGJ1Zl9kd29yZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwKKwkJCSAgICB1X2NoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKyAJaW50IGk7CisKKwlpZiAoZGVidWcpIHByaW50aygicmVhZGJ1Zl9kd29yZCBvZiAlZCBieXRlczogIiwgbGVuKTsKKworCWlmICh1bmxpa2VseSgoKCh1bnNpZ25lZCBsb25nKWJ1Zil8bGVuKSAmIDMpKSB7CisJCWZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHsKKwkJCSoodWludDhfdCAqKSgmYnVmW2ldKSA9IFJlYWRET0MoZG9jcHRyLCAya19DRFNOX0lPICsgaSk7CisJCX0KKwl9IGVsc2UgeworCQlmb3IgKGk9MDsgaSA8IGxlbjsgaSs9NCkgeworCQkJKih1aW50MzJfdCopKCZidWZbaV0pID0gcmVhZGwoZG9jcHRyICsgRG9DXzJrX0NEU05fSU8gKyBpKTsKKwkJfQorCX0KK30KKworc3RhdGljIGludCBkb2MyMDAwX3ZlcmlmeWJ1ZihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwKKwkJCSAgICAgIGNvbnN0IHVfY2hhciAqYnVmLCBpbnQgbGVuKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXZvaWQgX19pb21lbSAqZG9jcHRyID0gZG9jLT52aXJ0YWRyOworCWludCBpOworCisJZm9yIChpPTA7IGkgPCBsZW47IGkrKykKKwkJaWYgKGJ1ZltpXSAhPSBSZWFkRE9DKGRvY3B0ciwgMmtfQ0RTTl9JTykpCisJCQlyZXR1cm4gLUVGQVVMVDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVpbnQxNl90IF9faW5pdCBkb2MyMDB4X2lkZW50X2NoaXAoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBucikKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl1aW50MTZfdCByZXQ7CisKKwlkb2MyMDB4X3NlbGVjdF9jaGlwKG10ZCwgbnIpOworCWRvYzIwMHhfaHdjb250cm9sKG10ZCwgTkFORF9DVExfU0VUQ0xFKTsKKwl0aGlzLT53cml0ZV9ieXRlKG10ZCwgTkFORF9DTURfUkVBRElEKTsKKwlkb2MyMDB4X2h3Y29udHJvbChtdGQsIE5BTkRfQ1RMX0NMUkNMRSk7CisJZG9jMjAweF9od2NvbnRyb2wobXRkLCBOQU5EX0NUTF9TRVRBTEUpOworCXRoaXMtPndyaXRlX2J5dGUobXRkLCAwKTsKKwlkb2MyMDB4X2h3Y29udHJvbChtdGQsIE5BTkRfQ1RMX0NMUkFMRSk7CisKKwlyZXQgPSB0aGlzLT5yZWFkX2J5dGUobXRkKSA8PCA4OworCXJldCB8PSB0aGlzLT5yZWFkX2J5dGUobXRkKTsKKworCWlmIChkb2MtPkNoaXBJRCA9PSBET0NfQ2hpcElEX0RvYzJrICYmIHRyeV9kd29yZCAmJiAhbnIpIHsKKwkJLyogRmlyc3QgY2hpcCBwcm9iZS4gU2VlIGlmIHdlIGdldCBzYW1lIHJlc3VsdHMgYnkgMzItYml0IGFjY2VzcyAqLworCQl1bmlvbiB7CisJCQl1aW50MzJfdCBkd29yZDsKKwkJCXVpbnQ4X3QgYnl0ZVs0XTsKKwkJfSBpZGVudDsKKwkJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisKKwkJZG9jMjAweF9od2NvbnRyb2wobXRkLCBOQU5EX0NUTF9TRVRDTEUpOworCQlkb2MyMDAwX3dyaXRlX2J5dGUobXRkLCBOQU5EX0NNRF9SRUFESUQpOworCQlkb2MyMDB4X2h3Y29udHJvbChtdGQsIE5BTkRfQ1RMX0NMUkNMRSk7CisJCWRvYzIwMHhfaHdjb250cm9sKG10ZCwgTkFORF9DVExfU0VUQUxFKTsKKwkJZG9jMjAwMF93cml0ZV9ieXRlKG10ZCwgMCk7CisJCWRvYzIwMHhfaHdjb250cm9sKG10ZCwgTkFORF9DVExfQ0xSQUxFKTsKKworCQlpZGVudC5kd29yZCA9IHJlYWRsKGRvY3B0ciArIERvQ18ya19DRFNOX0lPKTsKKwkJaWYgKCgoaWRlbnQuYnl0ZVswXSA8PCA4KSB8IGlkZW50LmJ5dGVbMV0pID09IHJldCkgeworCQkJcHJpbnRrKEtFUk5fSU5GTyAiRGlza09uQ2hpcCAyMDAwIHJlc3BvbmRzIHRvIERXT1JEIGFjY2Vzc1xuIik7CisJCQl0aGlzLT5yZWFkX2J1ZiA9ICZkb2MyMDAwX3JlYWRidWZfZHdvcmQ7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZG9jMjAwMF9jb3VudF9jaGlwcyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl1aW50MTZfdCBtZnJpZDsKKwlpbnQgaTsKKworCS8qIE1heCA0IGNoaXBzIHBlciBmbG9vciBvbiBEaXNrT25DaGlwIDIwMDAgKi8KKwlkb2MtPmNoaXBzX3Blcl9mbG9vciA9IDQ7CisKKwkvKiBGaW5kIG91dCB3aGF0IHRoZSBmaXJzdCBjaGlwIGlzICovCisJbWZyaWQgPSBkb2MyMDB4X2lkZW50X2NoaXAobXRkLCAwKTsKKworCS8qIEZpbmQgaG93IG1hbnkgY2hpcHMgaW4gZWFjaCBmbG9vci4gKi8KKwlmb3IgKGkgPSAxOyBpIDwgNDsgaSsrKSB7CisJCWlmIChkb2MyMDB4X2lkZW50X2NoaXAobXRkLCBpKSAhPSBtZnJpZCkKKwkJCWJyZWFrOworCX0KKwlkb2MtPmNoaXBzX3Blcl9mbG9vciA9IGk7CisJcHJpbnRrKEtFUk5fREVCVUcgIkRldGVjdGVkICVkIGNoaXBzIHBlciBmbG9vci5cbiIsIGkpOworfQorCitzdGF0aWMgaW50IGRvYzIwMHhfd2FpdChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqdGhpcywgaW50IHN0YXRlKQoreworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKworCWludCBzdGF0dXM7CisKKwlEb0NfV2FpdFJlYWR5KGRvYyk7CisJdGhpcy0+Y21kZnVuYyhtdGQsIE5BTkRfQ01EX1NUQVRVUywgLTEsIC0xKTsKKwlEb0NfV2FpdFJlYWR5KGRvYyk7CisJc3RhdHVzID0gKGludCl0aGlzLT5yZWFkX2J5dGUobXRkKTsKKworCXJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyB2b2lkIGRvYzIwMDFfd3JpdGVfYnl0ZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyIGRhdHVtKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXZvaWQgX19pb21lbSAqZG9jcHRyID0gZG9jLT52aXJ0YWRyOworCisJV3JpdGVET0MoZGF0dW0sIGRvY3B0ciwgQ0RTTlNsb3dJTyk7CisJV3JpdGVET0MoZGF0dW0sIGRvY3B0ciwgTWlsX0NEU05fSU8pOworCVdyaXRlRE9DKGRhdHVtLCBkb2NwdHIsIFdyaXRlUGlwZVRlcm0pOworfQorCitzdGF0aWMgdV9jaGFyIGRvYzIwMDFfcmVhZF9ieXRlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXZvaWQgX19pb21lbSAqZG9jcHRyID0gZG9jLT52aXJ0YWRyOworCisJLypSZWFkRE9DKGRvY3B0ciwgQ0RTTlNsb3dJTyk7ICovCisJLyogMTEuNC41IC0tIGRlbGF5IHR3aWNlIHRvIGFsbG93IGV4dGVuZGVkIGxlbmd0aCBjeWNsZSAqLworCURvQ19EZWxheShkb2MsIDIpOworCVJlYWRET0MoZG9jcHRyLCBSZWFkUGlwZUluaXQpOworCS8qcmV0dXJuIFJlYWRET0MoZG9jcHRyLCBNaWxfQ0RTTl9JTyk7ICovCisJcmV0dXJuIFJlYWRET0MoZG9jcHRyLCBMYXN0RGF0YVJlYWQpOworfQorCitzdGF0aWMgdm9pZCBkb2MyMDAxX3dyaXRlYnVmKHN0cnVjdCBtdGRfaW5mbyAqbXRkLAorCQkJICAgICBjb25zdCB1X2NoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKwlpbnQgaTsKKworCWZvciAoaT0wOyBpIDwgbGVuOyBpKyspCisJCVdyaXRlRE9DXyhidWZbaV0sIGRvY3B0ciwgRG9DX01pbF9DRFNOX0lPICsgaSk7CisJLyogVGVybWluYXRlIHdyaXRlIHBpcGVsaW5lICovCisJV3JpdGVET0MoMHgwMCwgZG9jcHRyLCBXcml0ZVBpcGVUZXJtKTsKK30KKworc3RhdGljIHZvaWQgZG9jMjAwMV9yZWFkYnVmKHN0cnVjdCBtdGRfaW5mbyAqbXRkLAorCQkJICAgIHVfY2hhciAqYnVmLCBpbnQgbGVuKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXZvaWQgX19pb21lbSAqZG9jcHRyID0gZG9jLT52aXJ0YWRyOworCWludCBpOworCisJLyogU3RhcnQgcmVhZCBwaXBlbGluZSAqLworCVJlYWRET0MoZG9jcHRyLCBSZWFkUGlwZUluaXQpOworCisJZm9yIChpPTA7IGkgPCBsZW4tMTsgaSsrKQorCQlidWZbaV0gPSBSZWFkRE9DKGRvY3B0ciwgTWlsX0NEU05fSU8gKyAoaSAmIDB4ZmYpKTsKKworCS8qIFRlcm1pbmF0ZSByZWFkIHBpcGVsaW5lICovCisJYnVmW2ldID0gUmVhZERPQyhkb2NwdHIsIExhc3REYXRhUmVhZCk7Cit9CisKK3N0YXRpYyBpbnQgZG9jMjAwMV92ZXJpZnlidWYoc3RydWN0IG10ZF9pbmZvICptdGQsCisJCQkgICAgIGNvbnN0IHVfY2hhciAqYnVmLCBpbnQgbGVuKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXZvaWQgX19pb21lbSAqZG9jcHRyID0gZG9jLT52aXJ0YWRyOworCWludCBpOworCisJLyogU3RhcnQgcmVhZCBwaXBlbGluZSAqLworCVJlYWRET0MoZG9jcHRyLCBSZWFkUGlwZUluaXQpOworCisJZm9yIChpPTA7IGkgPCBsZW4tMTsgaSsrKQorCQlpZiAoYnVmW2ldICE9IFJlYWRET0MoZG9jcHRyLCBNaWxfQ0RTTl9JTykpIHsKKwkJCVJlYWRET0MoZG9jcHRyLCBMYXN0RGF0YVJlYWQpOworCQkJcmV0dXJuIGk7CisJCX0KKwlpZiAoYnVmW2ldICE9IFJlYWRET0MoZG9jcHRyLCBMYXN0RGF0YVJlYWQpKQorCQlyZXR1cm4gaTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVfY2hhciBkb2MyMDAxcGx1c19yZWFkX2J5dGUoc3RydWN0IG10ZF9pbmZvICptdGQpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisJdV9jaGFyIHJldDsKKworCVJlYWRET0MoZG9jcHRyLCBNcGx1c19SZWFkUGlwZUluaXQpOworCVJlYWRET0MoZG9jcHRyLCBNcGx1c19SZWFkUGlwZUluaXQpOworCXJldCA9IFJlYWRET0MoZG9jcHRyLCBNcGx1c19MYXN0RGF0YVJlYWQpOworCWlmIChkZWJ1ZykgcHJpbnRrKCJyZWFkX2J5dGUgcmV0dXJucyAlMDJ4XG4iLCByZXQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGRvYzIwMDFwbHVzX3dyaXRlYnVmKHN0cnVjdCBtdGRfaW5mbyAqbXRkLAorCQkJICAgICBjb25zdCB1X2NoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKwlpbnQgaTsKKworCWlmIChkZWJ1ZylwcmludGsoIndyaXRlYnVmIG9mICVkIGJ5dGVzOiAiLCBsZW4pOworCWZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHsKKwkJV3JpdGVET0NfKGJ1ZltpXSwgZG9jcHRyLCBEb0NfTWlsX0NEU05fSU8gKyBpKTsKKwkJaWYgKGRlYnVnICYmIGkgPCAxNikKKwkJCXByaW50aygiJTAyeCAiLCBidWZbaV0pOworCX0KKwlpZiAoZGVidWcpIHByaW50aygiXG4iKTsKK30KKworc3RhdGljIHZvaWQgZG9jMjAwMXBsdXNfcmVhZGJ1ZihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwKKwkJCSAgICB1X2NoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKwlpbnQgaTsKKworCWlmIChkZWJ1ZylwcmludGsoInJlYWRidWYgb2YgJWQgYnl0ZXM6ICIsIGxlbik7CisKKwkvKiBTdGFydCByZWFkIHBpcGVsaW5lICovCisJUmVhZERPQyhkb2NwdHIsIE1wbHVzX1JlYWRQaXBlSW5pdCk7CisJUmVhZERPQyhkb2NwdHIsIE1wbHVzX1JlYWRQaXBlSW5pdCk7CisKKwlmb3IgKGk9MDsgaSA8IGxlbi0yOyBpKyspIHsKKwkJYnVmW2ldID0gUmVhZERPQyhkb2NwdHIsIE1pbF9DRFNOX0lPKTsKKwkJaWYgKGRlYnVnICYmIGkgPCAxNikKKwkJCXByaW50aygiJTAyeCAiLCBidWZbaV0pOworCX0KKworCS8qIFRlcm1pbmF0ZSByZWFkIHBpcGVsaW5lICovCisJYnVmW2xlbi0yXSA9IFJlYWRET0MoZG9jcHRyLCBNcGx1c19MYXN0RGF0YVJlYWQpOworCWlmIChkZWJ1ZyAmJiBpIDwgMTYpCisJCXByaW50aygiJTAyeCAiLCBidWZbbGVuLTJdKTsKKwlidWZbbGVuLTFdID0gUmVhZERPQyhkb2NwdHIsIE1wbHVzX0xhc3REYXRhUmVhZCk7CisJaWYgKGRlYnVnICYmIGkgPCAxNikKKwkJcHJpbnRrKCIlMDJ4ICIsIGJ1ZltsZW4tMV0pOworCWlmIChkZWJ1ZykgcHJpbnRrKCJcbiIpOworfQorCitzdGF0aWMgaW50IGRvYzIwMDFwbHVzX3ZlcmlmeWJ1ZihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwKKwkJCSAgICAgY29uc3QgdV9jaGFyICpidWYsIGludCBsZW4pCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisJaW50IGk7CisKKwlpZiAoZGVidWcpcHJpbnRrKCJ2ZXJpZnlidWYgb2YgJWQgYnl0ZXM6ICIsIGxlbik7CisKKwkvKiBTdGFydCByZWFkIHBpcGVsaW5lICovCisJUmVhZERPQyhkb2NwdHIsIE1wbHVzX1JlYWRQaXBlSW5pdCk7CisJUmVhZERPQyhkb2NwdHIsIE1wbHVzX1JlYWRQaXBlSW5pdCk7CisKKwlmb3IgKGk9MDsgaSA8IGxlbi0yOyBpKyspCisJCWlmIChidWZbaV0gIT0gUmVhZERPQyhkb2NwdHIsIE1pbF9DRFNOX0lPKSkgeworCQkJUmVhZERPQyhkb2NwdHIsIE1wbHVzX0xhc3REYXRhUmVhZCk7CisJCQlSZWFkRE9DKGRvY3B0ciwgTXBsdXNfTGFzdERhdGFSZWFkKTsKKwkJCXJldHVybiBpOworCQl9CisJaWYgKGJ1ZltsZW4tMl0gIT0gUmVhZERPQyhkb2NwdHIsIE1wbHVzX0xhc3REYXRhUmVhZCkpCisJCXJldHVybiBsZW4tMjsKKwlpZiAoYnVmW2xlbi0xXSAhPSBSZWFkRE9DKGRvY3B0ciwgTXBsdXNfTGFzdERhdGFSZWFkKSkKKwkJcmV0dXJuIGxlbi0xOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkb2MyMDAxcGx1c19zZWxlY3RfY2hpcChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IGNoaXApCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisJaW50IGZsb29yID0gMDsKKworCWlmKGRlYnVnKXByaW50aygic2VsZWN0IGNoaXAgKCVkKVxuIiwgY2hpcCk7CisKKwlpZiAoY2hpcCA9PSAtMSkgeworCQkvKiBEaXNhYmxlIGZsYXNoIGludGVybmFsbHkgKi8KKwkJV3JpdGVET0MoMCwgZG9jcHRyLCBNcGx1c19GbGFzaFNlbGVjdCk7CisJCXJldHVybjsKKwl9CisKKwlmbG9vciA9IGNoaXAgLyBkb2MtPmNoaXBzX3Blcl9mbG9vcjsKKwljaGlwIC09IChmbG9vciAqICBkb2MtPmNoaXBzX3Blcl9mbG9vcik7CisKKwkvKiBBc3NlcnQgQ2hpcEVuYWJsZSBhbmQgZGVhc3NlcnQgV3JpdGVQcm90ZWN0ICovCisJV3JpdGVET0MoKERPQ19GTEFTSF9DRSksIGRvY3B0ciwgTXBsdXNfRmxhc2hTZWxlY3QpOworCXRoaXMtPmNtZGZ1bmMobXRkLCBOQU5EX0NNRF9SRVNFVCwgLTEsIC0xKTsKKworCWRvYy0+Y3VyY2hpcCA9IGNoaXA7CisJZG9jLT5jdXJmbG9vciA9IGZsb29yOworfQorCitzdGF0aWMgdm9pZCBkb2MyMDB4X3NlbGVjdF9jaGlwKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY2hpcCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKwlpbnQgZmxvb3IgPSAwOworCisJaWYoZGVidWcpcHJpbnRrKCJzZWxlY3QgY2hpcCAoJWQpXG4iLCBjaGlwKTsKKworCWlmIChjaGlwID09IC0xKQorCQlyZXR1cm47CisKKwlmbG9vciA9IGNoaXAgLyBkb2MtPmNoaXBzX3Blcl9mbG9vcjsKKwljaGlwIC09IChmbG9vciAqICBkb2MtPmNoaXBzX3Blcl9mbG9vcik7CisKKwkvKiAxMS40LjQgLS0gZGVhc3NlcnQgQ0UgYmVmb3JlIGNoYW5naW5nIGNoaXAgKi8KKwlkb2MyMDB4X2h3Y29udHJvbChtdGQsIE5BTkRfQ1RMX0NMUk5DRSk7CisKKwlXcml0ZURPQyhmbG9vciwgZG9jcHRyLCBGbG9vclNlbGVjdCk7CisJV3JpdGVET0MoY2hpcCwgZG9jcHRyLCBDRFNORGV2aWNlU2VsZWN0KTsKKworCWRvYzIwMHhfaHdjb250cm9sKG10ZCwgTkFORF9DVExfU0VUTkNFKTsKKworCWRvYy0+Y3VyY2hpcCA9IGNoaXA7CisJZG9jLT5jdXJmbG9vciA9IGZsb29yOworfQorCitzdGF0aWMgdm9pZCBkb2MyMDB4X2h3Y29udHJvbChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IGNtZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKworCXN3aXRjaChjbWQpIHsKKwljYXNlIE5BTkRfQ1RMX1NFVE5DRToKKwkJZG9jLT5DRFNOQ29udHJvbCB8PSBDRFNOX0NUUkxfQ0U7CisJCWJyZWFrOworCWNhc2UgTkFORF9DVExfQ0xSTkNFOgorCQlkb2MtPkNEU05Db250cm9sICY9IH5DRFNOX0NUUkxfQ0U7CisJCWJyZWFrOworCWNhc2UgTkFORF9DVExfU0VUQ0xFOgorCQlkb2MtPkNEU05Db250cm9sIHw9IENEU05fQ1RSTF9DTEU7CisJCWJyZWFrOworCWNhc2UgTkFORF9DVExfQ0xSQ0xFOgorCQlkb2MtPkNEU05Db250cm9sICY9IH5DRFNOX0NUUkxfQ0xFOworCQlicmVhazsKKwljYXNlIE5BTkRfQ1RMX1NFVEFMRToKKwkJZG9jLT5DRFNOQ29udHJvbCB8PSBDRFNOX0NUUkxfQUxFOworCQlicmVhazsKKwljYXNlIE5BTkRfQ1RMX0NMUkFMRToKKwkJZG9jLT5DRFNOQ29udHJvbCAmPSB+Q0RTTl9DVFJMX0FMRTsKKwkJYnJlYWs7CisJY2FzZSBOQU5EX0NUTF9TRVRXUDoKKwkJZG9jLT5DRFNOQ29udHJvbCB8PSBDRFNOX0NUUkxfV1A7CisJCWJyZWFrOworCWNhc2UgTkFORF9DVExfQ0xSV1A6CisJCWRvYy0+Q0RTTkNvbnRyb2wgJj0gfkNEU05fQ1RSTF9XUDsKKwkJYnJlYWs7CisJfQorCWlmIChkZWJ1ZylwcmludGsoImh3Y29udHJvbCglZCk6ICUwMnhcbiIsIGNtZCwgZG9jLT5DRFNOQ29udHJvbCk7CisJV3JpdGVET0MoZG9jLT5DRFNOQ29udHJvbCwgZG9jcHRyLCBDRFNOQ29udHJvbCk7CisJLyogMTEuNC4zIC0tIDQgTk9QcyBhZnRlciBDU0ROQ29udHJvbCB3cml0ZSAqLworCURvQ19EZWxheShkb2MsIDQpOworfQorCitzdGF0aWMgdm9pZCBkb2MyMDAxcGx1c19jb21tYW5kIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdW5zaWduZWQgY29tbWFuZCwgaW50IGNvbHVtbiwgaW50IHBhZ2VfYWRkcikKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKworCS8qCisJICogTXVzdCB0ZXJtaW5hdGUgd3JpdGUgcGlwZWxpbmUgYmVmb3JlIHNlbmRpbmcgYW55IGNvbW1hbmRzCisJICogdG8gdGhlIGRldmljZS4KKwkgKi8KKwlpZiAoY29tbWFuZCA9PSBOQU5EX0NNRF9QQUdFUFJPRykgeworCQlXcml0ZURPQygweDAwLCBkb2NwdHIsIE1wbHVzX1dyaXRlUGlwZVRlcm0pOworCQlXcml0ZURPQygweDAwLCBkb2NwdHIsIE1wbHVzX1dyaXRlUGlwZVRlcm0pOworCX0KKworCS8qCisJICogV3JpdGUgb3V0IHRoZSBjb21tYW5kIHRvIHRoZSBkZXZpY2UuCisJICovCisJaWYgKGNvbW1hbmQgPT0gTkFORF9DTURfU0VRSU4pIHsKKwkJaW50IHJlYWRjbWQ7CisKKwkJaWYgKGNvbHVtbiA+PSBtdGQtPm9vYmJsb2NrKSB7CisJCQkvKiBPT0IgYXJlYSAqLworCQkJY29sdW1uIC09IG10ZC0+b29iYmxvY2s7CisJCQlyZWFkY21kID0gTkFORF9DTURfUkVBRE9PQjsKKwkJfSBlbHNlIGlmIChjb2x1bW4gPCAyNTYpIHsKKwkJCS8qIEZpcnN0IDI1NiBieXRlcyAtLT4gUkVBRDAgKi8KKwkJCXJlYWRjbWQgPSBOQU5EX0NNRF9SRUFEMDsKKwkJfSBlbHNlIHsKKwkJCWNvbHVtbiAtPSAyNTY7CisJCQlyZWFkY21kID0gTkFORF9DTURfUkVBRDE7CisJCX0KKwkJV3JpdGVET0MocmVhZGNtZCwgZG9jcHRyLCBNcGx1c19GbGFzaENtZCk7CisJfQorCVdyaXRlRE9DKGNvbW1hbmQsIGRvY3B0ciwgTXBsdXNfRmxhc2hDbWQpOworCVdyaXRlRE9DKDAsIGRvY3B0ciwgTXBsdXNfV3JpdGVQaXBlVGVybSk7CisJV3JpdGVET0MoMCwgZG9jcHRyLCBNcGx1c19Xcml0ZVBpcGVUZXJtKTsKKworCWlmIChjb2x1bW4gIT0gLTEgfHwgcGFnZV9hZGRyICE9IC0xKSB7CisJCS8qIFNlcmlhbGx5IGlucHV0IGFkZHJlc3MgKi8KKwkJaWYgKGNvbHVtbiAhPSAtMSkgeworCQkJLyogQWRqdXN0IGNvbHVtbnMgZm9yIDE2IGJpdCBidXN3aWR0aCAqLworCQkJaWYgKHRoaXMtPm9wdGlvbnMgJiBOQU5EX0JVU1dJRFRIXzE2KQorCQkJCWNvbHVtbiA+Pj0gMTsKKwkJCVdyaXRlRE9DKGNvbHVtbiwgZG9jcHRyLCBNcGx1c19GbGFzaEFkZHJlc3MpOworCQl9CisJCWlmIChwYWdlX2FkZHIgIT0gLTEpIHsKKwkJCVdyaXRlRE9DKCh1bnNpZ25lZCBjaGFyKSAocGFnZV9hZGRyICYgMHhmZiksIGRvY3B0ciwgTXBsdXNfRmxhc2hBZGRyZXNzKTsKKwkJCVdyaXRlRE9DKCh1bnNpZ25lZCBjaGFyKSAoKHBhZ2VfYWRkciA+PiA4KSAmIDB4ZmYpLCBkb2NwdHIsIE1wbHVzX0ZsYXNoQWRkcmVzcyk7CisJCQkvKiBPbmUgbW9yZSBhZGRyZXNzIGN5Y2xlIGZvciBoaWdoZXIgZGVuc2l0eSBkZXZpY2VzICovCisJCQlpZiAodGhpcy0+Y2hpcHNpemUgJiAweDBjMDAwMDAwKSB7CisJCQkJV3JpdGVET0MoKHVuc2lnbmVkIGNoYXIpICgocGFnZV9hZGRyID4+IDE2KSAmIDB4MGYpLCBkb2NwdHIsIE1wbHVzX0ZsYXNoQWRkcmVzcyk7CisJCQkJcHJpbnRrKCJoaWdoIGRlbnNpdHlcbiIpOworCQkJfQorCQl9CisJCVdyaXRlRE9DKDAsIGRvY3B0ciwgTXBsdXNfV3JpdGVQaXBlVGVybSk7CisJCVdyaXRlRE9DKDAsIGRvY3B0ciwgTXBsdXNfV3JpdGVQaXBlVGVybSk7CisJCS8qIGRlYXNzZXJ0IEFMRSAqLworCQlpZiAoY29tbWFuZCA9PSBOQU5EX0NNRF9SRUFEMCB8fCBjb21tYW5kID09IE5BTkRfQ01EX1JFQUQxIHx8IGNvbW1hbmQgPT0gTkFORF9DTURfUkVBRE9PQiB8fCBjb21tYW5kID09IE5BTkRfQ01EX1JFQURJRCkKKwkJCVdyaXRlRE9DKDAsIGRvY3B0ciwgTXBsdXNfRmxhc2hDb250cm9sKTsKKwl9CisKKwkvKgorCSAqIHByb2dyYW0gYW5kIGVyYXNlIGhhdmUgdGhlaXIgb3duIGJ1c3kgaGFuZGxlcnMKKwkgKiBzdGF0dXMgYW5kIHNlcXVlbnRpYWwgaW4gbmVlZHMgbm8gZGVsYXkKKwkqLworCXN3aXRjaCAoY29tbWFuZCkgeworCisJY2FzZSBOQU5EX0NNRF9QQUdFUFJPRzoKKwljYXNlIE5BTkRfQ01EX0VSQVNFMToKKwljYXNlIE5BTkRfQ01EX0VSQVNFMjoKKwljYXNlIE5BTkRfQ01EX1NFUUlOOgorCWNhc2UgTkFORF9DTURfU1RBVFVTOgorCQlyZXR1cm47CisKKwljYXNlIE5BTkRfQ01EX1JFU0VUOgorCQlpZiAodGhpcy0+ZGV2X3JlYWR5KQorCQkJYnJlYWs7CisJCXVkZWxheSh0aGlzLT5jaGlwX2RlbGF5KTsKKwkJV3JpdGVET0MoTkFORF9DTURfU1RBVFVTLCBkb2NwdHIsIE1wbHVzX0ZsYXNoQ21kKTsKKwkJV3JpdGVET0MoMCwgZG9jcHRyLCBNcGx1c19Xcml0ZVBpcGVUZXJtKTsKKwkJV3JpdGVET0MoMCwgZG9jcHRyLCBNcGx1c19Xcml0ZVBpcGVUZXJtKTsKKwkJd2hpbGUgKCAhKHRoaXMtPnJlYWRfYnl0ZShtdGQpICYgMHg0MCkpOworCQlyZXR1cm47CisKKwkvKiBUaGlzIGFwcGxpZXMgdG8gcmVhZCBjb21tYW5kcyAqLworCWRlZmF1bHQ6CisJCS8qCisJCSAqIElmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBidXN5IHBpbiwgd2UgYXBwbHkgdGhlIGdpdmVuCisJCSAqIGNvbW1hbmQgZGVsYXkKKwkJKi8KKwkJaWYgKCF0aGlzLT5kZXZfcmVhZHkpIHsKKwkJCXVkZWxheSAodGhpcy0+Y2hpcF9kZWxheSk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwkvKiBBcHBseSB0aGlzIHNob3J0IGRlbGF5IGFsd2F5cyB0byBlbnN1cmUgdGhhdCB3ZSBkbyB3YWl0IHRXQiBpbgorCSAqIGFueSBjYXNlIG9uIGFueSBtYWNoaW5lLiAqLworCW5kZWxheSAoMTAwKTsKKwkvKiB3YWl0IHVudGlsIGNvbW1hbmQgaXMgcHJvY2Vzc2VkICovCisJd2hpbGUgKCF0aGlzLT5kZXZfcmVhZHkobXRkKSk7Cit9CisKK3N0YXRpYyBpbnQgZG9jMjAweF9kZXZfcmVhZHkoc3RydWN0IG10ZF9pbmZvICptdGQpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisKKwlpZiAoRG9DX2lzX01pbGxlbm5pdW1QbHVzKGRvYykpIHsKKwkJLyogMTEuNC4yIC0tIG11c3QgTk9QIGZvdXIgdGltZXMgYmVmb3JlIGNoZWNraW5nIEZSL0IjICovCisJCURvQ19EZWxheShkb2MsIDQpOworCQlpZiAoKFJlYWRET0MoZG9jcHRyLCBNcGx1c19GbGFzaENvbnRyb2wpICYgQ0RTTl9DVFJMX0ZSX0JfTUFTSykgIT0gQ0RTTl9DVFJMX0ZSX0JfTUFTSykgeworCQkJaWYoZGVidWcpCisJCQkJcHJpbnRrKCJub3QgcmVhZHlcbiIpOworCQkJcmV0dXJuIDA7CisJCX0KKwkJaWYgKGRlYnVnKXByaW50aygid2FzIHJlYWR5XG4iKTsKKwkJcmV0dXJuIDE7CisJfSBlbHNlIHsKKwkJLyogMTEuNC4yIC0tIG11c3QgTk9QIGZvdXIgdGltZXMgYmVmb3JlIGNoZWNraW5nIEZSL0IjICovCisJCURvQ19EZWxheShkb2MsIDQpOworCQlpZiAoIShSZWFkRE9DKGRvY3B0ciwgQ0RTTkNvbnRyb2wpICYgQ0RTTl9DVFJMX0ZSX0IpKSB7CisJCQlpZihkZWJ1ZykKKwkJCQlwcmludGsoIm5vdCByZWFkeVxuIik7CisJCQlyZXR1cm4gMDsKKwkJfQorCQkvKiAxMS40LjIgLS0gTXVzdCBOT1AgdHdpY2UgaWYgaXQncyByZWFkeSAqLworCQlEb0NfRGVsYXkoZG9jLCAyKTsKKwkJaWYgKGRlYnVnKXByaW50aygid2FzIHJlYWR5XG4iKTsKKwkJcmV0dXJuIDE7CisJfQorfQorCitzdGF0aWMgaW50IGRvYzIwMHhfYmxvY2tfYmFkKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3Qgb2ZzLCBpbnQgZ2V0Y2hpcCkKK3sKKwkvKiBUaGlzIGlzIG91ciBsYXN0IHJlc29ydCBpZiB3ZSBjb3VsZG4ndCBmaW5kIG9yIGNyZWF0ZSBhIEJCVC4gIEp1c3QKKwkgICBwcmV0ZW5kIGFsbCBibG9ja3MgYXJlIGdvb2QuICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGRvYzIwMHhfZW5hYmxlX2h3ZWNjKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgbW9kZSkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKworCS8qIFByaW1lIHRoZSBFQ0MgZW5naW5lICovCisJc3dpdGNoKG1vZGUpIHsKKwljYXNlIE5BTkRfRUNDX1JFQUQ6CisJCVdyaXRlRE9DKERPQ19FQ0NfUkVTRVQsIGRvY3B0ciwgRUNDQ29uZik7CisJCVdyaXRlRE9DKERPQ19FQ0NfRU4sIGRvY3B0ciwgRUNDQ29uZik7CisJCWJyZWFrOworCWNhc2UgTkFORF9FQ0NfV1JJVEU6CisJCVdyaXRlRE9DKERPQ19FQ0NfUkVTRVQsIGRvY3B0ciwgRUNDQ29uZik7CisJCVdyaXRlRE9DKERPQ19FQ0NfRU4gfCBET0NfRUNDX1JXLCBkb2NwdHIsIEVDQ0NvbmYpOworCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGRvYzIwMDFwbHVzX2VuYWJsZV9od2VjYyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IG1vZGUpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisKKwkvKiBQcmltZSB0aGUgRUNDIGVuZ2luZSAqLworCXN3aXRjaChtb2RlKSB7CisJY2FzZSBOQU5EX0VDQ19SRUFEOgorCQlXcml0ZURPQyhET0NfRUNDX1JFU0VULCBkb2NwdHIsIE1wbHVzX0VDQ0NvbmYpOworCQlXcml0ZURPQyhET0NfRUNDX0VOLCBkb2NwdHIsIE1wbHVzX0VDQ0NvbmYpOworCQlicmVhazsKKwljYXNlIE5BTkRfRUNDX1dSSVRFOgorCQlXcml0ZURPQyhET0NfRUNDX1JFU0VULCBkb2NwdHIsIE1wbHVzX0VDQ0NvbmYpOworCQlXcml0ZURPQyhET0NfRUNDX0VOIHwgRE9DX0VDQ19SVywgZG9jcHRyLCBNcGx1c19FQ0NDb25mKTsKKwkJYnJlYWs7CisJfQorfQorCisvKiBUaGlzIGNvZGUgaXMgb25seSBjYWxsZWQgb24gd3JpdGUgKi8KK3N0YXRpYyBpbnQgZG9jMjAweF9jYWxjdWxhdGVfZWNjKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCB1X2NoYXIgKmRhdCwKKwkJCQkgdW5zaWduZWQgY2hhciAqZWNjX2NvZGUpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJdm9pZCBfX2lvbWVtICpkb2NwdHIgPSBkb2MtPnZpcnRhZHI7CisJaW50IGk7CisJaW50IGVtcHR5bWF0Y2ggPSAxOworCisJLyogZmx1c2ggdGhlIHBpcGVsaW5lICovCisJaWYgKERvQ19pc18yMDAwKGRvYykpIHsKKwkJV3JpdGVET0MoZG9jLT5DRFNOQ29udHJvbCAmIH5DRFNOX0NUUkxfRkxBU0hfSU8sIGRvY3B0ciwgQ0RTTkNvbnRyb2wpOworCQlXcml0ZURPQygwLCBkb2NwdHIsIDJrX0NEU05fSU8pOworCQlXcml0ZURPQygwLCBkb2NwdHIsIDJrX0NEU05fSU8pOworCQlXcml0ZURPQygwLCBkb2NwdHIsIDJrX0NEU05fSU8pOworCQlXcml0ZURPQyhkb2MtPkNEU05Db250cm9sLCBkb2NwdHIsIENEU05Db250cm9sKTsKKwl9IGVsc2UgaWYgKERvQ19pc19NaWxsZW5uaXVtUGx1cyhkb2MpKSB7CisJCVdyaXRlRE9DKDAsIGRvY3B0ciwgTXBsdXNfTk9QKTsKKwkJV3JpdGVET0MoMCwgZG9jcHRyLCBNcGx1c19OT1ApOworCQlXcml0ZURPQygwLCBkb2NwdHIsIE1wbHVzX05PUCk7CisJfSBlbHNlIHsKKwkJV3JpdGVET0MoMCwgZG9jcHRyLCBOT1ApOworCQlXcml0ZURPQygwLCBkb2NwdHIsIE5PUCk7CisJCVdyaXRlRE9DKDAsIGRvY3B0ciwgTk9QKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7CisJCWlmIChEb0NfaXNfTWlsbGVubml1bVBsdXMoZG9jKSkKKwkJCWVjY19jb2RlW2ldID0gUmVhZERPQ18oZG9jcHRyLCBEb0NfTXBsdXNfRUNDU3luZHJvbWUwICsgaSk7CisJCWVsc2UKKwkJCWVjY19jb2RlW2ldID0gUmVhZERPQ18oZG9jcHRyLCBEb0NfRUNDU3luZHJvbWUwICsgaSk7CisJCWlmIChlY2NfY29kZVtpXSAhPSBlbXB0eV93cml0ZV9lY2NbaV0pCisJCQllbXB0eW1hdGNoID0gMDsKKwl9CisJaWYgKERvQ19pc19NaWxsZW5uaXVtUGx1cyhkb2MpKQorCQlXcml0ZURPQyhET0NfRUNDX0RJUywgZG9jcHRyLCBNcGx1c19FQ0NDb25mKTsKKwllbHNlCisJCVdyaXRlRE9DKERPQ19FQ0NfRElTLCBkb2NwdHIsIEVDQ0NvbmYpOworI2lmIDAKKwkvKiBJZiBlbXB0eW1hdGNoPTEsIHdlIG1pZ2h0IGhhdmUgYW4gYWxsLTB4ZmYgZGF0YSBidWZmZXIuICBDaGVjay4gKi8KKwlpZiAoZW1wdHltYXRjaCkgeworCQkvKiBOb3RlOiB0aGlzIHNvbWV3aGF0IGV4cGVuc2l2ZSB0ZXN0IHNob3VsZCBub3QgYmUgdHJpZ2dlcmVkCisJCSAgIG9mdGVuLiAgSXQgY291bGQgYmUgb3B0aW1pemVkIGF3YXkgYnkgZXhhbWluaW5nIHRoZSBkYXRhIGluCisJCSAgIHRoZSB3cml0ZWJ1ZiByb3V0aW5lLCBhbmQgcmVtZW1iZXJpbmcgdGhlIHJlc3VsdC4gKi8KKwkJZm9yIChpID0gMDsgaSA8IDUxMjsgaSsrKSB7CisJCQlpZiAoZGF0W2ldID09IDB4ZmYpIGNvbnRpbnVlOworCQkJZW1wdHltYXRjaCA9IDA7CisJCQlicmVhazsKKwkJfQorCX0KKwkvKiBJZiBlbXB0eW1hdGNoIHN0aWxsID0xLCB3ZSBkbyBoYXZlIGFuIGFsbC0weGZmIGRhdGEgYnVmZmVyLgorCSAgIFJldHVybiBhbGwtMHhmZiBlY2MgdmFsdWUgaW5zdGVhZCBvZiB0aGUgY29tcHV0ZWQgb25lLCBzbworCSAgIGl0J2xsIGxvb2sganVzdCBsaWtlIGEgZnJlc2hseS1lcmFzZWQgcGFnZS4gKi8KKwlpZiAoZW1wdHltYXRjaCkgbWVtc2V0KGVjY19jb2RlLCAweGZmLCA2KTsKKyNlbmRpZgorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRvYzIwMHhfY29ycmVjdF9kYXRhKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1X2NoYXIgKmRhdCwgdV9jaGFyICpyZWFkX2VjYywgdV9jaGFyICpjYWxjX2VjYykKK3sKKwlpbnQgaSwgcmV0ID0gMDsKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKwl2b2lkIF9faW9tZW0gKmRvY3B0ciA9IGRvYy0+dmlydGFkcjsKKwl2b2xhdGlsZSB1X2NoYXIgZHVtbXk7CisJaW50IGVtcHR5bWF0Y2ggPSAxOworCisJLyogZmx1c2ggdGhlIHBpcGVsaW5lICovCisJaWYgKERvQ19pc18yMDAwKGRvYykpIHsKKwkJZHVtbXkgPSBSZWFkRE9DKGRvY3B0ciwgMmtfRUNDU3RhdHVzKTsKKwkJZHVtbXkgPSBSZWFkRE9DKGRvY3B0ciwgMmtfRUNDU3RhdHVzKTsKKwkJZHVtbXkgPSBSZWFkRE9DKGRvY3B0ciwgMmtfRUNDU3RhdHVzKTsKKwl9IGVsc2UgaWYgKERvQ19pc19NaWxsZW5uaXVtUGx1cyhkb2MpKSB7CisJCWR1bW15ID0gUmVhZERPQyhkb2NwdHIsIE1wbHVzX0VDQ0NvbmYpOworCQlkdW1teSA9IFJlYWRET0MoZG9jcHRyLCBNcGx1c19FQ0NDb25mKTsKKwkJZHVtbXkgPSBSZWFkRE9DKGRvY3B0ciwgTXBsdXNfRUNDQ29uZik7CisJfSBlbHNlIHsKKwkJZHVtbXkgPSBSZWFkRE9DKGRvY3B0ciwgRUNDQ29uZik7CisJCWR1bW15ID0gUmVhZERPQyhkb2NwdHIsIEVDQ0NvbmYpOworCQlkdW1teSA9IFJlYWRET0MoZG9jcHRyLCBFQ0NDb25mKTsKKwl9CisKKwkvKiBFcnJvciBvY2N1cmVkID8gKi8KKwlpZiAoZHVtbXkgJiAweDgwKSB7CisJCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspIHsKKwkJCWlmIChEb0NfaXNfTWlsbGVubml1bVBsdXMoZG9jKSkKKwkJCQljYWxjX2VjY1tpXSA9IFJlYWRET0NfKGRvY3B0ciwgRG9DX01wbHVzX0VDQ1N5bmRyb21lMCArIGkpOworCQkJZWxzZQorCQkJCWNhbGNfZWNjW2ldID0gUmVhZERPQ18oZG9jcHRyLCBEb0NfRUNDU3luZHJvbWUwICsgaSk7CisJCQlpZiAoY2FsY19lY2NbaV0gIT0gZW1wdHlfcmVhZF9zeW5kcm9tZVtpXSkKKwkJCQllbXB0eW1hdGNoID0gMDsKKwkJfQorCQkvKiBJZiBlbXB0eW1hdGNoPTEsIHRoZSByZWFkIHN5bmRyb21lIGlzIGNvbnNpc3RlbnQgd2l0aCBhbgorCQkgICBhbGwtMHhmZiBkYXRhIGFuZCBzdG9yZWQgZWNjIGJsb2NrLiAgQ2hlY2sgdGhlIHN0b3JlZCBlY2MuICovCisJCWlmIChlbXB0eW1hdGNoKSB7CisJCQlmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7CisJCQkJaWYgKHJlYWRfZWNjW2ldID09IDB4ZmYpIGNvbnRpbnVlOworCQkJCWVtcHR5bWF0Y2ggPSAwOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCS8qIElmIGVtcHR5bWF0Y2ggc3RpbGwgPTEsIGNoZWNrIHRoZSBkYXRhIGJsb2NrLiAqLworCQlpZiAoZW1wdHltYXRjaCkgeworCQkvKiBOb3RlOiB0aGlzIHNvbWV3aGF0IGV4cGVuc2l2ZSB0ZXN0IHNob3VsZCBub3QgYmUgdHJpZ2dlcmVkCisJCSAgIG9mdGVuLiAgSXQgY291bGQgYmUgb3B0aW1pemVkIGF3YXkgYnkgZXhhbWluaW5nIHRoZSBkYXRhIGluCisJCSAgIHRoZSByZWFkYnVmIHJvdXRpbmUsIGFuZCByZW1lbWJlcmluZyB0aGUgcmVzdWx0LiAqLworCQkJZm9yIChpID0gMDsgaSA8IDUxMjsgaSsrKSB7CisJCQkJaWYgKGRhdFtpXSA9PSAweGZmKSBjb250aW51ZTsKKwkJCQllbXB0eW1hdGNoID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQkvKiBJZiBlbXB0eW1hdGNoIHN0aWxsID0xLCB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgYSBmcmVzaGx5LQorCQkgICBlcmFzZWQgYmxvY2ssIGluIHdoaWNoIGNhc2UgdGhlIEVDQyB3aWxsIG5vdCBjb21lIG91dCByaWdodC4KKwkJICAgV2UnbGwgc3VwcHJlc3MgdGhlIGVycm9yIGFuZCB0ZWxsIHRoZSBjYWxsZXIgZXZlcnl0aGluZydzCisJCSAgIE9LLiAgQmVjYXVzZSBpdCBpcy4gKi8KKwkJaWYgKCFlbXB0eW1hdGNoKSByZXQgPSBkb2NfZWNjX2RlY29kZSAocnNfZGVjb2RlciwgZGF0LCBjYWxjX2VjYyk7CisJCWlmIChyZXQgPiAwKQorCQkJcHJpbnRrKEtFUk5fRVJSICJkb2MyMDB4X2NvcnJlY3RfZGF0YSBjb3JyZWN0ZWQgJWQgZXJyb3JzXG4iLCByZXQpOworCX0KKwlpZiAoRG9DX2lzX01pbGxlbm5pdW1QbHVzKGRvYykpCisJCVdyaXRlRE9DKERPQ19FQ0NfRElTLCBkb2NwdHIsIE1wbHVzX0VDQ0NvbmYpOworCWVsc2UKKwkJV3JpdGVET0MoRE9DX0VDQ19ESVMsIGRvY3B0ciwgRUNDQ29uZik7CisJaWYgKG5vX2VjY19mYWlsdXJlcyAmJiAocmV0ID09IC0xKSkgeworCQlwcmludGsoS0VSTl9FUlIgInN1cHByZXNzaW5nIEVDQyBmYWlsdXJlXG4iKTsKKwkJcmV0ID0gMDsKKwl9CisJcmV0dXJuIHJldDsKK30KKworLyp1X2NoYXIgbXlkYXRhYnVmWzUyOF07ICovCisKK3N0YXRpYyBzdHJ1Y3QgbmFuZF9vb2JpbmZvIGRvYzIwMHhfb29iaW5mbyA9IHsKKwkudXNlZWNjID0gTVREX05BTkRFQ0NfQVVUT1BMQUNFLAorCS5lY2NieXRlcyA9IDYsCisJLmVjY3BvcyA9IHswLCAxLCAyLCAzLCA0LCA1fSwKKwkub29iZnJlZSA9IHsgezgsIDh9IH0KK307CisKKy8qIEZpbmQgdGhlIChJKU5GVEwgTWVkaWEgSGVhZGVyLCBhbmQgb3B0aW9uYWxseSBhbHNvIHRoZSBtaXJyb3IgbWVkaWEgaGVhZGVyLgorICAgT24gc3VjZXNzZnVsIHJldHVybiwgYnVmIHdpbGwgY29udGFpbiBhIGNvcHkgb2YgdGhlIG1lZGlhIGhlYWRlciBmb3IKKyAgIGZ1cnRoZXIgcHJvY2Vzc2luZy4gIGlkIGlzIHRoZSBzdHJpbmcgdG8gc2NhbiBmb3IsIGFuZCB3aWxsIHByZXN1bWFibHkgYmUKKyAgIGVpdGhlciAiQU5BTkQiIG9yICJCTkFORCIuICBJZiBmaW5kbWlycm9yPTEsIGFsc28gbG9vayBmb3IgdGhlIG1pcnJvciBtZWRpYQorICAgaGVhZGVyLiAgVGhlIHBhZ2UgI3Mgb2YgdGhlIGZvdW5kIG1lZGlhIGhlYWRlcnMgYXJlIHBsYWNlZCBpbiBtaDBfcGFnZSBhbmQKKyAgIG1oMV9wYWdlIGluIHRoZSBET0MgcHJpdmF0ZSBzdHJ1Y3R1cmUuICovCitzdGF0aWMgaW50IF9faW5pdCBmaW5kX21lZGlhX2hlYWRlcnMoc3RydWN0IG10ZF9pbmZvICptdGQsIHVfY2hhciAqYnVmLAorCQkJCSAgICAgY29uc3QgY2hhciAqaWQsIGludCBmaW5kbWlycm9yKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXVuc2lnbmVkIG9mZnMsIGVuZCA9IChNQVhfTUVESUFIRUFERVJfU0NBTiA8PCB0aGlzLT5waHlzX2VyYXNlX3NoaWZ0KTsKKwlpbnQgcmV0OworCXNpemVfdCByZXRsZW47CisKKwllbmQgPSBtaW4oZW5kLCBtdGQtPnNpemUpOyAvKiBwYXJhbm9pYSAqLworCWZvciAob2ZmcyA9IDA7IG9mZnMgPCBlbmQ7IG9mZnMgKz0gbXRkLT5lcmFzZXNpemUpIHsKKwkJcmV0ID0gbXRkLT5yZWFkKG10ZCwgb2ZmcywgbXRkLT5vb2JibG9jaywgJnJldGxlbiwgYnVmKTsKKwkJaWYgKHJldGxlbiAhPSBtdGQtPm9vYmJsb2NrKSBjb250aW51ZTsKKwkJaWYgKHJldCkgeworCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiRUNDIGVycm9yIHNjYW5uaW5nIERPQyBhdCAweCV4XG4iLAorCQkJCW9mZnMpOworCQl9CisJCWlmIChtZW1jbXAoYnVmLCBpZCwgNikpIGNvbnRpbnVlOworCQlwcmludGsoS0VSTl9JTkZPICJGb3VuZCBEaXNrT25DaGlwICVzIE1lZGlhIEhlYWRlciBhdCAweCV4XG4iLCBpZCwgb2Zmcyk7CisJCWlmIChkb2MtPm1oMF9wYWdlID09IC0xKSB7CisJCQlkb2MtPm1oMF9wYWdlID0gb2ZmcyA+PiB0aGlzLT5wYWdlX3NoaWZ0OworCQkJaWYgKCFmaW5kbWlycm9yKSByZXR1cm4gMTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWRvYy0+bWgxX3BhZ2UgPSBvZmZzID4+IHRoaXMtPnBhZ2Vfc2hpZnQ7CisJCXJldHVybiAyOworCX0KKwlpZiAoZG9jLT5taDBfcGFnZSA9PSAtMSkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HICJEaXNrT25DaGlwICVzIE1lZGlhIEhlYWRlciBub3QgZm91bmQuXG4iLCBpZCk7CisJCXJldHVybiAwOworCX0KKwkvKiBPbmx5IG9uZSBtZWRpYWhlYWRlciB3YXMgZm91bmQuICBXZSB3YW50IGJ1ZiB0byBjb250YWluIGEKKwkgICBtZWRpYWhlYWRlciBvbiByZXR1cm4sIHNvIHdlJ2xsIGhhdmUgdG8gcmUtcmVhZCB0aGUgb25lIHdlIGZvdW5kLiAqLworCW9mZnMgPSBkb2MtPm1oMF9wYWdlIDw8IHRoaXMtPnBhZ2Vfc2hpZnQ7CisJcmV0ID0gbXRkLT5yZWFkKG10ZCwgb2ZmcywgbXRkLT5vb2JibG9jaywgJnJldGxlbiwgYnVmKTsKKwlpZiAocmV0bGVuICE9IG10ZC0+b29iYmxvY2spIHsKKwkJLyogSW5zYW5pdHkuICBHaXZlIHVwLiAqLworCQlwcmludGsoS0VSTl9FUlIgIlJlYWQgRGlza09uQ2hpcCBNZWRpYSBIZWFkZXIgb25jZSwgYnV0IGNhbid0IHJlcmVhZCBpdD8/P1xuIik7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGlubGluZSBpbnQgX19pbml0IG5mdGxfcGFydHNjYW4oc3RydWN0IG10ZF9pbmZvICptdGQsCisJCQkJc3RydWN0IG10ZF9wYXJ0aXRpb24gKnBhcnRzKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCWludCByZXQgPSAwOworCXVfY2hhciAqYnVmOworCXN0cnVjdCBORlRMTWVkaWFIZWFkZXIgKm1oOworCWNvbnN0IHVuc2lnbmVkIHBzaXplID0gMSA8PCB0aGlzLT5wYWdlX3NoaWZ0OworCXVuc2lnbmVkIGJsb2NrcywgbWF4YmxvY2tzOworCWludCBvZmZzLCBudW1oZWFkZXJzOworCisJYnVmID0ga21hbGxvYyhtdGQtPm9vYmJsb2NrLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZikgeworCQlwcmludGsoS0VSTl9FUlIgIkRpc2tPbkNoaXAgbWVkaWFoZWFkZXIga21hbGxvYyBmYWlsZWQhXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICghKG51bWhlYWRlcnM9ZmluZF9tZWRpYV9oZWFkZXJzKG10ZCwgYnVmLCAiQU5BTkQiLCAxKSkpIGdvdG8gb3V0OworCW1oID0gKHN0cnVjdCBORlRMTWVkaWFIZWFkZXIgKikgYnVmOworCisvKiNpZmRlZiBDT05GSUdfTVREX0RFQlVHX1ZFUkJPU0UgKi8KKy8qCWlmIChDT05GSUdfTVREX0RFQlVHX1ZFUkJPU0UgPj0gMikgKi8KKwlwcmludGsoS0VSTl9JTkZPICIgICAgRGF0YU9yZ0lEICAgICAgICA9ICVzXG4iCisJCQkgIiAgICBOdW1FcmFzZVVuaXRzICAgID0gJWRcbiIKKwkJCSAiICAgIEZpcnN0UGh5c2ljYWxFVU4gPSAlZFxuIgorCQkJICIgICAgRm9ybWF0dGVkU2l6ZSAgICA9ICVkXG4iCisJCQkgIiAgICBVbml0U2l6ZUZhY3RvciAgID0gJWRcbiIsCisJCW1oLT5EYXRhT3JnSUQsIG1oLT5OdW1FcmFzZVVuaXRzLAorCQltaC0+Rmlyc3RQaHlzaWNhbEVVTiwgbWgtPkZvcm1hdHRlZFNpemUsCisJCW1oLT5Vbml0U2l6ZUZhY3Rvcik7CisvKiNlbmRpZiAqLworCisJYmxvY2tzID0gbXRkLT5zaXplID4+IHRoaXMtPnBoeXNfZXJhc2Vfc2hpZnQ7CisJbWF4YmxvY2tzID0gbWluKDMyNzY4VSwgbXRkLT5lcmFzZXNpemUgLSBwc2l6ZSk7CisKKwlpZiAobWgtPlVuaXRTaXplRmFjdG9yID09IDB4MDApIHsKKwkJLyogQXV0by1kZXRlcm1pbmUgVW5pdFNpemVGYWN0b3IuICBUaGUgY29uc3RyYWludHMgYXJlOgorCQkgICAtIFRoZXJlIGNhbiBiZSBhdCBtb3N0IDMyNzY4IHZpcnR1YWwgYmxvY2tzLgorCQkgICAtIFRoZXJlIGNhbiBiZSBhdCBtb3N0ICh2aXJ0dWFsIGJsb2NrIHNpemUgLSBwYWdlIHNpemUpCisJCSAgICAgdmlydHVhbCBibG9ja3MgKGJlY2F1c2UgTWVkaWFIZWFkZXIrQkJUIG11c3QgZml0IGluIDEpLgorCQkqLworCQltaC0+VW5pdFNpemVGYWN0b3IgPSAweGZmOworCQl3aGlsZSAoYmxvY2tzID4gbWF4YmxvY2tzKSB7CisJCQlibG9ja3MgPj49IDE7CisJCQltYXhibG9ja3MgPSBtaW4oMzI3NjhVLCAobWF4YmxvY2tzIDw8IDEpICsgcHNpemUpOworCQkJbWgtPlVuaXRTaXplRmFjdG9yLS07CisJCX0KKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiVW5pdFNpemVGYWN0b3I9MHgwMCBkZXRlY3RlZC4gIENvcnJlY3QgdmFsdWUgaXMgYXNzdW1lZCB0byBiZSAweCUwMnguXG4iLCBtaC0+VW5pdFNpemVGYWN0b3IpOworCX0KKworCS8qIE5PVEU6IFRoZSBsaW5lcyBiZWxvdyBtb2RpZnkgaW50ZXJuYWwgdmFyaWFibGVzIG9mIHRoZSBOQU5EIGFuZCBNVEQKKwkgICBsYXllcnM7IHZhcmlhYmxlcyB3aXRoIGhhdmUgYWxyZWFkeSBiZWVuIGNvbmZpZ3VyZWQgYnkgbmFuZF9zY2FuLgorCSAgIFVuZm9ydHVuYXRlbHksIHdlIGRpZG4ndCBrbm93IGJlZm9yZSB0aGlzIHBvaW50IHdoYXQgdGhlc2UgdmFsdWVzCisJICAgc2hvdWxkIGJlLiAgVGh1cywgdGhpcyBjb2RlIGlzIHNvbWV3aGF0IGRlcGVuZGFudCBvbiB0aGUgZXhhY3QKKwkgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTkFORCBsYXllci4gICovCisJaWYgKG1oLT5Vbml0U2l6ZUZhY3RvciAhPSAweGZmKSB7CisJCXRoaXMtPmJidF9lcmFzZV9zaGlmdCArPSAoMHhmZiAtIG1oLT5Vbml0U2l6ZUZhY3Rvcik7CisJCW10ZC0+ZXJhc2VzaXplIDw8PSAoMHhmZiAtIG1oLT5Vbml0U2l6ZUZhY3Rvcik7CisJCXByaW50ayhLRVJOX0lORk8gIlNldHRpbmcgdmlydHVhbCBlcmFzZSBzaXplIHRvICVkXG4iLCBtdGQtPmVyYXNlc2l6ZSk7CisJCWJsb2NrcyA9IG10ZC0+c2l6ZSA+PiB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQ7CisJCW1heGJsb2NrcyA9IG1pbigzMjc2OFUsIG10ZC0+ZXJhc2VzaXplIC0gcHNpemUpOworCX0KKworCWlmIChibG9ja3MgPiBtYXhibG9ja3MpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJVbml0U2l6ZUZhY3RvciBvZiAweCUwMnggaXMgaW5jb25zaXN0ZW50IHdpdGggZGV2aWNlIHNpemUuICBBYm9ydGluZy5cbiIsIG1oLT5Vbml0U2l6ZUZhY3Rvcik7CisJCWdvdG8gb3V0OworCX0KKworCS8qIFNraXAgcGFzdCB0aGUgbWVkaWEgaGVhZGVycy4gKi8KKwlvZmZzID0gbWF4KGRvYy0+bWgwX3BhZ2UsIGRvYy0+bWgxX3BhZ2UpOworCW9mZnMgPDw9IHRoaXMtPnBhZ2Vfc2hpZnQ7CisJb2ZmcyArPSBtdGQtPmVyYXNlc2l6ZTsKKworCS8qcGFydHNbMF0ubmFtZSA9ICIgRGlza09uQ2hpcCBCb290IC8gTWVkaWEgSGVhZGVyIHBhcnRpdGlvbiI7ICovCisJLypwYXJ0c1swXS5vZmZzZXQgPSAwOyAqLworCS8qcGFydHNbMF0uc2l6ZSA9IG9mZnM7ICovCisKKwlwYXJ0c1swXS5uYW1lID0gIiBEaXNrT25DaGlwIEJEVEwgcGFydGl0aW9uIjsKKwlwYXJ0c1swXS5vZmZzZXQgPSBvZmZzOworCXBhcnRzWzBdLnNpemUgPSAobWgtPk51bUVyYXNlVW5pdHMgLSBudW1oZWFkZXJzKSA8PCB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQ7CisKKwlvZmZzICs9IHBhcnRzWzBdLnNpemU7CisJaWYgKG9mZnMgPCBtdGQtPnNpemUpIHsKKwkJcGFydHNbMV0ubmFtZSA9ICIgRGlza09uQ2hpcCBSZW1haW5kZXIgcGFydGl0aW9uIjsKKwkJcGFydHNbMV0ub2Zmc2V0ID0gb2ZmczsKKwkJcGFydHNbMV0uc2l6ZSA9IG10ZC0+c2l6ZSAtIG9mZnM7CisJCXJldCA9IDI7CisJCWdvdG8gb3V0OworCX0KKwlyZXQgPSAxOworb3V0OgorCWtmcmVlKGJ1Zik7CisJcmV0dXJuIHJldDsKK30KKworLyogVGhpcyBpcyBhIHN0cmlwcGVkLWRvd24gY29weSBvZiB0aGUgY29kZSBpbiBpbmZ0bG1vdW50LmMgKi8KK3N0YXRpYyBpbmxpbmUgaW50IF9faW5pdCBpbmZ0bF9wYXJ0c2NhbihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwKKwkJCQkgc3RydWN0IG10ZF9wYXJ0aXRpb24gKnBhcnRzKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCWludCByZXQgPSAwOworCXVfY2hhciAqYnVmOworCXN0cnVjdCBJTkZUTE1lZGlhSGVhZGVyICptaDsKKwlzdHJ1Y3QgSU5GVExQYXJ0aXRpb24gKmlwOworCWludCBudW1wYXJ0cyA9IDA7CisJaW50IGJsb2NrczsKKwlpbnQgdnNoaWZ0LCBsYXN0dnVuaXQgPSAwOworCWludCBpOworCWludCBlbmQgPSBtdGQtPnNpemU7CisKKwlpZiAoaW5mdGxfYmJ0X3dyaXRlKQorCQllbmQgLT0gKElORlRMX0JCVF9SRVNFUlZFRF9CTE9DS1MgPDwgdGhpcy0+cGh5c19lcmFzZV9zaGlmdCk7CisKKwlidWYgPSBrbWFsbG9jKG10ZC0+b29iYmxvY2ssIEdGUF9LRVJORUwpOworCWlmICghYnVmKSB7CisJCXByaW50ayhLRVJOX0VSUiAiRGlza09uQ2hpcCBtZWRpYWhlYWRlciBrbWFsbG9jIGZhaWxlZCFcbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoIWZpbmRfbWVkaWFfaGVhZGVycyhtdGQsIGJ1ZiwgIkJOQU5EIiwgMCkpIGdvdG8gb3V0OworCWRvYy0+bWgxX3BhZ2UgPSBkb2MtPm1oMF9wYWdlICsgKDQwOTYgPj4gdGhpcy0+cGFnZV9zaGlmdCk7CisJbWggPSAoc3RydWN0IElORlRMTWVkaWFIZWFkZXIgKikgYnVmOworCisJbWgtPk5vT2ZCb290SW1hZ2VCbG9ja3MgPSBsZTMyX3RvX2NwdShtaC0+Tm9PZkJvb3RJbWFnZUJsb2Nrcyk7CisJbWgtPk5vT2ZCaW5hcnlQYXJ0aXRpb25zID0gbGUzMl90b19jcHUobWgtPk5vT2ZCaW5hcnlQYXJ0aXRpb25zKTsKKwltaC0+Tm9PZkJEVExQYXJ0aXRpb25zID0gbGUzMl90b19jcHUobWgtPk5vT2ZCRFRMUGFydGl0aW9ucyk7CisJbWgtPkJsb2NrTXVsdGlwbGllckJpdHMgPSBsZTMyX3RvX2NwdShtaC0+QmxvY2tNdWx0aXBsaWVyQml0cyk7CisJbWgtPkZvcm1hdEZsYWdzID0gbGUzMl90b19jcHUobWgtPkZvcm1hdEZsYWdzKTsKKwltaC0+UGVyY2VudFVzZWQgPSBsZTMyX3RvX2NwdShtaC0+UGVyY2VudFVzZWQpOworCisvKiNpZmRlZiBDT05GSUdfTVREX0RFQlVHX1ZFUkJPU0UgKi8KKy8qCWlmIChDT05GSUdfTVREX0RFQlVHX1ZFUkJPU0UgPj0gMikgKi8KKwlwcmludGsoS0VSTl9JTkZPICIgICAgYm9vdFJlY29yZElEICAgICAgICAgID0gJXNcbiIKKwkJCSAiICAgIE5vT2ZCb290SW1hZ2VCbG9ja3MgICA9ICVkXG4iCisJCQkgIiAgICBOb09mQmluYXJ5UGFydGl0aW9ucyAgPSAlZFxuIgorCQkJICIgICAgTm9PZkJEVExQYXJ0aXRpb25zICAgID0gJWRcbiIKKwkJCSAiICAgIEJsb2NrTXVsdGlwbGVyQml0cyAgICA9ICVkXG4iCisJCQkgIiAgICBGb3JtYXRGbGdzICAgICAgICAgICAgPSAlZFxuIgorCQkJICIgICAgT3Nha1ZlcnNpb24gICAgICAgICAgID0gJWQuJWQuJWQuJWRcbiIKKwkJCSAiICAgIFBlcmNlbnRVc2VkICAgICAgICAgICA9ICVkXG4iLAorCQltaC0+Ym9vdFJlY29yZElELCBtaC0+Tm9PZkJvb3RJbWFnZUJsb2NrcywKKwkJbWgtPk5vT2ZCaW5hcnlQYXJ0aXRpb25zLAorCQltaC0+Tm9PZkJEVExQYXJ0aXRpb25zLAorCQltaC0+QmxvY2tNdWx0aXBsaWVyQml0cywgbWgtPkZvcm1hdEZsYWdzLAorCQkoKHVuc2lnbmVkIGNoYXIgKikgJm1oLT5Pc2FrVmVyc2lvbilbMF0gJiAweGYsCisJCSgodW5zaWduZWQgY2hhciAqKSAmbWgtPk9zYWtWZXJzaW9uKVsxXSAmIDB4ZiwKKwkJKCh1bnNpZ25lZCBjaGFyICopICZtaC0+T3Nha1ZlcnNpb24pWzJdICYgMHhmLAorCQkoKHVuc2lnbmVkIGNoYXIgKikgJm1oLT5Pc2FrVmVyc2lvbilbM10gJiAweGYsCisJCW1oLT5QZXJjZW50VXNlZCk7CisvKiNlbmRpZiAqLworCisJdnNoaWZ0ID0gdGhpcy0+cGh5c19lcmFzZV9zaGlmdCArIG1oLT5CbG9ja011bHRpcGxpZXJCaXRzOworCisJYmxvY2tzID0gbXRkLT5zaXplID4+IHZzaGlmdDsKKwlpZiAoYmxvY2tzID4gMzI3NjgpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJCbG9ja011bHRpcGxpZXJCaXRzPSVkIGlzIGluY29uc2lzdGVudCB3aXRoIGRldmljZSBzaXplLiAgQWJvcnRpbmcuXG4iLCBtaC0+QmxvY2tNdWx0aXBsaWVyQml0cyk7CisJCWdvdG8gb3V0OworCX0KKworCWJsb2NrcyA9IGRvYy0+Y2hpcHNfcGVyX2Zsb29yIDw8ICh0aGlzLT5jaGlwX3NoaWZ0IC0gdGhpcy0+cGh5c19lcmFzZV9zaGlmdCk7CisJaWYgKGluZnRsX2JidF93cml0ZSAmJiAoYmxvY2tzID4gbXRkLT5lcmFzZXNpemUpKSB7CisJCXByaW50ayhLRVJOX0VSUiAiV3JpdGVhYmxlIEJCVHMgc3Bhbm5pbmcgbW9yZSB0aGFuIG9uZSBlcmFzZSBibG9jayBhcmUgbm90IHlldCBzdXBwb3J0ZWQuICBGSVggTUUhXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogU2NhbiB0aGUgcGFydGl0aW9ucyAqLworCWZvciAoaSA9IDA7IChpIDwgNCk7IGkrKykgeworCQlpcCA9ICYobWgtPlBhcnRpdGlvbnNbaV0pOworCQlpcC0+dmlydHVhbFVuaXRzID0gbGUzMl90b19jcHUoaXAtPnZpcnR1YWxVbml0cyk7CisJCWlwLT5maXJzdFVuaXQgPSBsZTMyX3RvX2NwdShpcC0+Zmlyc3RVbml0KTsKKwkJaXAtPmxhc3RVbml0ID0gbGUzMl90b19jcHUoaXAtPmxhc3RVbml0KTsKKwkJaXAtPmZsYWdzID0gbGUzMl90b19jcHUoaXAtPmZsYWdzKTsKKwkJaXAtPnNwYXJlVW5pdHMgPSBsZTMyX3RvX2NwdShpcC0+c3BhcmVVbml0cyk7CisJCWlwLT5SZXNlcnZlZDAgPSBsZTMyX3RvX2NwdShpcC0+UmVzZXJ2ZWQwKTsKKworLyojaWZkZWYgQ09ORklHX01URF9ERUJVR19WRVJCT1NFICovCisvKgkJaWYgKENPTkZJR19NVERfREVCVUdfVkVSQk9TRSA+PSAyKSAqLworCQlwcmludGsoS0VSTl9JTkZPCSIgICAgUEFSVElUSU9OWyVkXSAtPlxuIgorCQkJIiAgICAgICAgdmlydHVhbFVuaXRzICAgID0gJWRcbiIKKwkJCSIgICAgICAgIGZpcnN0VW5pdCAgICAgICA9ICVkXG4iCisJCQkiICAgICAgICBsYXN0VW5pdCAgICAgICAgPSAlZFxuIgorCQkJIiAgICAgICAgZmxhZ3MgICAgICAgICAgID0gMHgleFxuIgorCQkJIiAgICAgICAgc3BhcmVVbml0cyAgICAgID0gJWRcbiIsCisJCQlpLCBpcC0+dmlydHVhbFVuaXRzLCBpcC0+Zmlyc3RVbml0LAorCQkJaXAtPmxhc3RVbml0LCBpcC0+ZmxhZ3MsCisJCQlpcC0+c3BhcmVVbml0cyk7CisvKiNlbmRpZiAqLworCisvKgorCQlpZiAoKGkgPT0gMCkgJiYgKGlwLT5maXJzdFVuaXQgPiAwKSkgeworCQkJcGFydHNbMF0ubmFtZSA9ICIgRGlza09uQ2hpcCBJUEwgLyBNZWRpYSBIZWFkZXIgcGFydGl0aW9uIjsKKwkJCXBhcnRzWzBdLm9mZnNldCA9IDA7CisJCQlwYXJ0c1swXS5zaXplID0gbXRkLT5lcmFzZXNpemUgKiBpcC0+Zmlyc3RVbml0OworCQkJbnVtcGFydHMgPSAxOworCQl9CisqLworCisJCWlmIChpcC0+ZmxhZ3MgJiBJTkZUTF9CSU5BUlkpCisJCQlwYXJ0c1tudW1wYXJ0c10ubmFtZSA9ICIgRGlza09uQ2hpcCBCREsgcGFydGl0aW9uIjsKKwkJZWxzZQorCQkJcGFydHNbbnVtcGFydHNdLm5hbWUgPSAiIERpc2tPbkNoaXAgQkRUTCBwYXJ0aXRpb24iOworCQlwYXJ0c1tudW1wYXJ0c10ub2Zmc2V0ID0gaXAtPmZpcnN0VW5pdCA8PCB2c2hpZnQ7CisJCXBhcnRzW251bXBhcnRzXS5zaXplID0gKDEgKyBpcC0+bGFzdFVuaXQgLSBpcC0+Zmlyc3RVbml0KSA8PCB2c2hpZnQ7CisJCW51bXBhcnRzKys7CisJCWlmIChpcC0+bGFzdFVuaXQgPiBsYXN0dnVuaXQpIGxhc3R2dW5pdCA9IGlwLT5sYXN0VW5pdDsKKwkJaWYgKGlwLT5mbGFncyAmIElORlRMX0xBU1QpIGJyZWFrOworCX0KKwlsYXN0dnVuaXQrKzsKKwlpZiAoKGxhc3R2dW5pdCA8PCB2c2hpZnQpIDwgZW5kKSB7CisJCXBhcnRzW251bXBhcnRzXS5uYW1lID0gIiBEaXNrT25DaGlwIFJlbWFpbmRlciBwYXJ0aXRpb24iOworCQlwYXJ0c1tudW1wYXJ0c10ub2Zmc2V0ID0gbGFzdHZ1bml0IDw8IHZzaGlmdDsKKwkJcGFydHNbbnVtcGFydHNdLnNpemUgPSBlbmQgLSBwYXJ0c1tudW1wYXJ0c10ub2Zmc2V0OworCQludW1wYXJ0cysrOworCX0KKwlyZXQgPSBudW1wYXJ0czsKK291dDoKKwlrZnJlZShidWYpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IG5mdGxfc2Nhbl9iYnQoc3RydWN0IG10ZF9pbmZvICptdGQpCit7CisJaW50IHJldCwgbnVtcGFydHM7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzdHJ1Y3QgZG9jX3ByaXYgKmRvYyA9IHRoaXMtPnByaXY7CisJc3RydWN0IG10ZF9wYXJ0aXRpb24gcGFydHNbMl07CisKKwltZW1zZXQoKGNoYXIgKikgcGFydHMsIDAsIHNpemVvZihwYXJ0cykpOworCS8qIE9uIE5GVEwsIHdlIGhhdmUgdG8gZmluZCB0aGUgbWVkaWEgaGVhZGVycyBiZWZvcmUgd2UgY2FuIHJlYWQgdGhlCisJICAgQkJUcywgc2luY2UgdGhleSdyZSBzdG9yZWQgaW4gdGhlIG1lZGlhIGhlYWRlciBlcmFzZWJsb2Nrcy4gKi8KKwludW1wYXJ0cyA9IG5mdGxfcGFydHNjYW4obXRkLCBwYXJ0cyk7CisJaWYgKCFudW1wYXJ0cykgcmV0dXJuIC1FSU87CisJdGhpcy0+YmJ0X3RkLT5vcHRpb25zID0gTkFORF9CQlRfQUJTUEFHRSB8IE5BTkRfQkJUXzhCSVQgfAorCQkJCU5BTkRfQkJUX1NBVkVDT05URU5UIHwgTkFORF9CQlRfV1JJVEUgfAorCQkJCU5BTkRfQkJUX1ZFUlNJT047CisJdGhpcy0+YmJ0X3RkLT52ZXJvZmZzID0gNzsKKwl0aGlzLT5iYnRfdGQtPnBhZ2VzWzBdID0gZG9jLT5taDBfcGFnZSArIDE7CisJaWYgKGRvYy0+bWgxX3BhZ2UgIT0gLTEpIHsKKwkJdGhpcy0+YmJ0X21kLT5vcHRpb25zID0gTkFORF9CQlRfQUJTUEFHRSB8IE5BTkRfQkJUXzhCSVQgfAorCQkJCQlOQU5EX0JCVF9TQVZFQ09OVEVOVCB8IE5BTkRfQkJUX1dSSVRFIHwKKwkJCQkJTkFORF9CQlRfVkVSU0lPTjsKKwkJdGhpcy0+YmJ0X21kLT52ZXJvZmZzID0gNzsKKwkJdGhpcy0+YmJ0X21kLT5wYWdlc1swXSA9IGRvYy0+bWgxX3BhZ2UgKyAxOworCX0gZWxzZSB7CisJCXRoaXMtPmJidF9tZCA9IE5VTEw7CisJfQorCisJLyogSXQncyBzYWZlIHRvIHNldCBiZD1OVUxMIGJlbG93IGJlY2F1c2UgTkFORF9CQlRfQ1JFQVRFIGlzIG5vdCBzZXQuCisJICAgQXQgbGVhc3QgYXMgbmFuZF9iYnQuYyBpcyBjdXJyZW50bHkgd3JpdHRlbi4gKi8KKwlpZiAoKHJldCA9IG5hbmRfc2Nhbl9iYnQobXRkLCBOVUxMKSkpCisJCXJldHVybiByZXQ7CisJYWRkX210ZF9kZXZpY2UobXRkKTsKKyNpZmRlZiBDT05GSUdfTVREX1BBUlRJVElPTlMKKwlpZiAoIW5vX2F1dG9wYXJ0KQorCQlhZGRfbXRkX3BhcnRpdGlvbnMobXRkLCBwYXJ0cywgbnVtcGFydHMpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IGluZnRsX3NjYW5fYmJ0KHN0cnVjdCBtdGRfaW5mbyAqbXRkKQoreworCWludCByZXQsIG51bXBhcnRzOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCXN0cnVjdCBtdGRfcGFydGl0aW9uIHBhcnRzWzVdOworCisJaWYgKHRoaXMtPm51bWNoaXBzID4gZG9jLT5jaGlwc19wZXJfZmxvb3IpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJNdWx0aS1mbG9vciBJTkZUTCBkZXZpY2VzIG5vdCB5ZXQgc3VwcG9ydGVkLlxuIik7CisJCXJldHVybiAtRUlPOworCX0KKworCWlmIChEb0NfaXNfTWlsbGVubml1bVBsdXMoZG9jKSkgeworCQl0aGlzLT5iYnRfdGQtPm9wdGlvbnMgPSBOQU5EX0JCVF8yQklUIHwgTkFORF9CQlRfQUJTUEFHRTsKKwkJaWYgKGluZnRsX2JidF93cml0ZSkKKwkJCXRoaXMtPmJidF90ZC0+b3B0aW9ucyB8PSBOQU5EX0JCVF9XUklURTsKKwkJdGhpcy0+YmJ0X3RkLT5wYWdlc1swXSA9IDI7CisJCXRoaXMtPmJidF9tZCA9IE5VTEw7CisJfSBlbHNlIHsKKwkJdGhpcy0+YmJ0X3RkLT5vcHRpb25zID0gTkFORF9CQlRfTEFTVEJMT0NLIHwgTkFORF9CQlRfOEJJVCB8CisJCQkJCU5BTkRfQkJUX1ZFUlNJT047CisJCWlmIChpbmZ0bF9iYnRfd3JpdGUpCisJCQl0aGlzLT5iYnRfdGQtPm9wdGlvbnMgfD0gTkFORF9CQlRfV1JJVEU7CisJCXRoaXMtPmJidF90ZC0+b2ZmcyA9IDg7CisJCXRoaXMtPmJidF90ZC0+bGVuID0gODsKKwkJdGhpcy0+YmJ0X3RkLT52ZXJvZmZzID0gNzsKKwkJdGhpcy0+YmJ0X3RkLT5tYXhibG9ja3MgPSBJTkZUTF9CQlRfUkVTRVJWRURfQkxPQ0tTOworCQl0aGlzLT5iYnRfdGQtPnJlc2VydmVkX2Jsb2NrX2NvZGUgPSAweDAxOworCQl0aGlzLT5iYnRfdGQtPnBhdHRlcm4gPSAiTVNZU19CQlQiOworCisJCXRoaXMtPmJidF9tZC0+b3B0aW9ucyA9IE5BTkRfQkJUX0xBU1RCTE9DSyB8IE5BTkRfQkJUXzhCSVQgfAorCQkJCQlOQU5EX0JCVF9WRVJTSU9OOworCQlpZiAoaW5mdGxfYmJ0X3dyaXRlKQorCQkJdGhpcy0+YmJ0X21kLT5vcHRpb25zIHw9IE5BTkRfQkJUX1dSSVRFOworCQl0aGlzLT5iYnRfbWQtPm9mZnMgPSA4OworCQl0aGlzLT5iYnRfbWQtPmxlbiA9IDg7CisJCXRoaXMtPmJidF9tZC0+dmVyb2ZmcyA9IDc7CisJCXRoaXMtPmJidF9tZC0+bWF4YmxvY2tzID0gSU5GVExfQkJUX1JFU0VSVkVEX0JMT0NLUzsKKwkJdGhpcy0+YmJ0X21kLT5yZXNlcnZlZF9ibG9ja19jb2RlID0gMHgwMTsKKwkJdGhpcy0+YmJ0X21kLT5wYXR0ZXJuID0gIlRCQl9TWVNNIjsKKwl9CisKKwkvKiBJdCdzIHNhZmUgdG8gc2V0IGJkPU5VTEwgYmVsb3cgYmVjYXVzZSBOQU5EX0JCVF9DUkVBVEUgaXMgbm90IHNldC4KKwkgICBBdCBsZWFzdCBhcyBuYW5kX2JidC5jIGlzIGN1cnJlbnRseSB3cml0dGVuLiAqLworCWlmICgocmV0ID0gbmFuZF9zY2FuX2JidChtdGQsIE5VTEwpKSkKKwkJcmV0dXJuIHJldDsKKwltZW1zZXQoKGNoYXIgKikgcGFydHMsIDAsIHNpemVvZihwYXJ0cykpOworCW51bXBhcnRzID0gaW5mdGxfcGFydHNjYW4obXRkLCBwYXJ0cyk7CisJLyogQXQgbGVhc3QgZm9yIG5vdywgcmVxdWlyZSB0aGUgSU5GVEwgTWVkaWEgSGVhZGVyLiAgV2UgY291bGQgcHJvYmFibHkKKwkgICBkbyB3aXRob3V0IGl0IGZvciBub24tSU5GVEwgdXNlLCBzaW5jZSBhbGwgaXQgZ2l2ZXMgdXMgaXMKKwkgICBhdXRvcGFydGl0aW9uaW5nLCBidXQgSSB3YW50IHRvIGdpdmUgaXQgbW9yZSB0aG91Z2h0LiAqLworCWlmICghbnVtcGFydHMpIHJldHVybiAtRUlPOworCWFkZF9tdGRfZGV2aWNlKG10ZCk7CisjaWZkZWYgQ09ORklHX01URF9QQVJUSVRJT05TCisJaWYgKCFub19hdXRvcGFydCkKKwkJYWRkX210ZF9wYXJ0aXRpb25zKG10ZCwgcGFydHMsIG51bXBhcnRzKTsKKyNlbmRpZgorCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludCBfX2luaXQgZG9jMjAwMF9pbml0KHN0cnVjdCBtdGRfaW5mbyAqbXRkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCisJdGhpcy0+d3JpdGVfYnl0ZSA9IGRvYzIwMDBfd3JpdGVfYnl0ZTsKKwl0aGlzLT5yZWFkX2J5dGUgPSBkb2MyMDAwX3JlYWRfYnl0ZTsKKwl0aGlzLT53cml0ZV9idWYgPSBkb2MyMDAwX3dyaXRlYnVmOworCXRoaXMtPnJlYWRfYnVmID0gZG9jMjAwMF9yZWFkYnVmOworCXRoaXMtPnZlcmlmeV9idWYgPSBkb2MyMDAwX3ZlcmlmeWJ1ZjsKKwl0aGlzLT5zY2FuX2JidCA9IG5mdGxfc2Nhbl9iYnQ7CisKKwlkb2MtPkNEU05Db250cm9sID0gQ0RTTl9DVFJMX0ZMQVNIX0lPIHwgQ0RTTl9DVFJMX0VDQ19JTzsKKwlkb2MyMDAwX2NvdW50X2NoaXBzKG10ZCk7CisJbXRkLT5uYW1lID0gIkRpc2tPbkNoaXAgMjAwMCAoTkZUTCBNb2RlbCkiOworCXJldHVybiAoNCAqIGRvYy0+Y2hpcHNfcGVyX2Zsb29yKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgX19pbml0IGRvYzIwMDFfaW5pdChzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBkb2NfcHJpdiAqZG9jID0gdGhpcy0+cHJpdjsKKworCXRoaXMtPndyaXRlX2J5dGUgPSBkb2MyMDAxX3dyaXRlX2J5dGU7CisJdGhpcy0+cmVhZF9ieXRlID0gZG9jMjAwMV9yZWFkX2J5dGU7CisJdGhpcy0+d3JpdGVfYnVmID0gZG9jMjAwMV93cml0ZWJ1ZjsKKwl0aGlzLT5yZWFkX2J1ZiA9IGRvYzIwMDFfcmVhZGJ1ZjsKKwl0aGlzLT52ZXJpZnlfYnVmID0gZG9jMjAwMV92ZXJpZnlidWY7CisKKwlSZWFkRE9DKGRvYy0+dmlydGFkciwgQ2hpcElEKTsKKwlSZWFkRE9DKGRvYy0+dmlydGFkciwgQ2hpcElEKTsKKwlSZWFkRE9DKGRvYy0+dmlydGFkciwgQ2hpcElEKTsKKwlpZiAoUmVhZERPQyhkb2MtPnZpcnRhZHIsIENoaXBJRCkgIT0gRE9DX0NoaXBJRF9Eb2NNaWwpIHsKKwkJLyogSXQncyBub3QgYSBNaWxsZW5uaXVtOyBpdCdzIG9uZSBvZiB0aGUgbmV3ZXIKKwkJICAgRGlza09uQ2hpcCAyMDAwIHVuaXRzIHdpdGggYSBzaW1pbGFyIEFTSUMuCisJCSAgIFRyZWF0IGl0IGxpa2UgYSBNaWxsZW5uaXVtLCBleGNlcHQgdGhhdCBpdAorCQkgICBjYW4gaGF2ZSBtdWx0aXBsZSBjaGlwcy4gKi8KKwkJZG9jMjAwMF9jb3VudF9jaGlwcyhtdGQpOworCQltdGQtPm5hbWUgPSAiRGlza09uQ2hpcCAyMDAwIChJTkZUTCBNb2RlbCkiOworCQl0aGlzLT5zY2FuX2JidCA9IGluZnRsX3NjYW5fYmJ0OworCQlyZXR1cm4gKDQgKiBkb2MtPmNoaXBzX3Blcl9mbG9vcik7CisJfSBlbHNlIHsKKwkJLyogQm9nLXN0YW5kYXJkIE1pbGxlbm5pdW0gKi8KKwkJZG9jLT5jaGlwc19wZXJfZmxvb3IgPSAxOworCQltdGQtPm5hbWUgPSAiRGlza09uQ2hpcCBNaWxsZW5uaXVtIjsKKwkJdGhpcy0+c2Nhbl9iYnQgPSBuZnRsX3NjYW5fYmJ0OworCQlyZXR1cm4gMTsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IF9faW5pdCBkb2MyMDAxcGx1c19pbml0KHN0cnVjdCBtdGRfaW5mbyAqbXRkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IGRvY19wcml2ICpkb2MgPSB0aGlzLT5wcml2OworCisJdGhpcy0+d3JpdGVfYnl0ZSA9IE5VTEw7CisJdGhpcy0+cmVhZF9ieXRlID0gZG9jMjAwMXBsdXNfcmVhZF9ieXRlOworCXRoaXMtPndyaXRlX2J1ZiA9IGRvYzIwMDFwbHVzX3dyaXRlYnVmOworCXRoaXMtPnJlYWRfYnVmID0gZG9jMjAwMXBsdXNfcmVhZGJ1ZjsKKwl0aGlzLT52ZXJpZnlfYnVmID0gZG9jMjAwMXBsdXNfdmVyaWZ5YnVmOworCXRoaXMtPnNjYW5fYmJ0ID0gaW5mdGxfc2Nhbl9iYnQ7CisJdGhpcy0+aHdjb250cm9sID0gTlVMTDsKKwl0aGlzLT5zZWxlY3RfY2hpcCA9IGRvYzIwMDFwbHVzX3NlbGVjdF9jaGlwOworCXRoaXMtPmNtZGZ1bmMgPSBkb2MyMDAxcGx1c19jb21tYW5kOworCXRoaXMtPmVuYWJsZV9od2VjYyA9IGRvYzIwMDFwbHVzX2VuYWJsZV9od2VjYzsKKworCWRvYy0+Y2hpcHNfcGVyX2Zsb29yID0gMTsKKwltdGQtPm5hbWUgPSAiRGlza09uQ2hpcCBNaWxsZW5uaXVtIFBsdXMiOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IF9faW5pdCBkb2NfcHJvYmUodW5zaWduZWQgbG9uZyBwaHlzYWRyKQoreworCXVuc2lnbmVkIGNoYXIgQ2hpcElEOworCXN0cnVjdCBtdGRfaW5mbyAqbXRkOworCXN0cnVjdCBuYW5kX2NoaXAgKm5hbmQ7CisJc3RydWN0IGRvY19wcml2ICpkb2M7CisJdm9pZCBfX2lvbWVtICp2aXJ0YWRyOworCXVuc2lnbmVkIGNoYXIgc2F2ZV9jb250cm9sOworCXVuc2lnbmVkIGNoYXIgdG1wLCB0bXBiLCB0bXBjOworCWludCByZWcsIGxlbiwgbnVtY2hpcHM7CisJaW50IHJldCA9IDA7CisKKwl2aXJ0YWRyID0gaW9yZW1hcChwaHlzYWRyLCBET0NfSU9SRU1BUF9MRU4pOworCWlmICghdmlydGFkcikgeworCQlwcmludGsoS0VSTl9FUlIgIkRpc2tvbmNoaXAgaW9yZW1hcCBmYWlsZWQ6IDB4JXggYnl0ZXMgYXQgMHglbHhcbiIsIERPQ19JT1JFTUFQX0xFTiwgcGh5c2Fkcik7CisJCXJldHVybiAtRUlPOworCX0KKworCS8qIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGNsZWFubHkgZGV0ZWN0IHRoZSBEaXNrT25DaGlwIC0gdGhlCisJICogYm9vdHVwIHByb2NlZHVyZSB3aWxsIHB1dCB0aGUgZGV2aWNlIGludG8gcmVzZXQgbW9kZSwgYW5kCisJICogaXQncyBub3QgcG9zc2libGUgdG8gdGFsayB0byBpdCB3aXRob3V0IGFjdHVhbGx5IHdyaXRpbmcKKwkgKiB0byB0aGUgRE9DQ29udHJvbCByZWdpc3Rlci4gU28gd2Ugc3RvcmUgdGhlIGN1cnJlbnQgY29udGVudHMKKwkgKiBvZiB0aGUgRE9DQ29udHJvbCByZWdpc3RlcidzIGxvY2F0aW9uLCBpbiBjYXNlIHdlIGxhdGVyIGRlY2lkZQorCSAqIHRoYXQgaXQncyBub3QgYSBEaXNrT25DaGlwLCBhbmQgd2FudCB0byBwdXQgaXQgYmFjayBob3cgd2UKKwkgKiBmb3VuZCBpdC4KKwkgKi8KKwlzYXZlX2NvbnRyb2wgPSBSZWFkRE9DKHZpcnRhZHIsIERPQ0NvbnRyb2wpOworCisJLyogUmVzZXQgdGhlIERpc2tPbkNoaXAgQVNJQyAqLworCVdyaXRlRE9DKERPQ19NT0RFX0NMUl9FUlIgfCBET0NfTU9ERV9NRFdSRU4gfCBET0NfTU9ERV9SRVNFVCwKKwkJIHZpcnRhZHIsIERPQ0NvbnRyb2wpOworCVdyaXRlRE9DKERPQ19NT0RFX0NMUl9FUlIgfCBET0NfTU9ERV9NRFdSRU4gfCBET0NfTU9ERV9SRVNFVCwKKwkJIHZpcnRhZHIsIERPQ0NvbnRyb2wpOworCisJLyogRW5hYmxlIHRoZSBEaXNrT25DaGlwIEFTSUMgKi8KKwlXcml0ZURPQyhET0NfTU9ERV9DTFJfRVJSIHwgRE9DX01PREVfTURXUkVOIHwgRE9DX01PREVfTk9STUFMLAorCQkgdmlydGFkciwgRE9DQ29udHJvbCk7CisJV3JpdGVET0MoRE9DX01PREVfQ0xSX0VSUiB8IERPQ19NT0RFX01EV1JFTiB8IERPQ19NT0RFX05PUk1BTCwKKwkJIHZpcnRhZHIsIERPQ0NvbnRyb2wpOworCisJQ2hpcElEID0gUmVhZERPQyh2aXJ0YWRyLCBDaGlwSUQpOworCisJc3dpdGNoKENoaXBJRCkgeworCWNhc2UgRE9DX0NoaXBJRF9Eb2MyazoKKwkJcmVnID0gRG9DXzJrX0VDQ1N0YXR1czsKKwkJYnJlYWs7CisJY2FzZSBET0NfQ2hpcElEX0RvY01pbDoKKwkJcmVnID0gRG9DX0VDQ0NvbmY7CisJCWJyZWFrOworCWNhc2UgRE9DX0NoaXBJRF9Eb2NNaWxQbHVzMTY6CisJY2FzZSBET0NfQ2hpcElEX0RvY01pbFBsdXMzMjoKKwljYXNlIDA6CisJCS8qIFBvc3NpYmxlIE1pbGxlbm5pdW0gUGx1cywgbmVlZCB0byBkbyBtb3JlIGNoZWNrcyAqLworCQkvKiBQb3NzaWJseSByZWxlYXNlIGZyb20gcG93ZXIgZG93biBtb2RlICovCisJCWZvciAodG1wID0gMDsgKHRtcCA8IDQpOyB0bXArKykKKwkJCVJlYWRET0ModmlydGFkciwgTXBsdXNfUG93ZXIpOworCisJCS8qIFJlc2V0IHRoZSBNaWxsZW5uaXVtIFBsdXMgQVNJQyAqLworCQl0bXAgPSBET0NfTU9ERV9SRVNFVCB8IERPQ19NT0RFX01EV1JFTiB8IERPQ19NT0RFX1JTVF9MQVQgfAorCQkJRE9DX01PREVfQkRFQ1Q7CisJCVdyaXRlRE9DKHRtcCwgdmlydGFkciwgTXBsdXNfRE9DQ29udHJvbCk7CisJCVdyaXRlRE9DKH50bXAsIHZpcnRhZHIsIE1wbHVzX0N0cmxDb25maXJtKTsKKworCQltZGVsYXkoMSk7CisJCS8qIEVuYWJsZSB0aGUgTWlsbGVubml1bSBQbHVzIEFTSUMgKi8KKwkJdG1wID0gRE9DX01PREVfTk9STUFMIHwgRE9DX01PREVfTURXUkVOIHwgRE9DX01PREVfUlNUX0xBVCB8CisJCQlET0NfTU9ERV9CREVDVDsKKwkJV3JpdGVET0ModG1wLCB2aXJ0YWRyLCBNcGx1c19ET0NDb250cm9sKTsKKwkJV3JpdGVET0MofnRtcCwgdmlydGFkciwgTXBsdXNfQ3RybENvbmZpcm0pOworCQltZGVsYXkoMSk7CisKKwkJQ2hpcElEID0gUmVhZERPQyh2aXJ0YWRyLCBDaGlwSUQpOworCisJCXN3aXRjaCAoQ2hpcElEKSB7CisJCWNhc2UgRE9DX0NoaXBJRF9Eb2NNaWxQbHVzMTY6CisJCQlyZWcgPSBEb0NfTXBsdXNfVG9nZ2xlOworCQkJYnJlYWs7CisJCWNhc2UgRE9DX0NoaXBJRF9Eb2NNaWxQbHVzMzI6CisJCQlwcmludGsoS0VSTl9FUlIgIkRpc2tPbkNoaXAgTWlsbGVubml1bSBQbHVzIDMyTUIgaXMgbm90IHN1cHBvcnRlZCwgaWdub3JpbmcuXG4iKTsKKwkJZGVmYXVsdDoKKwkJCXJldCA9IC1FTk9ERVY7CisJCQlnb3RvIG5vdGZvdW5kOworCQl9CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcmV0ID0gLUVOT0RFVjsKKwkJZ290byBub3Rmb3VuZDsKKwl9CisJLyogQ2hlY2sgdGhlIFRPR0dMRSBiaXQgaW4gdGhlIEVDQyByZWdpc3RlciAqLworCXRtcCAgPSBSZWFkRE9DXyh2aXJ0YWRyLCByZWcpICYgRE9DX1RPR0dMRV9CSVQ7CisJdG1wYiA9IFJlYWRET0NfKHZpcnRhZHIsIHJlZykgJiBET0NfVE9HR0xFX0JJVDsKKwl0bXBjID0gUmVhZERPQ18odmlydGFkciwgcmVnKSAmIERPQ19UT0dHTEVfQklUOworCWlmICgodG1wID09IHRtcGIpIHx8ICh0bXAgIT0gdG1wYykpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiUG9zc2libGUgRGlza09uQ2hpcCBhdCAweCVseCBmYWlsZWQgVE9HR0xFIHRlc3QsIGRyb3BwaW5nLlxuIiwgcGh5c2Fkcik7CisJCXJldCA9IC1FTk9ERVY7CisJCWdvdG8gbm90Zm91bmQ7CisJfQorCisJZm9yIChtdGQgPSBkb2NsaXN0OyBtdGQ7IG10ZCA9IGRvYy0+bmV4dGRvYykgeworCQl1bnNpZ25lZCBjaGFyIG9sZHZhbDsKKwkJdW5zaWduZWQgY2hhciBuZXd2YWw7CisJCW5hbmQgPSBtdGQtPnByaXY7CisJCWRvYyA9IG5hbmQtPnByaXY7CisJCS8qIFVzZSB0aGUgYWxpYXMgcmVzb2x1dGlvbiByZWdpc3RlciB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcworCQkgICBpbiBmYWN0IHRoZSBzYW1lIERPQyBhbGlhc2VkIHRvIGEgbmV3IGFkZHJlc3MuICBJZiB3cml0ZXMKKwkJICAgdG8gb25lIGNoaXAncyBhbGlhcyByZXNvbHV0aW9uIHJlZ2lzdGVyIGNoYW5nZSB0aGUgdmFsdWUgb24KKwkJICAgdGhlIG90aGVyIGNoaXAsIHRoZXkncmUgdGhlIHNhbWUgY2hpcC4gKi8KKwkJaWYgKENoaXBJRCA9PSBET0NfQ2hpcElEX0RvY01pbFBsdXMxNikgeworCQkJb2xkdmFsID0gUmVhZERPQyhkb2MtPnZpcnRhZHIsIE1wbHVzX0FsaWFzUmVzb2x1dGlvbik7CisJCQluZXd2YWwgPSBSZWFkRE9DKHZpcnRhZHIsIE1wbHVzX0FsaWFzUmVzb2x1dGlvbik7CisJCX0gZWxzZSB7CisJCQlvbGR2YWwgPSBSZWFkRE9DKGRvYy0+dmlydGFkciwgQWxpYXNSZXNvbHV0aW9uKTsKKwkJCW5ld3ZhbCA9IFJlYWRET0ModmlydGFkciwgQWxpYXNSZXNvbHV0aW9uKTsKKwkJfQorCQlpZiAob2xkdmFsICE9IG5ld3ZhbCkKKwkJCWNvbnRpbnVlOworCQlpZiAoQ2hpcElEID09IERPQ19DaGlwSURfRG9jTWlsUGx1czE2KSB7CisJCQlXcml0ZURPQyh+bmV3dmFsLCB2aXJ0YWRyLCBNcGx1c19BbGlhc1Jlc29sdXRpb24pOworCQkJb2xkdmFsID0gUmVhZERPQyhkb2MtPnZpcnRhZHIsIE1wbHVzX0FsaWFzUmVzb2x1dGlvbik7CisJCQlXcml0ZURPQyhuZXd2YWwsIHZpcnRhZHIsIE1wbHVzX0FsaWFzUmVzb2x1dGlvbik7IC8qIHJlc3RvcmUgaXQgKi8KKwkJfSBlbHNlIHsKKwkJCVdyaXRlRE9DKH5uZXd2YWwsIHZpcnRhZHIsIEFsaWFzUmVzb2x1dGlvbik7CisJCQlvbGR2YWwgPSBSZWFkRE9DKGRvYy0+dmlydGFkciwgQWxpYXNSZXNvbHV0aW9uKTsKKwkJCVdyaXRlRE9DKG5ld3ZhbCwgdmlydGFkciwgQWxpYXNSZXNvbHV0aW9uKTsgLyogcmVzdG9yZSBpdCAqLworCQl9CisJCW5ld3ZhbCA9IH5uZXd2YWw7CisJCWlmIChvbGR2YWwgPT0gbmV3dmFsKSB7CisJCQlwcmludGsoS0VSTl9ERUJVRyAiRm91bmQgYWxpYXMgb2YgRE9DIGF0IDB4JWx4IHRvIDB4JWx4XG4iLCBkb2MtPnBoeXNhZHIsIHBoeXNhZHIpOworCQkJZ290byBub3Rmb3VuZDsKKwkJfQorCX0KKworCXByaW50ayhLRVJOX05PVElDRSAiRGlza09uQ2hpcCBmb3VuZCBhdCAweCVseFxuIiwgcGh5c2Fkcik7CisKKwlsZW4gPSBzaXplb2Yoc3RydWN0IG10ZF9pbmZvKSArCisJICAgICAgc2l6ZW9mKHN0cnVjdCBuYW5kX2NoaXApICsKKwkgICAgICBzaXplb2Yoc3RydWN0IGRvY19wcml2KSArCisJICAgICAgKDIgKiBzaXplb2Yoc3RydWN0IG5hbmRfYmJ0X2Rlc2NyKSk7CisJbXRkID0gIGttYWxsb2MobGVuLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW10ZCkgeworCQlwcmludGsoS0VSTl9FUlIgIkRpc2tPbkNoaXAga21hbGxvYyAoJWQgYnl0ZXMpIGZhaWxlZCFcbiIsIGxlbik7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbDsKKwl9CisJbWVtc2V0KG10ZCwgMCwgbGVuKTsKKworCW5hbmQJCQk9IChzdHJ1Y3QgbmFuZF9jaGlwICopIChtdGQgKyAxKTsKKwlkb2MJCQk9IChzdHJ1Y3QgZG9jX3ByaXYgKikgKG5hbmQgKyAxKTsKKwluYW5kLT5iYnRfdGQJCT0gKHN0cnVjdCBuYW5kX2JidF9kZXNjciAqKSAoZG9jICsgMSk7CisJbmFuZC0+YmJ0X21kCQk9IG5hbmQtPmJidF90ZCArIDE7CisKKwltdGQtPnByaXYJCT0gbmFuZDsKKwltdGQtPm93bmVyCQk9IFRISVNfTU9EVUxFOworCisJbmFuZC0+cHJpdgkJPSBkb2M7CisJbmFuZC0+c2VsZWN0X2NoaXAJPSBkb2MyMDB4X3NlbGVjdF9jaGlwOworCW5hbmQtPmh3Y29udHJvbAkJPSBkb2MyMDB4X2h3Y29udHJvbDsKKwluYW5kLT5kZXZfcmVhZHkJCT0gZG9jMjAweF9kZXZfcmVhZHk7CisJbmFuZC0+d2FpdGZ1bmMJCT0gZG9jMjAweF93YWl0OworCW5hbmQtPmJsb2NrX2JhZAkJPSBkb2MyMDB4X2Jsb2NrX2JhZDsKKwluYW5kLT5lbmFibGVfaHdlY2MJPSBkb2MyMDB4X2VuYWJsZV9od2VjYzsKKwluYW5kLT5jYWxjdWxhdGVfZWNjCT0gZG9jMjAweF9jYWxjdWxhdGVfZWNjOworCW5hbmQtPmNvcnJlY3RfZGF0YQk9IGRvYzIwMHhfY29ycmVjdF9kYXRhOworCisJbmFuZC0+YXV0b29vYgkJPSAmZG9jMjAweF9vb2JpbmZvOworCW5hbmQtPmVjY21vZGUJCT0gTkFORF9FQ0NfSFc2XzUxMjsKKwluYW5kLT5vcHRpb25zCQk9IE5BTkRfVVNFX0ZMQVNIX0JCVCB8IE5BTkRfSFdFQ0NfU1lORFJPTUU7CisKKwlkb2MtPnBoeXNhZHIJCT0gcGh5c2FkcjsKKwlkb2MtPnZpcnRhZHIJCT0gdmlydGFkcjsKKwlkb2MtPkNoaXBJRAkJPSBDaGlwSUQ7CisJZG9jLT5jdXJmbG9vcgkJPSAtMTsKKwlkb2MtPmN1cmNoaXAJCT0gLTE7CisJZG9jLT5taDBfcGFnZQkJPSAtMTsKKwlkb2MtPm1oMV9wYWdlCQk9IC0xOworCWRvYy0+bmV4dGRvYwkJPSBkb2NsaXN0OworCisJaWYgKENoaXBJRCA9PSBET0NfQ2hpcElEX0RvYzJrKQorCQludW1jaGlwcyA9IGRvYzIwMDBfaW5pdChtdGQpOworCWVsc2UgaWYgKENoaXBJRCA9PSBET0NfQ2hpcElEX0RvY01pbFBsdXMxNikKKwkJbnVtY2hpcHMgPSBkb2MyMDAxcGx1c19pbml0KG10ZCk7CisJZWxzZQorCQludW1jaGlwcyA9IGRvYzIwMDFfaW5pdChtdGQpOworCisJaWYgKChyZXQgPSBuYW5kX3NjYW4obXRkLCBudW1jaGlwcykpKSB7CisJCS8qIERCQiBub3RlOiBpIGJlbGlldmUgbmFuZF9yZWxlYXNlIGlzIG5lY2Vzc2FyeSBoZXJlLCBhcworCQkgICBidWZmZXJzIG1heSBoYXZlIGJlZW4gYWxsb2NhdGVkIGluIG5hbmRfYmFzZS4gIENoZWNrIHdpdGgKKwkJICAgVGhvbWFzLiBGSVggTUUhICovCisJCS8qIG5hbmRfcmVsZWFzZSB3aWxsIGNhbGwgZGVsX210ZF9kZXZpY2UsIGJ1dCB3ZSBoYXZlbid0IHlldAorCQkgICBhZGRlZCBpdC4gIFRoaXMgaXMgaGFuZGxlZCB3aXRob3V0IGluY2lkZW50IGJ5CisJCSAgIGRlbF9tdGRfZGV2aWNlLCBhcyBmYXIgYXMgSSBjYW4gdGVsbC4gKi8KKwkJbmFuZF9yZWxlYXNlKG10ZCk7CisJCWtmcmVlKG10ZCk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwkvKiBTdWNjZXNzISAqLworCWRvY2xpc3QgPSBtdGQ7CisJcmV0dXJuIDA7CisKK25vdGZvdW5kOgorCS8qIFB1dCBiYWNrIHRoZSBjb250ZW50cyBvZiB0aGUgRE9DQ29udHJvbCByZWdpc3RlciwgaW4gY2FzZSBpdCdzIG5vdAorCSAgIGFjdHVhbGx5IGEgRGlza09uQ2hpcC4gICovCisJV3JpdGVET0Moc2F2ZV9jb250cm9sLCB2aXJ0YWRyLCBET0NDb250cm9sKTsKK2ZhaWw6CisJaW91bm1hcCh2aXJ0YWRyKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCByZWxlYXNlX25hbmRkb2Modm9pZCkKK3sKKyAJc3RydWN0IG10ZF9pbmZvICptdGQsICpuZXh0bXRkOworCXN0cnVjdCBuYW5kX2NoaXAgKm5hbmQ7CisJc3RydWN0IGRvY19wcml2ICpkb2M7CisKKwlmb3IgKG10ZCA9IGRvY2xpc3Q7IG10ZDsgbXRkID0gbmV4dG10ZCkgeworCQluYW5kID0gbXRkLT5wcml2OworCQlkb2MgPSBuYW5kLT5wcml2OworCisJCW5leHRtdGQgPSBkb2MtPm5leHRkb2M7CisJCW5hbmRfcmVsZWFzZShtdGQpOworCQlpb3VubWFwKGRvYy0+dmlydGFkcik7CisJCWtmcmVlKG10ZCk7CisJfQorfQorCitzdGF0aWMgaW50IF9faW5pdCBpbml0X25hbmRkb2Modm9pZCkKK3sKKwlpbnQgaSwgcmV0ID0gMDsKKworCS8qIFdlIGNvdWxkIGNyZWF0ZSB0aGUgZGVjb2RlciBvbiBkZW1hbmQsIGlmIG1lbW9yeSBpcyBhIGNvbmNlcm4uCisJICogVGhpcyB3YXkgd2UgaGF2ZSBpdCBoYW5keSwgaWYgYW4gZXJyb3IgaGFwcGVucworCSAqCisJICogU3ltYm9sc2l6ZSBpcyAxMCAoYml0cykKKwkgKiBQcmltaXR2ZSBwb2x5bm9taWFsIGlzIHheMTAreF4zKzEKKwkgKiBmaXJzdCBjb25zZWN1dGl2ZSByb290IGlzIDUxMAorCSAqIHByaW1pdHZlIGVsZW1lbnQgdG8gZ2VuZXJhdGUgcm9vdHMgPSAxCisJICogZ2VuZXJhdG9yIHBvbGlub21pYWwgZGVncmVlID0gNAorCSAqLworCXJzX2RlY29kZXIgPSBpbml0X3JzKDEwLCAweDQwOSwgRkNSLCAxLCBOUk9PVFMpOworIAlpZiAoIXJzX2RlY29kZXIpIHsKKwkJcHJpbnRrIChLRVJOX0VSUiAiRGlza09uQ2hpcDogQ291bGQgbm90IGNyZWF0ZSBhIFJTIGRlY29kZXJcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlpZiAoZG9jX2NvbmZpZ19sb2NhdGlvbikgeworCQlwcmludGsoS0VSTl9JTkZPICJVc2luZyBjb25maWd1cmVkIERpc2tPbkNoaXAgcHJvYmUgYWRkcmVzcyAweCVseFxuIiwgZG9jX2NvbmZpZ19sb2NhdGlvbik7CisJCXJldCA9IGRvY19wcm9iZShkb2NfY29uZmlnX2xvY2F0aW9uKTsKKwkJaWYgKHJldCA8IDApCisJCQlnb3RvIG91dGVycjsKKwl9IGVsc2UgeworCQlmb3IgKGk9MDsgKGRvY19sb2NhdGlvbnNbaV0gIT0gMHhmZmZmZmZmZik7IGkrKykgeworCQkJZG9jX3Byb2JlKGRvY19sb2NhdGlvbnNbaV0pOworCQl9CisJfQorCS8qIE5vIGJhbm5lciBtZXNzYWdlIGFueSBtb3JlLiBQcmludCBhIG1lc3NhZ2UgaWYgbm8gRGlza09uQ2hpcAorCSAgIGZvdW5kLCBzbyB0aGUgdXNlciBrbm93cyB3ZSBhdCBsZWFzdCB0cmllZC4gKi8KKwlpZiAoIWRvY2xpc3QpIHsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiTm8gdmFsaWQgRGlza09uQ2hpcCBkZXZpY2VzIGZvdW5kXG4iKTsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJZ290byBvdXRlcnI7CisJfQorCXJldHVybiAwOworb3V0ZXJyOgorCWZyZWVfcnMocnNfZGVjb2Rlcik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGNsZWFudXBfbmFuZGRvYyh2b2lkKQoreworCS8qIENsZWFudXAgdGhlIG5hbmQvRG9DIHJlc291cmNlcyAqLworCXJlbGVhc2VfbmFuZGRvYygpOworCisJLyogRnJlZSB0aGUgcmVlZCBzb2xvbW9uIHJlc291cmNlcyAqLworCWlmIChyc19kZWNvZGVyKSB7CisJCWZyZWVfcnMocnNfZGVjb2Rlcik7CisJfQorfQorCittb2R1bGVfaW5pdChpbml0X25hbmRkb2MpOworbW9kdWxlX2V4aXQoY2xlYW51cF9uYW5kZG9jKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FVVEhPUigiRGF2aWQgV29vZGhvdXNlIDxkd213MkBpbmZyYWRlYWQub3JnPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJNLVN5c3RlbXMgRGlza09uQ2hpcCAyMDAwLCBNaWxsZW5uaXVtIGFuZCBNaWxsZW5uaXVtIFBsdXMgZGV2aWNlIGRyaXZlclxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25hbmQvbmFuZC5jIGIvZHJpdmVycy9uYW5kL25hbmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDgwMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uYW5kL25hbmQuYwpAQCAtMCwwICsxLDc3IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1CisgKiAyTiBUZWxla29tdW5pa2FjZSwgYS5zLiA8d3d3LjJuLmN6PgorICogTGFkaXNsYXYgTWljaGwgPG1pY2hsQDJuLmN6PgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2lmZGVmIENGR19OQU5EX0xFR0FDWQorI2Vycm9yIENGR19OQU5EX0xFR0FDWSBkZWZpbmVkIGluIGEgZmlsZSBub3QgdXNpbmcgdGhlIGxlZ2FjeSBOQU5EIHN1cHBvcnQhCisjZW5kaWYKKworI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCisKKyNpbmNsdWRlIDxuYW5kLmg+CisKKyNpZm5kZWYgQ0ZHX05BTkRfQkFTRV9MSVNUCisjZGVmaW5lIENGR19OQU5EX0JBU0VfTElTVCB7IENGR19OQU5EX0JBU0UgfQorI2VuZGlmCisKK2ludCBuYW5kX2N1cnJfZGV2aWNlID0gLTE7CituYW5kX2luZm9fdCBuYW5kX2luZm9bQ0ZHX01BWF9OQU5EX0RFVklDRV07CisKK3N0YXRpYyBzdHJ1Y3QgbmFuZF9jaGlwIG5hbmRfY2hpcFtDRkdfTUFYX05BTkRfREVWSUNFXTsKK3N0YXRpYyB1bG9uZyBiYXNlX2FkZHJlc3NbQ0ZHX01BWF9OQU5EX0RFVklDRV0gPSBDRkdfTkFORF9CQVNFX0xJU1Q7CisKK3N0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRfbmFuZF9uYW1lW10gPSAibmFuZCI7CisKK2V4dGVybiB2b2lkIGJvYXJkX25hbmRfaW5pdChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKTsKKworc3RhdGljIHZvaWQgbmFuZF9pbml0X2NoaXAoc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCisJCQkgICB1bG9uZyBiYXNlX2FkZHIpCit7CisJbXRkLT5wcml2ID0gbmFuZDsKKworCW5hbmQtPklPX0FERFJfUiA9IG5hbmQtPklPX0FERFJfVyA9ICh2b2lkICBfX2lvbWVtICopYmFzZV9hZGRyOworCWJvYXJkX25hbmRfaW5pdChuYW5kKTsKKworCWlmIChuYW5kX3NjYW4obXRkLCAxKSA9PSAwKSB7CisJCWlmICghbXRkLT5uYW1lKQorCQkJbXRkLT5uYW1lID0gKGNoYXIgKilkZWZhdWx0X25hbmRfbmFtZTsKKwl9IGVsc2UKKwkJbXRkLT5uYW1lID0gTlVMTDsKKworfQorCit2b2lkIG5hbmRfaW5pdCh2b2lkKQoreworCWludCBpOworCXVuc2lnbmVkIGludCBzaXplID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgQ0ZHX01BWF9OQU5EX0RFVklDRTsgaSsrKSB7CisJCW5hbmRfaW5pdF9jaGlwKCZuYW5kX2luZm9baV0sICZuYW5kX2NoaXBbaV0sIGJhc2VfYWRkcmVzc1tpXSk7CisJCXNpemUgKz0gbmFuZF9pbmZvW2ldLnNpemU7CisJCWlmIChuYW5kX2N1cnJfZGV2aWNlID09IC0xKQorCQkJbmFuZF9jdXJyX2RldmljZSA9IGk7Cit9CisJcHJpbnRmKCIlbHUgTWlCXG4iLCBzaXplIC8gKDEwMjQgKiAxMDI0KSk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uYW5kL25hbmRfYmFzZS5jIGIvZHJpdmVycy9uYW5kL25hbmRfYmFzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwYjQwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25hbmQvbmFuZF9iYXNlLmMKQEAgLTAsMCArMSwyNjY5IEBACisvKgorICogIGRyaXZlcnMvbXRkL25hbmQuYworICoKKyAqICBPdmVydmlldzoKKyAqICAgVGhpcyBpcyB0aGUgZ2VuZXJpYyBNVEQgZHJpdmVyIGZvciBOQU5EIGZsYXNoIGRldmljZXMuIEl0IHNob3VsZCBiZQorICogICBjYXBhYmxlIG9mIHdvcmtpbmcgd2l0aCBhbG1vc3QgYWxsIE5BTkQgY2hpcHMgY3VycmVudGx5IGF2YWlsYWJsZS4KKyAqICAgQmFzaWMgc3VwcG9ydCBmb3IgQUctQU5EIGNoaXBzIGlzIHByb3ZpZGVkLgorICoKKyAqCUFkZGl0aW9uYWwgdGVjaG5pY2FsIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBvbgorICoJaHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy90ZWNoL25hbmQuaHRtbAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAgU3RldmVuIEouIEhpbGwgKHNqaGlsbEByZWFsaXR5ZGlsdXRlZC5jb20pCisgKiAJCSAgMjAwMiBUaG9tYXMgR2xlaXhuZXIgKHRnbHhAbGludXRyb25peC5kZSkKKyAqCisgKiAgMDItMDgtMjAwNCAgdGdseDogc3VwcG9ydCBmb3Igc3RyYW5nZSBjaGlwcywgd2hpY2ggY2Fubm90IGF1dG8gaW5jcmVtZW50CisgKgkJcGFnZXMgb24gcmVhZCAvIHJlYWRfb29iCisgKgorICogIDAzLTE3LTIwMDQgIHRnbHg6IENoZWNrIHJlYWR5IGJlZm9yZSBhdXRvIGluY3JlbWVudCBjaGVjay4gU2ltb24gQmF5ZXMKKyAqCQlwb2ludGVkIHRoaXMgb3V0LCBhcyBoZSBtYXJrZWQgYW4gYXV0byBpbmNyZW1lbnQgY2FwYWJsZSBjaGlwCisgKgkJYXMgTk9BVVRPSU5DUiBpbiB0aGUgYm9hcmQgZHJpdmVyLgorICoJCU1ha2UgcmVhZHMgb3ZlciBibG9jayBib3VuZGFyaWVzIHdvcmsgdG9vCisgKgorICogIDA0LTE0LTIwMDQJdGdseDogZmlyc3Qgd29ya2luZyB2ZXJzaW9uIGZvciAyayBwYWdlIHNpemUgY2hpcHMKKyAqCisgKiAgMDUtMTktMjAwNCAgdGdseDogQmFzaWMgc3VwcG9ydCBmb3IgUmVuZXNhcyBBRy1BTkQgY2hpcHMKKyAqCisgKiAgMDktMjQtMjAwNCAgdGdseDogYWRkIHN1cHBvcnQgZm9yIGhhcmR3YXJlIGNvbnRyb2xsZXJzIChlLmcuIEVDQykgc2hhcmVkCisgKgkJYW1vbmcgbXVsdGlwbGUgaW5kZXBlbmRlbmQgZGV2aWNlcy4gU3VnZ2VzdGlvbnMgYW5kIGluaXRpYWwgcGF0Y2gKKyAqCQlmcm9tIEJlbiBEb29rcyA8YmVuLW10ZEBmbHVmZi5vcmc+CisgKgorICogQ3JlZGl0czoKKyAqCURhdmlkIFdvb2Rob3VzZSBmb3IgYWRkaW5nIG11bHRpY2hpcCBzdXBwb3J0CisgKgorICoJQWxlcGggT25lIEx0ZC4gYW5kIFRvYnkgQ2h1cmNoaWxsIEx0ZC4gZm9yIHN1cHBvcnRpbmcgdGhlCisgKglyZXdvcmsgZm9yIDJLIHBhZ2Ugc2l6ZSBjaGlwcworICoKKyAqIFRPRE86CisgKglFbmFibGUgY2FjaGVkIHByb2dyYW1taW5nIGZvciAyayBwYWdlIHNpemUgY2hpcHMKKyAqCUNoZWNrLCBpZiBtdGQtPmVjY3R5cGUgc2hvdWxkIGJlIHNldCB0byBNVERfRUNDX0hXCisgKglpZiB3ZSBoYXZlIEhXIGVjYyBzdXBwb3J0LgorICoJVGhlIEFHLUFORCBjaGlwcyBoYXZlIG5pY2UgZmVhdHVyZXMgZm9yIHNwZWVkIGltcHJvdmVtZW50LAorICoJd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBSZWFkIC8gcHJvZ3JhbSA0IHBhZ2VzIGluIG9uZSBnby4KKyAqCisgKiAkSWQ6IG5hbmRfYmFzZS5jLHYgMS4xMjYgMjAwNC8xMi8xMyAxMToyMjoyNSBsYXZpbmVuIEV4cCAkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworLyogWFhYIFUtQk9PVCBYWFggKi8KKyNpZiAwCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL210ZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL25hbmRfZWNjLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdG1hYy5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCisjaWZkZWYgQ09ORklHX01URF9QQVJUSVRJT05TCisjaW5jbHVkZSA8bGludXgvbXRkL3BhcnRpdGlvbnMuaD4KKyNlbmRpZgorCisjZW5kaWYKKworI2luY2x1ZGUgPGNvbW1vbi5oPgorCisjaWZkZWYgQ0ZHX05BTkRfTEVHQUNZCisjZXJyb3IgQ0ZHX05BTkRfTEVHQUNZIGRlZmluZWQgaW4gYSBmaWxlIG5vdCB1c2luZyB0aGUgbGVnYWN5IE5BTkQgc3VwcG9ydCEKKyNlbmRpZgorCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKKworI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHdhdGNoZG9nLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2VjYy5oPgorCisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2Vycm5vLmg+CisKKyNpZmRlZiBDT05GSUdfSkZGUzJfTkFORAorI2luY2x1ZGUgPGpmZnMyL2pmZnMyLmg+CisjZW5kaWYKKworLyogRGVmaW5lIGRlZmF1bHQgb29iIHBsYWNlbWVudCBzY2hlbWVzIGZvciBsYXJnZSBhbmQgc21hbGwgcGFnZSBkZXZpY2VzICovCitzdGF0aWMgc3RydWN0IG5hbmRfb29iaW5mbyBuYW5kX29vYl84ID0geworCS51c2VlY2MgPSBNVERfTkFOREVDQ19BVVRPUExBQ0UsCisJLmVjY2J5dGVzID0gMywKKwkuZWNjcG9zID0gezAsIDEsIDJ9LAorCS5vb2JmcmVlID0geyB7MywgMn0sIHs2LCAyfSB9Cit9OworCitzdGF0aWMgc3RydWN0IG5hbmRfb29iaW5mbyBuYW5kX29vYl8xNiA9IHsKKwkudXNlZWNjID0gTVREX05BTkRFQ0NfQVVUT1BMQUNFLAorCS5lY2NieXRlcyA9IDYsCisJLmVjY3BvcyA9IHswLCAxLCAyLCAzLCA2LCA3fSwKKwkub29iZnJlZSA9IHsgezgsIDh9IH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgbmFuZF9vb2JpbmZvIG5hbmRfb29iXzY0ID0geworCS51c2VlY2MgPSBNVERfTkFOREVDQ19BVVRPUExBQ0UsCisJLmVjY2J5dGVzID0gMjQsCisJLmVjY3BvcyA9IHsKKwkJNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAorCQk0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsCisJCTU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2M30sCisJLm9vYmZyZWUgPSB7IHsyLCAzOH0gfQorfTsKKworLyogVGhpcyBpcyB1c2VkIGZvciBwYWRkaW5nIHB1cnBvc2VzIGluIG5hbmRfd3JpdGVfb29iICovCitzdGF0aWMgdV9jaGFyIGZmY2hhcnNbXSA9IHsKKwkweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorCTB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisJMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKKwkweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorCTB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisJMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKKwkweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorCTB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCit9OworCisvKgorICogTkFORCBsb3ctbGV2ZWwgTVREIGludGVyZmFjZSBmdW5jdGlvbnMKKyAqLworc3RhdGljIHZvaWQgbmFuZF93cml0ZV9idWYoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHVfY2hhciAqYnVmLCBpbnQgbGVuKTsKK3N0YXRpYyB2b2lkIG5hbmRfcmVhZF9idWYoc3RydWN0IG10ZF9pbmZvICptdGQsIHVfY2hhciAqYnVmLCBpbnQgbGVuKTsKK3N0YXRpYyBpbnQgbmFuZF92ZXJpZnlfYnVmKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCB1X2NoYXIgKmJ1ZiwgaW50IGxlbik7CisKK3N0YXRpYyBpbnQgbmFuZF9yZWFkIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4sIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmKTsKK3N0YXRpYyBpbnQgbmFuZF9yZWFkX2VjYyAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLAorCQkJICBzaXplX3QgKiByZXRsZW4sIHVfY2hhciAqIGJ1ZiwgdV9jaGFyICogZWNjYnVmLCBzdHJ1Y3QgbmFuZF9vb2JpbmZvICpvb2JzZWwpOworc3RhdGljIGludCBuYW5kX3JlYWRfb29iIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4sIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmKTsKK3N0YXRpYyBpbnQgbmFuZF93cml0ZSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCB0bywgc2l6ZV90IGxlbiwgc2l6ZV90ICogcmV0bGVuLCBjb25zdCB1X2NoYXIgKiBidWYpOworc3RhdGljIGludCBuYW5kX3dyaXRlX2VjYyAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCB0bywgc2l6ZV90IGxlbiwKKwkJCSAgIHNpemVfdCAqIHJldGxlbiwgY29uc3QgdV9jaGFyICogYnVmLCB1X2NoYXIgKiBlY2NidWYsIHN0cnVjdCBuYW5kX29vYmluZm8gKm9vYnNlbCk7CitzdGF0aWMgaW50IG5hbmRfd3JpdGVfb29iIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IHRvLCBzaXplX3QgbGVuLCBzaXplX3QgKiByZXRsZW4sIGNvbnN0IHVfY2hhciAqYnVmKTsKKy8qIFhYWCBVLUJPT1QgWFhYICovCisjaWYgMAorc3RhdGljIGludCBuYW5kX3dyaXRldiAoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHN0cnVjdCBrdmVjICp2ZWNzLAorCQkJdW5zaWduZWQgbG9uZyBjb3VudCwgbG9mZl90IHRvLCBzaXplX3QgKiByZXRsZW4pOworc3RhdGljIGludCBuYW5kX3dyaXRldl9lY2MgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCBzdHJ1Y3Qga3ZlYyAqdmVjcywKKwkJCXVuc2lnbmVkIGxvbmcgY291bnQsIGxvZmZfdCB0bywgc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKmVjY2J1Ziwgc3RydWN0IG5hbmRfb29iaW5mbyAqb29ic2VsKTsKKyNlbmRpZgorc3RhdGljIGludCBuYW5kX2VyYXNlIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IGVyYXNlX2luZm8gKmluc3RyKTsKK3N0YXRpYyB2b2lkIG5hbmRfc3luYyAoc3RydWN0IG10ZF9pbmZvICptdGQpOworCisvKiBTb21lIGludGVybmFsIGZ1bmN0aW9ucyAqLworc3RhdGljIGludCBuYW5kX3dyaXRlX3BhZ2UgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzLCBpbnQgcGFnZSwgdV9jaGFyICpvb2JfYnVmLAorCQlzdHJ1Y3QgbmFuZF9vb2JpbmZvICpvb2JzZWwsIGludCBtb2RlKTsKKyNpZmRlZiBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCitzdGF0aWMgaW50IG5hbmRfdmVyaWZ5X3BhZ2VzIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqdGhpcywgaW50IHBhZ2UsIGludCBudW1wYWdlcywKKwl1X2NoYXIgKm9vYl9idWYsIHN0cnVjdCBuYW5kX29vYmluZm8gKm9vYnNlbCwgaW50IGNoaXBuciwgaW50IG9vYm1vZGUpOworI2Vsc2UKKyNkZWZpbmUgbmFuZF92ZXJpZnlfcGFnZXMoLi4uKSAoMCkKKyNlbmRpZgorCitzdGF0aWMgdm9pZCBuYW5kX2dldF9kZXZpY2UgKHN0cnVjdCBuYW5kX2NoaXAgKnRoaXMsIHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgbmV3X3N0YXRlKTsKKworLyoqCisgKiBuYW5kX3JlbGVhc2VfZGV2aWNlIC0gW0dFTkVSSUNdIHJlbGVhc2UgY2hpcAorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqCisgKiBEZXNlbGVjdCwgcmVsZWFzZSBjaGlwIGxvY2sgYW5kIHdha2UgdXAgYW55b25lIHdhaXRpbmcgb24gdGhlIGRldmljZQorICovCisvKiBYWFggVS1CT09UIFhYWCAqLworI2lmIDAKK3N0YXRpYyB2b2lkIG5hbmRfcmVsZWFzZV9kZXZpY2UgKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwkvKiBEZS1zZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCAtMSk7CisJLyogRG8gd2UgaGF2ZSBhIGhhcmR3YXJlIGNvbnRyb2xsZXIgPyAqLworCWlmICh0aGlzLT5jb250cm9sbGVyKSB7CisJCXNwaW5fbG9jaygmdGhpcy0+Y29udHJvbGxlci0+bG9jayk7CisJCXRoaXMtPmNvbnRyb2xsZXItPmFjdGl2ZSA9IE5VTEw7CisJCXNwaW5fdW5sb2NrKCZ0aGlzLT5jb250cm9sbGVyLT5sb2NrKTsKKwl9CisJLyogUmVsZWFzZSB0aGUgY2hpcCAqLworCXNwaW5fbG9jayAoJnRoaXMtPmNoaXBfbG9jayk7CisJdGhpcy0+c3RhdGUgPSBGTF9SRUFEWTsKKwl3YWtlX3VwICgmdGhpcy0+d3EpOworCXNwaW5fdW5sb2NrICgmdGhpcy0+Y2hpcF9sb2NrKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCBuYW5kX3JlbGVhc2VfZGV2aWNlIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOwkvKiBEZS1zZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCit9CisjZW5kaWYKKworLyoqCisgKiBuYW5kX3JlYWRfYnl0ZSAtIFtERUZBVUxUXSByZWFkIG9uZSBieXRlIGZyb20gdGhlIGNoaXAKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKgorICogRGVmYXVsdCByZWFkIGZ1bmN0aW9uIGZvciA4Yml0IGJ1c3dpdGgKKyAqLworc3RhdGljIHVfY2hhciBuYW5kX3JlYWRfYnl0ZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXJldHVybiByZWFkYih0aGlzLT5JT19BRERSX1IpOworfQorCisvKioKKyAqIG5hbmRfd3JpdGVfYnl0ZSAtIFtERUZBVUxUXSB3cml0ZSBvbmUgYnl0ZSB0byB0aGUgY2hpcAorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBieXRlOglwb2ludGVyIHRvIGRhdGEgYnl0ZSB0byB3cml0ZQorICoKKyAqIERlZmF1bHQgd3JpdGUgZnVuY3Rpb24gZm9yIDhpdCBidXN3aXRoCisgKi8KK3N0YXRpYyB2b2lkIG5hbmRfd3JpdGVfYnl0ZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyIGJ5dGUpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwl3cml0ZWIoYnl0ZSwgdGhpcy0+SU9fQUREUl9XKTsKK30KKworLyoqCisgKiBuYW5kX3JlYWRfYnl0ZTE2IC0gW0RFRkFVTFRdIHJlYWQgb25lIGJ5dGUgZW5kaWFuZXNzIGF3YXJlIGZyb20gdGhlIGNoaXAKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKgorICogRGVmYXVsdCByZWFkIGZ1bmN0aW9uIGZvciAxNmJpdCBidXN3aXRoIHdpdGgKKyAqIGVuZGlhbmVzcyBjb252ZXJzaW9uCisgKi8KK3N0YXRpYyB1X2NoYXIgbmFuZF9yZWFkX2J5dGUxNihzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXJldHVybiAodV9jaGFyKSBjcHVfdG9fbGUxNihyZWFkdyh0aGlzLT5JT19BRERSX1IpKTsKK30KKworLyoqCisgKiBuYW5kX3dyaXRlX2J5dGUxNiAtIFtERUZBVUxUXSB3cml0ZSBvbmUgYnl0ZSBlbmRpYW5lc3MgYXdhcmUgdG8gdGhlIGNoaXAKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAYnl0ZToJcG9pbnRlciB0byBkYXRhIGJ5dGUgdG8gd3JpdGUKKyAqCisgKiBEZWZhdWx0IHdyaXRlIGZ1bmN0aW9uIGZvciAxNmJpdCBidXN3aXRoIHdpdGgKKyAqIGVuZGlhbmVzcyBjb252ZXJzaW9uCisgKi8KK3N0YXRpYyB2b2lkIG5hbmRfd3JpdGVfYnl0ZTE2KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1X2NoYXIgYnl0ZSkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXdyaXRldyhsZTE2X3RvX2NwdSgodTE2KSBieXRlKSwgdGhpcy0+SU9fQUREUl9XKTsKK30KKworLyoqCisgKiBuYW5kX3JlYWRfd29yZCAtIFtERUZBVUxUXSByZWFkIG9uZSB3b3JkIGZyb20gdGhlIGNoaXAKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKgorICogRGVmYXVsdCByZWFkIGZ1bmN0aW9uIGZvciAxNmJpdCBidXN3aXRoIHdpdGhvdXQKKyAqIGVuZGlhbmVzcyBjb252ZXJzaW9uCisgKi8KK3N0YXRpYyB1MTYgbmFuZF9yZWFkX3dvcmQoc3RydWN0IG10ZF9pbmZvICptdGQpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlyZXR1cm4gcmVhZHcodGhpcy0+SU9fQUREUl9SKTsKK30KKworLyoqCisgKiBuYW5kX3dyaXRlX3dvcmQgLSBbREVGQVVMVF0gd3JpdGUgb25lIHdvcmQgdG8gdGhlIGNoaXAKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAd29yZDoJZGF0YSB3b3JkIHRvIHdyaXRlCisgKgorICogRGVmYXVsdCB3cml0ZSBmdW5jdGlvbiBmb3IgMTZiaXQgYnVzd2l0aCB3aXRob3V0CisgKiBlbmRpYW5lc3MgY29udmVyc2lvbgorICovCitzdGF0aWMgdm9pZCBuYW5kX3dyaXRlX3dvcmQoc3RydWN0IG10ZF9pbmZvICptdGQsIHUxNiB3b3JkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJd3JpdGV3KHdvcmQsIHRoaXMtPklPX0FERFJfVyk7Cit9CisKKy8qKgorICogbmFuZF9zZWxlY3RfY2hpcCAtIFtERUZBVUxUXSBjb250cm9sIENFIGxpbmUKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAY2hpcDoJY2hpcG51bWJlciB0byBzZWxlY3QsIC0xIGZvciBkZXNlbGVjdAorICoKKyAqIERlZmF1bHQgc2VsZWN0IGZ1bmN0aW9uIGZvciAxIGNoaXAgZGV2aWNlcy4KKyAqLworc3RhdGljIHZvaWQgbmFuZF9zZWxlY3RfY2hpcChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IGNoaXApCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlzd2l0Y2goY2hpcCkgeworCWNhc2UgLTE6CisJCXRoaXMtPmh3Y29udHJvbChtdGQsIE5BTkRfQ1RMX0NMUk5DRSk7CisJCWJyZWFrOworCWNhc2UgMDoKKwkJdGhpcy0+aHdjb250cm9sKG10ZCwgTkFORF9DVExfU0VUTkNFKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlCVUcoKTsKKwl9Cit9CisKKy8qKgorICogbmFuZF93cml0ZV9idWYgLSBbREVGQVVMVF0gd3JpdGUgYnVmZmVyIHRvIGNoaXAKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAYnVmOglkYXRhIGJ1ZmZlcgorICogQGxlbjoJbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlCisgKgorICogRGVmYXVsdCB3cml0ZSBmdW5jdGlvbiBmb3IgOGJpdCBidXN3aXRoCisgKi8KK3N0YXRpYyB2b2lkIG5hbmRfd3JpdGVfYnVmKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCB1X2NoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwlpbnQgaTsKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCisJZm9yIChpPTA7IGk8bGVuOyBpKyspCisJCXdyaXRlYihidWZbaV0sIHRoaXMtPklPX0FERFJfVyk7Cit9CisKKy8qKgorICogbmFuZF9yZWFkX2J1ZiAtIFtERUZBVUxUXSByZWFkIGNoaXAgZGF0YSBpbnRvIGJ1ZmZlcgorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBidWY6CWJ1ZmZlciB0byBzdG9yZSBkYXRlCisgKiBAbGVuOgludW1iZXIgb2YgYnl0ZXMgdG8gcmVhZAorICoKKyAqIERlZmF1bHQgcmVhZCBmdW5jdGlvbiBmb3IgOGJpdCBidXN3aXRoCisgKi8KK3N0YXRpYyB2b2lkIG5hbmRfcmVhZF9idWYoc3RydWN0IG10ZF9pbmZvICptdGQsIHVfY2hhciAqYnVmLCBpbnQgbGVuKQoreworCWludCBpOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwlmb3IgKGk9MDsgaTxsZW47IGkrKykKKwkJYnVmW2ldID0gcmVhZGIodGhpcy0+SU9fQUREUl9SKTsKK30KKworLyoqCisgKiBuYW5kX3ZlcmlmeV9idWYgLSBbREVGQVVMVF0gVmVyaWZ5IGNoaXAgZGF0YSBhZ2FpbnN0IGJ1ZmZlcgorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBidWY6CWJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGNvbXBhcmUKKyAqIEBsZW46CW51bWJlciBvZiBieXRlcyB0byBjb21wYXJlCisgKgorICogRGVmYXVsdCB2ZXJpZnkgZnVuY3Rpb24gZm9yIDhiaXQgYnVzd2l0aAorICovCitzdGF0aWMgaW50IG5hbmRfdmVyaWZ5X2J1ZihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgY29uc3QgdV9jaGFyICpidWYsIGludCBsZW4pCit7CisJaW50IGk7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKworCWZvciAoaT0wOyBpPGxlbjsgaSsrKQorCQlpZiAoYnVmW2ldICE9IHJlYWRiKHRoaXMtPklPX0FERFJfUikpCisJCQlyZXR1cm4gLUVGQVVMVDsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIG5hbmRfd3JpdGVfYnVmMTYgLSBbREVGQVVMVF0gd3JpdGUgYnVmZmVyIHRvIGNoaXAKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAYnVmOglkYXRhIGJ1ZmZlcgorICogQGxlbjoJbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlCisgKgorICogRGVmYXVsdCB3cml0ZSBmdW5jdGlvbiBmb3IgMTZiaXQgYnVzd2l0aAorICovCitzdGF0aWMgdm9pZCBuYW5kX3dyaXRlX2J1ZjE2KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCB1X2NoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwlpbnQgaTsKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXUxNiAqcCA9ICh1MTYgKikgYnVmOworCWxlbiA+Pj0gMTsKKworCWZvciAoaT0wOyBpPGxlbjsgaSsrKQorCQl3cml0ZXcocFtpXSwgdGhpcy0+SU9fQUREUl9XKTsKKworfQorCisvKioKKyAqIG5hbmRfcmVhZF9idWYxNiAtIFtERUZBVUxUXSByZWFkIGNoaXAgZGF0YSBpbnRvIGJ1ZmZlcgorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBidWY6CWJ1ZmZlciB0byBzdG9yZSBkYXRlCisgKiBAbGVuOgludW1iZXIgb2YgYnl0ZXMgdG8gcmVhZAorICoKKyAqIERlZmF1bHQgcmVhZCBmdW5jdGlvbiBmb3IgMTZiaXQgYnVzd2l0aAorICovCitzdGF0aWMgdm9pZCBuYW5kX3JlYWRfYnVmMTYoc3RydWN0IG10ZF9pbmZvICptdGQsIHVfY2hhciAqYnVmLCBpbnQgbGVuKQoreworCWludCBpOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJdTE2ICpwID0gKHUxNiAqKSBidWY7CisJbGVuID4+PSAxOworCisJZm9yIChpPTA7IGk8bGVuOyBpKyspCisJCXBbaV0gPSByZWFkdyh0aGlzLT5JT19BRERSX1IpOworfQorCisvKioKKyAqIG5hbmRfdmVyaWZ5X2J1ZjE2IC0gW0RFRkFVTFRdIFZlcmlmeSBjaGlwIGRhdGEgYWdhaW5zdCBidWZmZXIKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAYnVmOglidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBjb21wYXJlCisgKiBAbGVuOgludW1iZXIgb2YgYnl0ZXMgdG8gY29tcGFyZQorICoKKyAqIERlZmF1bHQgdmVyaWZ5IGZ1bmN0aW9uIGZvciAxNmJpdCBidXN3aXRoCisgKi8KK3N0YXRpYyBpbnQgbmFuZF92ZXJpZnlfYnVmMTYoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHVfY2hhciAqYnVmLCBpbnQgbGVuKQoreworCWludCBpOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJdTE2ICpwID0gKHUxNiAqKSBidWY7CisJbGVuID4+PSAxOworCisJZm9yIChpPTA7IGk8bGVuOyBpKyspCisJCWlmIChwW2ldICE9IHJlYWR3KHRoaXMtPklPX0FERFJfUikpCisJCQlyZXR1cm4gLUVGQVVMVDsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIG5hbmRfYmxvY2tfYmFkIC0gW0RFRkFVTFRdIFJlYWQgYmFkIGJsb2NrIG1hcmtlciBmcm9tIHRoZSBjaGlwCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQG9mczoJb2Zmc2V0IGZyb20gZGV2aWNlIHN0YXJ0CisgKiBAZ2V0Y2hpcDoJMCwgaWYgdGhlIGNoaXAgaXMgYWxyZWFkeSBzZWxlY3RlZAorICoKKyAqIENoZWNrLCBpZiB0aGUgYmxvY2sgaXMgYmFkLgorICovCitzdGF0aWMgaW50IG5hbmRfYmxvY2tfYmFkKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3Qgb2ZzLCBpbnQgZ2V0Y2hpcCkKK3sKKwlpbnQgcGFnZSwgY2hpcG5yLCByZXMgPSAwOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJdTE2IGJhZDsKKworCWlmIChnZXRjaGlwKSB7CisJCXBhZ2UgPSAoaW50KShvZnMgPj4gdGhpcy0+cGFnZV9zaGlmdCk7CisJCWNoaXBuciA9IChpbnQpKG9mcyA+PiB0aGlzLT5jaGlwX3NoaWZ0KTsKKworCQkvKiBHcmFiIHRoZSBsb2NrIGFuZCBzZWUgaWYgdGhlIGRldmljZSBpcyBhdmFpbGFibGUgKi8KKwkJbmFuZF9nZXRfZGV2aWNlICh0aGlzLCBtdGQsIEZMX1JFQURJTkcpOworCisJCS8qIFNlbGVjdCB0aGUgTkFORCBkZXZpY2UgKi8KKwkJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCBjaGlwbnIpOworCX0gZWxzZQorCQlwYWdlID0gKGludCkgb2ZzOworCisJaWYgKHRoaXMtPm9wdGlvbnMgJiBOQU5EX0JVU1dJRFRIXzE2KSB7CisJCXRoaXMtPmNtZGZ1bmMgKG10ZCwgTkFORF9DTURfUkVBRE9PQiwgdGhpcy0+YmFkYmxvY2twb3MgJiAweEZFLCBwYWdlICYgdGhpcy0+cGFnZW1hc2spOworCQliYWQgPSBjcHVfdG9fbGUxNih0aGlzLT5yZWFkX3dvcmQobXRkKSk7CisJCWlmICh0aGlzLT5iYWRibG9ja3BvcyAmIDB4MSkKKwkJCWJhZCA+Pj0gMTsKKwkJaWYgKChiYWQgJiAweEZGKSAhPSAweGZmKQorCQkJcmVzID0gMTsKKwl9IGVsc2UgeworCQl0aGlzLT5jbWRmdW5jIChtdGQsIE5BTkRfQ01EX1JFQURPT0IsIHRoaXMtPmJhZGJsb2NrcG9zLCBwYWdlICYgdGhpcy0+cGFnZW1hc2spOworCQlpZiAodGhpcy0+cmVhZF9ieXRlKG10ZCkgIT0gMHhmZikKKwkJCXJlcyA9IDE7CisJfQorCisJaWYgKGdldGNoaXApIHsKKwkJLyogRGVzZWxlY3QgYW5kIHdha2UgdXAgYW55b25lIHdhaXRpbmcgb24gdGhlIGRldmljZSAqLworCQluYW5kX3JlbGVhc2VfZGV2aWNlKG10ZCk7CisJfQorCisJcmV0dXJuIHJlczsKK30KKworLyoqCisgKiBuYW5kX2RlZmF1bHRfYmxvY2tfbWFya2JhZCAtIFtERUZBVUxUXSBtYXJrIGEgYmxvY2sgYmFkCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQG9mczoJb2Zmc2V0IGZyb20gZGV2aWNlIHN0YXJ0CisgKgorICogVGhpcyBpcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gYnkKKyAqIGEgaGFyZHdhcmUgc3BlY2lmaWMgZHJpdmVyLgorKi8KK3N0YXRpYyBpbnQgbmFuZF9kZWZhdWx0X2Jsb2NrX21hcmtiYWQoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZnMpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwl1X2NoYXIgYnVmWzJdID0gezAsIDB9OworCXNpemVfdAlyZXRsZW47CisJaW50IGJsb2NrOworCisJLyogR2V0IGJsb2NrIG51bWJlciAqLworCWJsb2NrID0gKChpbnQpIG9mcykgPj4gdGhpcy0+YmJ0X2VyYXNlX3NoaWZ0OworCXRoaXMtPmJidFtibG9jayA+PiAyXSB8PSAweDAxIDw8ICgoYmxvY2sgJiAweDAzKSA8PCAxKTsKKworCS8qIERvIHdlIGhhdmUgYSBmbGFzaCBiYXNlZCBiYWQgYmxvY2sgdGFibGUgPyAqLworCWlmICh0aGlzLT5vcHRpb25zICYgTkFORF9VU0VfRkxBU0hfQkJUKQorCQlyZXR1cm4gbmFuZF91cGRhdGVfYmJ0IChtdGQsIG9mcyk7CisKKwkvKiBXZSB3cml0ZSB0d28gYnl0ZXMsIHNvIHdlIGRvbnQgaGF2ZSB0byBtZXNzIHdpdGggMTYgYml0IGFjY2VzcyAqLworCW9mcyArPSBtdGQtPm9vYnNpemUgKyAodGhpcy0+YmFkYmxvY2twb3MgJiB+MHgwMSk7CisJcmV0dXJuIG5hbmRfd3JpdGVfb29iIChtdGQsIG9mcyAsIDIsICZyZXRsZW4sIGJ1Zik7Cit9CisKKy8qKgorICogbmFuZF9jaGVja193cCAtIFtHRU5FUklDXSBjaGVjayBpZiB0aGUgY2hpcCBpcyB3cml0ZSBwcm90ZWN0ZWQKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBDaGVjaywgaWYgdGhlIGRldmljZSBpcyB3cml0ZSBwcm90ZWN0ZWQKKyAqCisgKiBUaGUgZnVuY3Rpb24gZXhwZWN0cywgdGhhdCB0aGUgZGV2aWNlIGlzIGFscmVhZHkgc2VsZWN0ZWQKKyAqLworc3RhdGljIGludCBuYW5kX2NoZWNrX3dwIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCS8qIENoZWNrIHRoZSBXUCBiaXQgKi8KKwl0aGlzLT5jbWRmdW5jIChtdGQsIE5BTkRfQ01EX1NUQVRVUywgLTEsIC0xKTsKKwlyZXR1cm4gKHRoaXMtPnJlYWRfYnl0ZShtdGQpICYgMHg4MCkgPyAwIDogMTsKK30KKworLyoqCisgKiBuYW5kX2Jsb2NrX2NoZWNrYmFkIC0gW0dFTkVSSUNdIENoZWNrIGlmIGEgYmxvY2sgaXMgbWFya2VkIGJhZAorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBvZnM6CW9mZnNldCBmcm9tIGRldmljZSBzdGFydAorICogQGdldGNoaXA6CTAsIGlmIHRoZSBjaGlwIGlzIGFscmVhZHkgc2VsZWN0ZWQKKyAqIEBhbGxvd2JidDoJMSwgaWYgaXRzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBiYnQgYXJlYQorICoKKyAqIENoZWNrLCBpZiB0aGUgYmxvY2sgaXMgYmFkLiBFaXRoZXIgYnkgcmVhZGluZyB0aGUgYmFkIGJsb2NrIHRhYmxlIG9yCisgKiBjYWxsaW5nIG9mIHRoZSBzY2FuIGZ1bmN0aW9uLgorICovCitzdGF0aWMgaW50IG5hbmRfYmxvY2tfY2hlY2tiYWQgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3Qgb2ZzLCBpbnQgZ2V0Y2hpcCwgaW50IGFsbG93YmJ0KQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwlpZiAoIXRoaXMtPmJidCkKKwkJcmV0dXJuIHRoaXMtPmJsb2NrX2JhZChtdGQsIG9mcywgZ2V0Y2hpcCk7CisKKwkvKiBSZXR1cm4gaW5mbyBmcm9tIHRoZSB0YWJsZSAqLworCXJldHVybiBuYW5kX2lzYmFkX2JidCAobXRkLCBvZnMsIGFsbG93YmJ0KTsKK30KKworLyoqCisgKiBuYW5kX2NvbW1hbmQgLSBbREVGQVVMVF0gU2VuZCBjb21tYW5kIHRvIE5BTkQgZGV2aWNlCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQGNvbW1hbmQ6CXRoZSBjb21tYW5kIHRvIGJlIHNlbnQKKyAqIEBjb2x1bW46CXRoZSBjb2x1bW4gYWRkcmVzcyBmb3IgdGhpcyBjb21tYW5kLCAtMSBpZiBub25lCisgKiBAcGFnZV9hZGRyOgl0aGUgcGFnZSBhZGRyZXNzIGZvciB0aGlzIGNvbW1hbmQsIC0xIGlmIG5vbmUKKyAqCisgKiBTZW5kIGNvbW1hbmQgdG8gTkFORCBkZXZpY2UuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3Igc21hbGwgcGFnZQorICogZGV2aWNlcyAoMjU2LzUxMiBCeXRlcyBwZXIgcGFnZSkKKyAqLworc3RhdGljIHZvaWQgbmFuZF9jb21tYW5kIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdW5zaWduZWQgY29tbWFuZCwgaW50IGNvbHVtbiwgaW50IHBhZ2VfYWRkcikKK3sKKwlyZWdpc3RlciBzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCisJLyogQmVnaW4gY29tbWFuZCBsYXRjaCBjeWNsZSAqLworCXRoaXMtPmh3Y29udHJvbChtdGQsIE5BTkRfQ1RMX1NFVENMRSk7CisJLyoKKwkgKiBXcml0ZSBvdXQgdGhlIGNvbW1hbmQgdG8gdGhlIGRldmljZS4KKwkgKi8KKwlpZiAoY29tbWFuZCA9PSBOQU5EX0NNRF9TRVFJTikgeworCQlpbnQgcmVhZGNtZDsKKworCQlpZiAoY29sdW1uID49IG10ZC0+b29iYmxvY2spIHsKKwkJCS8qIE9PQiBhcmVhICovCisJCQljb2x1bW4gLT0gbXRkLT5vb2JibG9jazsKKwkJCXJlYWRjbWQgPSBOQU5EX0NNRF9SRUFET09COworCQl9IGVsc2UgaWYgKGNvbHVtbiA8IDI1NikgeworCQkJLyogRmlyc3QgMjU2IGJ5dGVzIC0tPiBSRUFEMCAqLworCQkJcmVhZGNtZCA9IE5BTkRfQ01EX1JFQUQwOworCQl9IGVsc2UgeworCQkJY29sdW1uIC09IDI1NjsKKwkJCXJlYWRjbWQgPSBOQU5EX0NNRF9SRUFEMTsKKwkJfQorCQl0aGlzLT53cml0ZV9ieXRlKG10ZCwgcmVhZGNtZCk7CisJfQorCXRoaXMtPndyaXRlX2J5dGUobXRkLCBjb21tYW5kKTsKKworCS8qIFNldCBBTEUgYW5kIGNsZWFyIENMRSB0byBzdGFydCBhZGRyZXNzIGN5Y2xlICovCisJdGhpcy0+aHdjb250cm9sKG10ZCwgTkFORF9DVExfQ0xSQ0xFKTsKKworCWlmIChjb2x1bW4gIT0gLTEgfHwgcGFnZV9hZGRyICE9IC0xKSB7CisJCXRoaXMtPmh3Y29udHJvbChtdGQsIE5BTkRfQ1RMX1NFVEFMRSk7CisKKwkJLyogU2VyaWFsbHkgaW5wdXQgYWRkcmVzcyAqLworCQlpZiAoY29sdW1uICE9IC0xKSB7CisJCQkvKiBBZGp1c3QgY29sdW1ucyBmb3IgMTYgYml0IGJ1c3dpZHRoICovCisJCQlpZiAodGhpcy0+b3B0aW9ucyAmIE5BTkRfQlVTV0lEVEhfMTYpCisJCQkJY29sdW1uID4+PSAxOworCQkJdGhpcy0+d3JpdGVfYnl0ZShtdGQsIGNvbHVtbik7CisJCX0KKwkJaWYgKHBhZ2VfYWRkciAhPSAtMSkgeworCQkJdGhpcy0+d3JpdGVfYnl0ZShtdGQsICh1bnNpZ25lZCBjaGFyKSAocGFnZV9hZGRyICYgMHhmZikpOworCQkJdGhpcy0+d3JpdGVfYnl0ZShtdGQsICh1bnNpZ25lZCBjaGFyKSAoKHBhZ2VfYWRkciA+PiA4KSAmIDB4ZmYpKTsKKwkJCS8qIE9uZSBtb3JlIGFkZHJlc3MgY3ljbGUgZm9yIGRldmljZXMgPiAzMk1pQiAqLworCQkJaWYgKHRoaXMtPmNoaXBzaXplID4gKDMyIDw8IDIwKSkKKwkJCQl0aGlzLT53cml0ZV9ieXRlKG10ZCwgKHVuc2lnbmVkIGNoYXIpICgocGFnZV9hZGRyID4+IDE2KSAmIDB4MGYpKTsKKwkJfQorCQkvKiBMYXRjaCBpbiBhZGRyZXNzICovCisJCXRoaXMtPmh3Y29udHJvbChtdGQsIE5BTkRfQ1RMX0NMUkFMRSk7CisJfQorCisJLyoKKwkgKiBwcm9ncmFtIGFuZCBlcmFzZSBoYXZlIHRoZWlyIG93biBidXN5IGhhbmRsZXJzCisJICogc3RhdHVzIGFuZCBzZXF1ZW50aWFsIGluIG5lZWRzIG5vIGRlbGF5CisJKi8KKwlzd2l0Y2ggKGNvbW1hbmQpIHsKKworCWNhc2UgTkFORF9DTURfUEFHRVBST0c6CisJY2FzZSBOQU5EX0NNRF9FUkFTRTE6CisJY2FzZSBOQU5EX0NNRF9FUkFTRTI6CisJY2FzZSBOQU5EX0NNRF9TRVFJTjoKKwljYXNlIE5BTkRfQ01EX1NUQVRVUzoKKwkJcmV0dXJuOworCisJY2FzZSBOQU5EX0NNRF9SRVNFVDoKKwkJaWYgKHRoaXMtPmRldl9yZWFkeSkKKwkJCWJyZWFrOworCQl1ZGVsYXkodGhpcy0+Y2hpcF9kZWxheSk7CisJCXRoaXMtPmh3Y29udHJvbChtdGQsIE5BTkRfQ1RMX1NFVENMRSk7CisJCXRoaXMtPndyaXRlX2J5dGUobXRkLCBOQU5EX0NNRF9TVEFUVVMpOworCQl0aGlzLT5od2NvbnRyb2wobXRkLCBOQU5EX0NUTF9DTFJDTEUpOworCQl3aGlsZSAoICEodGhpcy0+cmVhZF9ieXRlKG10ZCkgJiAweDQwKSk7CisJCXJldHVybjsKKworCS8qIFRoaXMgYXBwbGllcyB0byByZWFkIGNvbW1hbmRzICovCisJZGVmYXVsdDoKKwkJLyoKKwkJICogSWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGJ1c3kgcGluLCB3ZSBhcHBseSB0aGUgZ2l2ZW4KKwkJICogY29tbWFuZCBkZWxheQorCQkqLworCQlpZiAoIXRoaXMtPmRldl9yZWFkeSkgeworCQkJdWRlbGF5ICh0aGlzLT5jaGlwX2RlbGF5KTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCS8qIEFwcGx5IHRoaXMgc2hvcnQgZGVsYXkgYWx3YXlzIHRvIGVuc3VyZSB0aGF0IHdlIGRvIHdhaXQgdFdCIGluCisJICogYW55IGNhc2Ugb24gYW55IG1hY2hpbmUuICovCisJbmRlbGF5ICgxMDApOworCS8qIHdhaXQgdW50aWwgY29tbWFuZCBpcyBwcm9jZXNzZWQgKi8KKwl3aGlsZSAoIXRoaXMtPmRldl9yZWFkeShtdGQpKTsKK30KKworLyoqCisgKiBuYW5kX2NvbW1hbmRfbHAgLSBbREVGQVVMVF0gU2VuZCBjb21tYW5kIHRvIE5BTkQgbGFyZ2UgcGFnZSBkZXZpY2UKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAY29tbWFuZDoJdGhlIGNvbW1hbmQgdG8gYmUgc2VudAorICogQGNvbHVtbjoJdGhlIGNvbHVtbiBhZGRyZXNzIGZvciB0aGlzIGNvbW1hbmQsIC0xIGlmIG5vbmUKKyAqIEBwYWdlX2FkZHI6CXRoZSBwYWdlIGFkZHJlc3MgZm9yIHRoaXMgY29tbWFuZCwgLTEgaWYgbm9uZQorICoKKyAqIFNlbmQgY29tbWFuZCB0byBOQU5EIGRldmljZS4gVGhpcyBpcyB0aGUgdmVyc2lvbiBmb3IgdGhlIG5ldyBsYXJnZSBwYWdlIGRldmljZXMKKyAqIFdlIGRvbnQgaGF2ZSB0aGUgc2VwZXJhdGUgcmVnaW9ucyBhcyB3ZSBoYXZlIGluIHRoZSBzbWFsbCBwYWdlIGRldmljZXMuCisgKiBXZSBtdXN0IGVtdWxhdGUgTkFORF9DTURfUkVBRE9PQiB0byBrZWVwIHRoZSBjb2RlIGNvbXBhdGlibGUuCisgKgorICovCitzdGF0aWMgdm9pZCBuYW5kX2NvbW1hbmRfbHAgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1bnNpZ25lZCBjb21tYW5kLCBpbnQgY29sdW1uLCBpbnQgcGFnZV9hZGRyKQoreworCXJlZ2lzdGVyIHN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwkvKiBFbXVsYXRlIE5BTkRfQ01EX1JFQURPT0IgKi8KKwlpZiAoY29tbWFuZCA9PSBOQU5EX0NNRF9SRUFET09CKSB7CisJCWNvbHVtbiArPSBtdGQtPm9vYmJsb2NrOworCQljb21tYW5kID0gTkFORF9DTURfUkVBRDA7CisJfQorCisKKwkvKiBCZWdpbiBjb21tYW5kIGxhdGNoIGN5Y2xlICovCisJdGhpcy0+aHdjb250cm9sKG10ZCwgTkFORF9DVExfU0VUQ0xFKTsKKwkvKiBXcml0ZSBvdXQgdGhlIGNvbW1hbmQgdG8gdGhlIGRldmljZS4gKi8KKwl0aGlzLT53cml0ZV9ieXRlKG10ZCwgY29tbWFuZCk7CisJLyogRW5kIGNvbW1hbmQgbGF0Y2ggY3ljbGUgKi8KKwl0aGlzLT5od2NvbnRyb2wobXRkLCBOQU5EX0NUTF9DTFJDTEUpOworCisJaWYgKGNvbHVtbiAhPSAtMSB8fCBwYWdlX2FkZHIgIT0gLTEpIHsKKwkJdGhpcy0+aHdjb250cm9sKG10ZCwgTkFORF9DVExfU0VUQUxFKTsKKworCQkvKiBTZXJpYWxseSBpbnB1dCBhZGRyZXNzICovCisJCWlmIChjb2x1bW4gIT0gLTEpIHsKKwkJCS8qIEFkanVzdCBjb2x1bW5zIGZvciAxNiBiaXQgYnVzd2lkdGggKi8KKwkJCWlmICh0aGlzLT5vcHRpb25zICYgTkFORF9CVVNXSURUSF8xNikKKwkJCQljb2x1bW4gPj49IDE7CisJCQl0aGlzLT53cml0ZV9ieXRlKG10ZCwgY29sdW1uICYgMHhmZik7CisJCQl0aGlzLT53cml0ZV9ieXRlKG10ZCwgY29sdW1uID4+IDgpOworCQl9CisJCWlmIChwYWdlX2FkZHIgIT0gLTEpIHsKKwkJCXRoaXMtPndyaXRlX2J5dGUobXRkLCAodW5zaWduZWQgY2hhcikgKHBhZ2VfYWRkciAmIDB4ZmYpKTsKKwkJCXRoaXMtPndyaXRlX2J5dGUobXRkLCAodW5zaWduZWQgY2hhcikgKChwYWdlX2FkZHIgPj4gOCkgJiAweGZmKSk7CisJCQkvKiBPbmUgbW9yZSBhZGRyZXNzIGN5Y2xlIGZvciBkZXZpY2VzID4gMTI4TWlCICovCisJCQlpZiAodGhpcy0+Y2hpcHNpemUgPiAoMTI4IDw8IDIwKSkKKwkJCQl0aGlzLT53cml0ZV9ieXRlKG10ZCwgKHVuc2lnbmVkIGNoYXIpICgocGFnZV9hZGRyID4+IDE2KSAmIDB4ZmYpKTsKKwkJfQorCQkvKiBMYXRjaCBpbiBhZGRyZXNzICovCisJCXRoaXMtPmh3Y29udHJvbChtdGQsIE5BTkRfQ1RMX0NMUkFMRSk7CisJfQorCisJLyoKKwkgKiBwcm9ncmFtIGFuZCBlcmFzZSBoYXZlIHRoZWlyIG93biBidXN5IGhhbmRsZXJzCisJICogc3RhdHVzIGFuZCBzZXF1ZW50aWFsIGluIG5lZWRzIG5vIGRlbGF5CisJKi8KKwlzd2l0Y2ggKGNvbW1hbmQpIHsKKworCWNhc2UgTkFORF9DTURfQ0FDSEVEUFJPRzoKKwljYXNlIE5BTkRfQ01EX1BBR0VQUk9HOgorCWNhc2UgTkFORF9DTURfRVJBU0UxOgorCWNhc2UgTkFORF9DTURfRVJBU0UyOgorCWNhc2UgTkFORF9DTURfU0VRSU46CisJY2FzZSBOQU5EX0NNRF9TVEFUVVM6CisJCXJldHVybjsKKworCisJY2FzZSBOQU5EX0NNRF9SRVNFVDoKKwkJaWYgKHRoaXMtPmRldl9yZWFkeSkKKwkJCWJyZWFrOworCQl1ZGVsYXkodGhpcy0+Y2hpcF9kZWxheSk7CisJCXRoaXMtPmh3Y29udHJvbChtdGQsIE5BTkRfQ1RMX1NFVENMRSk7CisJCXRoaXMtPndyaXRlX2J5dGUobXRkLCBOQU5EX0NNRF9TVEFUVVMpOworCQl0aGlzLT5od2NvbnRyb2wobXRkLCBOQU5EX0NUTF9DTFJDTEUpOworCQl3aGlsZSAoICEodGhpcy0+cmVhZF9ieXRlKG10ZCkgJiAweDQwKSk7CisJCXJldHVybjsKKworCWNhc2UgTkFORF9DTURfUkVBRDA6CisJCS8qIEJlZ2luIGNvbW1hbmQgbGF0Y2ggY3ljbGUgKi8KKwkJdGhpcy0+aHdjb250cm9sKG10ZCwgTkFORF9DVExfU0VUQ0xFKTsKKwkJLyogV3JpdGUgb3V0IHRoZSBzdGFydCByZWFkIGNvbW1hbmQgKi8KKwkJdGhpcy0+d3JpdGVfYnl0ZShtdGQsIE5BTkRfQ01EX1JFQURTVEFSVCk7CisJCS8qIEVuZCBjb21tYW5kIGxhdGNoIGN5Y2xlICovCisJCXRoaXMtPmh3Y29udHJvbChtdGQsIE5BTkRfQ1RMX0NMUkNMRSk7CisJCS8qIEZhbGwgdGhyb3VnaCBpbnRvIHJlYWR5IGNoZWNrICovCisKKwkvKiBUaGlzIGFwcGxpZXMgdG8gcmVhZCBjb21tYW5kcyAqLworCWRlZmF1bHQ6CisJCS8qCisJCSAqIElmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBidXN5IHBpbiwgd2UgYXBwbHkgdGhlIGdpdmVuCisJCSAqIGNvbW1hbmQgZGVsYXkKKwkJKi8KKwkJaWYgKCF0aGlzLT5kZXZfcmVhZHkpIHsKKwkJCXVkZWxheSAodGhpcy0+Y2hpcF9kZWxheSk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwkvKiBBcHBseSB0aGlzIHNob3J0IGRlbGF5IGFsd2F5cyB0byBlbnN1cmUgdGhhdCB3ZSBkbyB3YWl0IHRXQiBpbgorCSAqIGFueSBjYXNlIG9uIGFueSBtYWNoaW5lLiAqLworCW5kZWxheSAoMTAwKTsKKwkvKiB3YWl0IHVudGlsIGNvbW1hbmQgaXMgcHJvY2Vzc2VkICovCisJd2hpbGUgKCF0aGlzLT5kZXZfcmVhZHkobXRkKSk7Cit9CisKKy8qKgorICogbmFuZF9nZXRfZGV2aWNlIC0gW0dFTkVSSUNdIEdldCBjaGlwIGZvciBzZWxlY3RlZCBhY2Nlc3MKKyAqIEB0aGlzOgl0aGUgbmFuZCBjaGlwIGRlc2NyaXB0b3IKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAbmV3X3N0YXRlOgl0aGUgc3RhdGUgd2hpY2ggaXMgcmVxdWVzdGVkCisgKgorICogR2V0IHRoZSBkZXZpY2UgYW5kIGxvY2sgaXQgZm9yIGV4Y2x1c2l2ZSBhY2Nlc3MKKyAqLworLyogWFhYIFUtQk9PVCBYWFggKi8KKyNpZiAwCitzdGF0aWMgdm9pZCBuYW5kX2dldF9kZXZpY2UgKHN0cnVjdCBuYW5kX2NoaXAgKnRoaXMsIHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgbmV3X3N0YXRlKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKmFjdGl2ZSA9IHRoaXM7CisKKwlERUNMQVJFX1dBSVRRVUVVRSAod2FpdCwgY3VycmVudCk7CisKKwkvKgorCSAqIEdyYWIgdGhlIGxvY2sgYW5kIHNlZSBpZiB0aGUgZGV2aWNlIGlzIGF2YWlsYWJsZQorCSovCityZXRyeToKKwkvKiBIYXJkd2FyZSBjb250cm9sbGVyIHNoYXJlZCBhbW9uZyBpbmRlcGVuZGVuZCBkZXZpY2VzICovCisJaWYgKHRoaXMtPmNvbnRyb2xsZXIpIHsKKwkJc3Bpbl9sb2NrICgmdGhpcy0+Y29udHJvbGxlci0+bG9jayk7CisJCWlmICh0aGlzLT5jb250cm9sbGVyLT5hY3RpdmUpCisJCQlhY3RpdmUgPSB0aGlzLT5jb250cm9sbGVyLT5hY3RpdmU7CisJCWVsc2UKKwkJCXRoaXMtPmNvbnRyb2xsZXItPmFjdGl2ZSA9IHRoaXM7CisJCXNwaW5fdW5sb2NrICgmdGhpcy0+Y29udHJvbGxlci0+bG9jayk7CisJfQorCisJaWYgKGFjdGl2ZSA9PSB0aGlzKSB7CisJCXNwaW5fbG9jayAoJnRoaXMtPmNoaXBfbG9jayk7CisJCWlmICh0aGlzLT5zdGF0ZSA9PSBGTF9SRUFEWSkgeworCQkJdGhpcy0+c3RhdGUgPSBuZXdfc3RhdGU7CisJCQlzcGluX3VubG9jayAoJnRoaXMtPmNoaXBfbG9jayk7CisJCQlyZXR1cm47CisJCX0KKwl9CisJc2V0X2N1cnJlbnRfc3RhdGUgKFRBU0tfVU5JTlRFUlJVUFRJQkxFKTsKKwlhZGRfd2FpdF9xdWV1ZSAoJmFjdGl2ZS0+d3EsICZ3YWl0KTsKKwlzcGluX3VubG9jayAoJmFjdGl2ZS0+Y2hpcF9sb2NrKTsKKwlzY2hlZHVsZSAoKTsKKwlyZW1vdmVfd2FpdF9xdWV1ZSAoJmFjdGl2ZS0+d3EsICZ3YWl0KTsKKwlnb3RvIHJldHJ5OworfQorI2Vsc2UKK3N0YXRpYyB2b2lkIG5hbmRfZ2V0X2RldmljZSAoc3RydWN0IG5hbmRfY2hpcCAqdGhpcywgc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBuZXdfc3RhdGUpIHt9CisjZW5kaWYKKworLyoqCisgKiBuYW5kX3dhaXQgLSBbREVGQVVMVF0gIHdhaXQgdW50aWwgdGhlIGNvbW1hbmQgaXMgZG9uZQorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEB0aGlzOglOQU5EIGNoaXAgc3RydWN0dXJlCisgKiBAc3RhdGU6CXN0YXRlIHRvIHNlbGVjdCB0aGUgbWF4LiB0aW1lb3V0IHZhbHVlCisgKgorICogV2FpdCBmb3IgY29tbWFuZCBkb25lLiBUaGlzIGFwcGxpZXMgdG8gZXJhc2UgYW5kIHByb2dyYW0gb25seQorICogRXJhc2UgY2FuIHRha2UgdXAgdG8gNDAwbXMgYW5kIHByb2dyYW0gdXAgdG8gMjBtcyBhY2NvcmRpbmcgdG8KKyAqIGdlbmVyYWwgTkFORCBhbmQgU21hcnRNZWRpYSBzcGVjcworICoKKyovCisvKiBYWFggVS1CT09UIFhYWCAqLworI2lmIDAKK3N0YXRpYyBpbnQgbmFuZF93YWl0KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzLCBpbnQgc3RhdGUpCit7CisJdW5zaWduZWQgbG9uZwl0aW1lbyA9IGppZmZpZXM7CisJaW50CXN0YXR1czsKKworCWlmIChzdGF0ZSA9PSBGTF9FUkFTSU5HKQorCQkgdGltZW8gKz0gKEhaICogNDAwKSAvIDEwMDA7CisJZWxzZQorCQkgdGltZW8gKz0gKEhaICogMjApIC8gMTAwMDsKKworCS8qIEFwcGx5IHRoaXMgc2hvcnQgZGVsYXkgYWx3YXlzIHRvIGVuc3VyZSB0aGF0IHdlIGRvIHdhaXQgdFdCIGluCisJICogYW55IGNhc2Ugb24gYW55IG1hY2hpbmUuICovCisJbmRlbGF5ICgxMDApOworCisJaWYgKChzdGF0ZSA9PSBGTF9FUkFTSU5HKSAmJiAodGhpcy0+b3B0aW9ucyAmIE5BTkRfSVNfQU5EKSkKKwkJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9TVEFUVVNfTVVMVEksIC0xLCAtMSk7CisJZWxzZQorCQl0aGlzLT5jbWRmdW5jIChtdGQsIE5BTkRfQ01EX1NUQVRVUywgLTEsIC0xKTsKKworCXdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lbykpIHsKKwkJLyogQ2hlY2ssIGlmIHdlIHdlcmUgaW50ZXJydXB0ZWQgKi8KKwkJaWYgKHRoaXMtPnN0YXRlICE9IHN0YXRlKQorCQkJcmV0dXJuIDA7CisKKwkJaWYgKHRoaXMtPmRldl9yZWFkeSkgeworCQkJaWYgKHRoaXMtPmRldl9yZWFkeShtdGQpKQorCQkJCWJyZWFrOworCQl9IGVsc2UgeworCQkJaWYgKHRoaXMtPnJlYWRfYnl0ZShtdGQpICYgTkFORF9TVEFUVVNfUkVBRFkpCisJCQkJYnJlYWs7CisJCX0KKwkJeWllbGQgKCk7CisJfQorCXN0YXR1cyA9IChpbnQpIHRoaXMtPnJlYWRfYnl0ZShtdGQpOworCXJldHVybiBzdGF0dXM7CisKKwlyZXR1cm4gMDsKK30KKyNlbHNlCitzdGF0aWMgaW50IG5hbmRfd2FpdChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqdGhpcywgaW50IHN0YXRlKQoreworCXVuc2lnbmVkIGxvbmcJdGltZW87CisKKwlpZiAoc3RhdGUgPT0gRkxfRVJBU0lORykKKwkJdGltZW8gPSBDRkdfSFogKiA0MDA7CisJZWxzZQorCQl0aW1lbyA9IENGR19IWiAqIDIwOworCisJaWYgKChzdGF0ZSA9PSBGTF9FUkFTSU5HKSAmJiAodGhpcy0+b3B0aW9ucyAmIE5BTkRfSVNfQU5EKSkKKwkJdGhpcy0+Y21kZnVuYyhtdGQsIE5BTkRfQ01EX1NUQVRVU19NVUxUSSwgLTEsIC0xKTsKKwllbHNlCisJCXRoaXMtPmNtZGZ1bmMobXRkLCBOQU5EX0NNRF9TVEFUVVMsIC0xLCAtMSk7CisKKwlyZXNldF90aW1lcigpOworCisJd2hpbGUgKDEpIHsKKwkJaWYgKGdldF90aW1lcigwKSA+IHRpbWVvKSB7CisJCQlwcmludGYoIlRpbWVvdXQhIik7CisJCQlyZXR1cm4gMDsKKwkJCX0KKworCQlpZiAodGhpcy0+ZGV2X3JlYWR5KSB7CisJCQlpZiAodGhpcy0+ZGV2X3JlYWR5KG10ZCkpCisJCQkJYnJlYWs7CisJCX0gZWxzZSB7CisJCQlpZiAodGhpcy0+cmVhZF9ieXRlKG10ZCkgJiBOQU5EX1NUQVRVU19SRUFEWSkKKwkJCQlicmVhazsKKwkJfQorCX0KKyNpZmRlZiBQUENIQU1FTE9OX05BTkRfVElNRVJfSEFDSworCXJlc2V0X3RpbWVyKCk7CisJd2hpbGUgKGdldF90aW1lcigwKSA8IDEwKTsKKyNlbmRpZiAvKiAgUFBDSEFNRUxPTl9OQU5EX1RJTUVSX0hBQ0sgKi8KKworCXJldHVybiB0aGlzLT5yZWFkX2J5dGUobXRkKTsKK30KKyNlbmRpZgorCisvKioKKyAqIG5hbmRfd3JpdGVfcGFnZSAtIFtHRU5FUklDXSB3cml0ZSBvbmUgcGFnZQorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEB0aGlzOglOQU5EIGNoaXAgc3RydWN0dXJlCisgKiBAcGFnZTogCXN0YXJ0cGFnZSBpbnNpZGUgdGhlIGNoaXAsIG11c3QgYmUgY2FsbGVkIHdpdGggKHBhZ2UgJiB0aGlzLT5wYWdlbWFzaykKKyAqIEBvb2JfYnVmOglvdXQgb2YgYmFuZCBkYXRhIGJ1ZmZlcgorICogQG9vYnNlbDoJb3V0IG9mIGJhbmQgc2VsZWN0dGlvbiBzdHJ1Y3RyZQorICogQGNhY2hlZDoJMSA9IGVuYWJsZSBjYWNoZWQgcHJvZ3JhbW1pbmcgaWYgc3VwcG9ydGVkIGJ5IGNoaXAKKyAqCisgKiBOYW5kX3BhZ2VfcHJvZ3JhbSBmdW5jdGlvbiBpcyB1c2VkIGZvciB3cml0ZSBhbmQgd3JpdGV2ICEKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcHJvZ3JhbSBhIGZ1bGwgcGFnZSBvZiBkYXRhCisgKiBJZiB5b3UgY2FsbCBpdCB3aXRoIGEgbm9uIHBhZ2UgYWxpZ25lZCBidWZmZXIsIHlvdSdyZSBsb3N0IDopCisgKgorICogQ2FjaGVkIHByb2dyYW1taW5nIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LgorICovCitzdGF0aWMgaW50IG5hbmRfd3JpdGVfcGFnZSAoc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBuYW5kX2NoaXAgKnRoaXMsIGludCBwYWdlLAorCXVfY2hhciAqb29iX2J1ZiwgIHN0cnVjdCBuYW5kX29vYmluZm8gKm9vYnNlbCwgaW50IGNhY2hlZCkKK3sKKwlpbnQgCWksIHN0YXR1czsKKwl1X2NoYXIJZWNjX2NvZGVbMzJdOworCWludAllY2Ntb2RlID0gb29ic2VsLT51c2VlY2MgPyB0aGlzLT5lY2Ntb2RlIDogTkFORF9FQ0NfTk9ORTsKKwl1aW50ICAJKm9vYl9jb25maWcgPSBvb2JzZWwtPmVjY3BvczsKKwlpbnQJZGF0aWR4ID0gMCwgZWNjaWR4ID0gMCwgZWNjc3RlcHMgPSB0aGlzLT5lY2NzdGVwczsKKwlpbnQJZWNjYnl0ZXMgPSAwOworCisJLyogRklYTUU6IEVuYWJsZSBjYWNoZWQgcHJvZ3JhbW1pbmcgKi8KKwljYWNoZWQgPSAwOworCisJLyogU2VuZCBjb21tYW5kIHRvIGJlZ2luIGF1dG8gcGFnZSBwcm9ncmFtbWluZyAqLworCXRoaXMtPmNtZGZ1bmMgKG10ZCwgTkFORF9DTURfU0VRSU4sIDB4MDAsIHBhZ2UpOworCisJLyogV3JpdGUgb3V0IGNvbXBsZXRlIHBhZ2Ugb2YgZGF0YSwgdGFrZSBjYXJlIG9mIGVjY21vZGUgKi8KKwlzd2l0Y2ggKGVjY21vZGUpIHsKKwkvKiBObyBlY2MsIHdyaXRlIGFsbCAqLworCWNhc2UgTkFORF9FQ0NfTk9ORToKKwkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIldyaXRpbmcgZGF0YSB3aXRob3V0IEVDQyB0byBOQU5ELUZMQVNIIGlzIG5vdCByZWNvbW1lbmRlZFxuIik7CisJCXRoaXMtPndyaXRlX2J1ZihtdGQsIHRoaXMtPmRhdGFfcG9pLCBtdGQtPm9vYmJsb2NrKTsKKwkJYnJlYWs7CisKKwkvKiBTb2Z0d2FyZSBlY2MgMy8yNTYsIHdyaXRlIGFsbCAqLworCWNhc2UgTkFORF9FQ0NfU09GVDoKKwkJZm9yICg7IGVjY3N0ZXBzOyBlY2NzdGVwcy0tKSB7CisJCQl0aGlzLT5jYWxjdWxhdGVfZWNjKG10ZCwgJnRoaXMtPmRhdGFfcG9pW2RhdGlkeF0sIGVjY19jb2RlKTsKKwkJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyssIGVjY2lkeCsrKQorCQkJCW9vYl9idWZbb29iX2NvbmZpZ1tlY2NpZHhdXSA9IGVjY19jb2RlW2ldOworCQkJZGF0aWR4ICs9IHRoaXMtPmVjY3NpemU7CisJCX0KKwkJdGhpcy0+d3JpdGVfYnVmKG10ZCwgdGhpcy0+ZGF0YV9wb2ksIG10ZC0+b29iYmxvY2spOworCQlicmVhazsKKwlkZWZhdWx0OgorCQllY2NieXRlcyA9IHRoaXMtPmVjY2J5dGVzOworCQlmb3IgKDsgZWNjc3RlcHM7IGVjY3N0ZXBzLS0pIHsKKwkJCS8qIGVuYWJsZSBoYXJkd2FyZSBlY2MgbG9naWMgZm9yIHdyaXRlICovCisJCQl0aGlzLT5lbmFibGVfaHdlY2MobXRkLCBOQU5EX0VDQ19XUklURSk7CisJCQl0aGlzLT53cml0ZV9idWYobXRkLCAmdGhpcy0+ZGF0YV9wb2lbZGF0aWR4XSwgdGhpcy0+ZWNjc2l6ZSk7CisJCQl0aGlzLT5jYWxjdWxhdGVfZWNjKG10ZCwgJnRoaXMtPmRhdGFfcG9pW2RhdGlkeF0sIGVjY19jb2RlKTsKKwkJCWZvciAoaSA9IDA7IGkgPCBlY2NieXRlczsgaSsrLCBlY2NpZHgrKykKKwkJCQlvb2JfYnVmW29vYl9jb25maWdbZWNjaWR4XV0gPSBlY2NfY29kZVtpXTsKKwkJCS8qIElmIHRoZSBoYXJkd2FyZSBlY2MgcHJvdmlkZXMgc3luZHJvbWVzIHRoZW4KKwkJCSAqIHRoZSBlY2MgY29kZSBtdXN0IGJlIHdyaXR0ZW4gaW1taWRpYXRlbHkgYWZ0ZXIKKwkJCSAqIHRoZSBkYXRhIGJ5dGVzICh3b3JkcykgKi8KKwkJCWlmICh0aGlzLT5vcHRpb25zICYgTkFORF9IV0VDQ19TWU5EUk9NRSkKKwkJCQl0aGlzLT53cml0ZV9idWYobXRkLCBlY2NfY29kZSwgZWNjYnl0ZXMpOworCQkJZGF0aWR4ICs9IHRoaXMtPmVjY3NpemU7CisJCX0KKwkJYnJlYWs7CisJfQorCisJLyogV3JpdGUgb3V0IE9PQiBkYXRhICovCisJaWYgKHRoaXMtPm9wdGlvbnMgJiBOQU5EX0hXRUNDX1NZTkRST01FKQorCQl0aGlzLT53cml0ZV9idWYobXRkLCAmb29iX2J1Zltvb2JzZWwtPmVjY2J5dGVzXSwgbXRkLT5vb2JzaXplIC0gb29ic2VsLT5lY2NieXRlcyk7CisJZWxzZQorCQl0aGlzLT53cml0ZV9idWYobXRkLCBvb2JfYnVmLCBtdGQtPm9vYnNpemUpOworCisJLyogU2VuZCBjb21tYW5kIHRvIGFjdHVhbGx5IHByb2dyYW0gdGhlIGRhdGEgKi8KKwl0aGlzLT5jbWRmdW5jIChtdGQsIGNhY2hlZCA/IE5BTkRfQ01EX0NBQ0hFRFBST0cgOiBOQU5EX0NNRF9QQUdFUFJPRywgLTEsIC0xKTsKKworCWlmICghY2FjaGVkKSB7CisJCS8qIGNhbGwgd2FpdCByZWFkeSBmdW5jdGlvbiAqLworCQlzdGF0dXMgPSB0aGlzLT53YWl0ZnVuYyAobXRkLCB0aGlzLCBGTF9XUklUSU5HKTsKKwkJLyogU2VlIGlmIGRldmljZSB0aGlua3MgaXQgc3VjY2VlZGVkICovCisJCWlmIChzdGF0dXMgJiAweDAxKSB7CisJCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIiVzOiAiICJGYWlsZWQgd3JpdGUsIHBhZ2UgMHglMDh4LCAiLCBfX0ZVTkNUSU9OX18sIHBhZ2UpOworCQkJcmV0dXJuIC1FSU87CisJCX0KKwl9IGVsc2UgeworCQkvKiBGSVhNRTogSW1wbGVtZW50IGNhY2hlZCBwcm9ncmFtbWluZyAhICovCisJCS8qIHdhaXQgdW50aWwgY2FjaGUgaXMgcmVhZHkqLworCQkvKiBzdGF0dXMgPSB0aGlzLT53YWl0ZnVuYyAobXRkLCB0aGlzLCBGTF9DQUNIRURSUEcpOyAqLworCX0KKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR19NVERfTkFORF9WRVJJRllfV1JJVEUKKy8qKgorICogbmFuZF92ZXJpZnlfcGFnZXMgLSBbR0VORVJJQ10gdmVyaWZ5IHRoZSBjaGlwIGNvbnRlbnRzIGFmdGVyIGEgd3JpdGUKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAdGhpczoJTkFORCBjaGlwIHN0cnVjdHVyZQorICogQHBhZ2U6IAlzdGFydHBhZ2UgaW5zaWRlIHRoZSBjaGlwLCBtdXN0IGJlIGNhbGxlZCB3aXRoIChwYWdlICYgdGhpcy0+cGFnZW1hc2spCisgKiBAbnVtcGFnZXM6CW51bWJlciBvZiBwYWdlcyB0byB2ZXJpZnkKKyAqIEBvb2JfYnVmOglvdXQgb2YgYmFuZCBkYXRhIGJ1ZmZlcgorICogQG9vYnNlbDoJb3V0IG9mIGJhbmQgc2VsZWN0dGlvbiBzdHJ1Y3RyZQorICogQGNoaXBucjoJbnVtYmVyIG9mIHRoZSBjdXJyZW50IGNoaXAKKyAqIEBvb2Jtb2RlOgkxID0gZnVsbCBidWZmZXIgdmVyaWZ5LCAwID0gZWNjIG9ubHkKKyAqCisgKiBUaGUgTkFORCBkZXZpY2UgYXNzdW1lcyB0aGF0IGl0IGlzIGFsd2F5cyB3cml0aW5nIHRvIGEgY2xlYW5seSBlcmFzZWQgcGFnZS4KKyAqIEhlbmNlLCBpdCBwZXJmb3JtcyBpdHMgaW50ZXJuYWwgd3JpdGUgdmVyaWZpY2F0aW9uIG9ubHkgb24gYml0cyB0aGF0CisgKiB0cmFuc2l0aW9uZWQgZnJvbSAxIHRvIDAuIFRoZSBkZXZpY2UgZG9lcyBOT1QgdmVyaWZ5IHRoZSB3aG9sZSBwYWdlIG9uIGEKKyAqIGJ5dGUgYnkgYnl0ZSBiYXNpcy4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgcGFnZSB3YXMgbm90IGNvbXBsZXRlbHkgZXJhc2VkCisgKiBvciB0aGUgcGFnZSBpcyBiZWNvbWluZyB1bnVzYWJsZSBkdWUgdG8gd2Vhci4gVGhlIHJlYWQgd2l0aCBFQ0Mgd291bGQgY2F0Y2gKKyAqIHRoZSBlcnJvciBsYXRlciB3aGVuIHRoZSBFQ0MgcGFnZSBjaGVjayBmYWlscywgYnV0IHdlIHdvdWxkIHJhdGhlciBjYXRjaAorICogaXQgZWFybHkgaW4gdGhlIHBhZ2Ugd3JpdGUgc3RhZ2UuIEJldHRlciB0byB3cml0ZSBubyBkYXRhIHRoYW4gaW52YWxpZCBkYXRhLgorICovCitzdGF0aWMgaW50IG5hbmRfdmVyaWZ5X3BhZ2VzIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqdGhpcywgaW50IHBhZ2UsIGludCBudW1wYWdlcywKKwl1X2NoYXIgKm9vYl9idWYsIHN0cnVjdCBuYW5kX29vYmluZm8gKm9vYnNlbCwgaW50IGNoaXBuciwgaW50IG9vYm1vZGUpCit7CisJaW50IAlpLCBqLCBkYXRpZHggPSAwLCBvb2JvZnMgPSAwLCByZXMgPSAtRUlPOworCWludAllY2NzdGVwcyA9IHRoaXMtPmVjY3N0ZXBzOworCWludAlod2VjY2J5dGVzOworCXVfY2hhciAJb29iZGF0YVs2NF07CisKKwlod2VjY2J5dGVzID0gKHRoaXMtPm9wdGlvbnMgJiBOQU5EX0hXRUNDX1NZTkRST01FKSA/IChvb2JzZWwtPmVjY2J5dGVzIC8gZWNjc3RlcHMpIDogMDsKKworCS8qIFNlbmQgY29tbWFuZCB0byByZWFkIGJhY2sgdGhlIGZpcnN0IHBhZ2UgKi8KKwl0aGlzLT5jbWRmdW5jIChtdGQsIE5BTkRfQ01EX1JFQUQwLCAwLCBwYWdlKTsKKworCWZvcig7OykgeworCQlmb3IgKGogPSAwOyBqIDwgZWNjc3RlcHM7IGorKykgeworCQkJLyogTG9vcCB0aHJvdWdoIGFuZCB2ZXJpZnkgdGhlIGRhdGEgKi8KKwkJCWlmICh0aGlzLT52ZXJpZnlfYnVmKG10ZCwgJnRoaXMtPmRhdGFfcG9pW2RhdGlkeF0sIG10ZC0+ZWNjc2l6ZSkpIHsKKwkJCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIiVzOiAiICJGYWlsZWQgd3JpdGUgdmVyaWZ5LCBwYWdlIDB4JTA4eCAiLCBfX0ZVTkNUSU9OX18sIHBhZ2UpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJZGF0aWR4ICs9IG10ZC0+ZWNjc2l6ZTsKKwkJCS8qIEhhdmUgd2UgYSBodyBnZW5lcmF0b3IgbGF5b3V0ID8gKi8KKwkJCWlmICghaHdlY2NieXRlcykKKwkJCQljb250aW51ZTsKKwkJCWlmICh0aGlzLT52ZXJpZnlfYnVmKG10ZCwgJnRoaXMtPm9vYl9idWZbb29ib2ZzXSwgaHdlY2NieXRlcykpIHsKKwkJCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIiVzOiAiICJGYWlsZWQgd3JpdGUgdmVyaWZ5LCBwYWdlIDB4JTA4eCAiLCBfX0ZVTkNUSU9OX18sIHBhZ2UpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJb29ib2ZzICs9IGh3ZWNjYnl0ZXM7CisJCX0KKworCQkvKiBjaGVjaywgaWYgd2UgbXVzdCBjb21wYXJlIGFsbCBkYXRhIG9yIGlmIHdlIGp1c3QgaGF2ZSB0bworCQkgKiBjb21wYXJlIHRoZSBlY2MgYnl0ZXMKKwkJICovCisJCWlmIChvb2Jtb2RlKSB7CisJCQlpZiAodGhpcy0+dmVyaWZ5X2J1ZihtdGQsICZvb2JfYnVmW29vYm9mc10sIG10ZC0+b29ic2l6ZSAtIGh3ZWNjYnl0ZXMgKiBlY2NzdGVwcykpIHsKKwkJCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIiVzOiAiICJGYWlsZWQgd3JpdGUgdmVyaWZ5LCBwYWdlIDB4JTA4eCAiLCBfX0ZVTkNUSU9OX18sIHBhZ2UpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQl9IGVsc2UgeworCQkJLyogUmVhZCBhbHdheXMsIGVsc2UgYXV0b2luY3JlbWVudCBmYWlscyAqLworCQkJdGhpcy0+cmVhZF9idWYobXRkLCBvb2JkYXRhLCBtdGQtPm9vYnNpemUgLSBod2VjY2J5dGVzICogZWNjc3RlcHMpOworCisJCQlpZiAob29ic2VsLT51c2VlY2MgIT0gTVREX05BTkRFQ0NfT0ZGICYmICFod2VjY2J5dGVzKSB7CisJCQkJaW50IGVjY2NudCA9IG9vYnNlbC0+ZWNjYnl0ZXM7CisKKwkJCQlmb3IgKGkgPSAwOyBpIDwgZWNjY250OyBpKyspIHsKKwkJCQkJaW50IGlkeCA9IG9vYnNlbC0+ZWNjcG9zW2ldOworCQkJCQlpZiAob29iZGF0YVtpZHhdICE9IG9vYl9idWZbb29ib2ZzICsgaWR4XSApIHsKKwkJCQkJCURFQlVHIChNVERfREVCVUdfTEVWRUwwLAorCQkJCQkgICAgICAgCSIlczogRmFpbGVkIEVDQyB3cml0ZSAiCisJCQkJCQkidmVyaWZ5LCBwYWdlIDB4JTA4eCwgIiAiJTZpIGJ5dGVzIHdlcmUgc3VjY2VzZnVsXG4iLCBfX0ZVTkNUSU9OX18sIHBhZ2UsIGkpOworCQkJCQkJZ290byBvdXQ7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwkJb29ib2ZzICs9IG10ZC0+b29ic2l6ZSAtIGh3ZWNjYnl0ZXMgKiBlY2NzdGVwczsKKwkJcGFnZSsrOworCQludW1wYWdlcy0tOworCisJCS8qIEFwcGx5IGRlbGF5IG9yIHdhaXQgZm9yIHJlYWR5L2J1c3kgcGluCisJCSAqIERvIHRoaXMgYmVmb3JlIHRoZSBBVVRPSU5DUiBjaGVjaywgc28gbm8gcHJvYmxlbXMKKwkJICogYXJpc2UgaWYgYSBjaGlwIHdoaWNoIGRvZXMgYXV0byBpbmNyZW1lbnQKKwkJICogaXMgbWFya2VkIGFzIE5PQVVUT0lOQ1IgYnkgdGhlIGJvYXJkIGRyaXZlci4KKwkJICogRG8gdGhpcyBhbHNvIGJlZm9yZSByZXR1cm5pbmcsIHNvIHRoZSBjaGlwIGlzCisJCSAqIHJlYWR5IGZvciB0aGUgbmV4dCBjb21tYW5kLgorCQkqLworCQlpZiAoIXRoaXMtPmRldl9yZWFkeSkKKwkJCXVkZWxheSAodGhpcy0+Y2hpcF9kZWxheSk7CisJCWVsc2UKKwkJCXdoaWxlICghdGhpcy0+ZGV2X3JlYWR5KG10ZCkpOworCisJCS8qIEFsbCBkb25lLCByZXR1cm4gaGFwcHkgKi8KKwkJaWYgKCFudW1wYWdlcykKKwkJCXJldHVybiAwOworCisKKwkJLyogQ2hlY2ssIGlmIHRoZSBjaGlwIHN1cHBvcnRzIGF1dG8gcGFnZSBpbmNyZW1lbnQgKi8KKwkJaWYgKCFOQU5EX0NBTkFVVE9JTkNSKHRoaXMpKQorCQkJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9SRUFEMCwgMHgwMCwgcGFnZSk7CisJfQorCS8qCisJICogVGVybWluYXRlIHRoZSByZWFkIGNvbW1hbmQuIFdlIGNvbWUgaGVyZSBpbiBjYXNlIG9mIGFuIGVycm9yCisJICogU28gd2UgbXVzdCBpc3N1ZSBhIHJlc2V0IGNvbW1hbmQuCisJICovCitvdXQ6CisJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9SRVNFVCwgLTEsIC0xKTsKKwlyZXR1cm4gcmVzOworfQorI2VuZGlmCisKKy8qKgorICogbmFuZF9yZWFkIC0gW01URCBJbnRlcmZhY2VdIE1URCBjb21wYWJpbGl0eSBmdW5jdGlvbiBmb3IgbmFuZF9yZWFkX2VjYworICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBmcm9tOglvZmZzZXQgdG8gcmVhZCBmcm9tCisgKiBAbGVuOgludW1iZXIgb2YgYnl0ZXMgdG8gcmVhZAorICogQHJldGxlbjoJcG9pbnRlciB0byB2YXJpYWJsZSB0byBzdG9yZSB0aGUgbnVtYmVyIG9mIHJlYWQgYnl0ZXMKKyAqIEBidWY6CXRoZSBkYXRhYnVmZmVyIHRvIHB1dCBkYXRhCisgKgorICogVGhpcyBmdW5jdGlvbiBzaW1wbHkgY2FsbHMgbmFuZF9yZWFkX2VjYyB3aXRoIG9vYiBidWZmZXIgYW5kIG9vYnNlbCA9IE5VTEwKKyovCitzdGF0aWMgaW50IG5hbmRfcmVhZCAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLCBzaXplX3QgKiByZXRsZW4sIHVfY2hhciAqIGJ1ZikKK3sKKwlyZXR1cm4gbmFuZF9yZWFkX2VjYyAobXRkLCBmcm9tLCBsZW4sIHJldGxlbiwgYnVmLCBOVUxMLCBOVUxMKTsKK30KKworCisvKioKKyAqIG5hbmRfcmVhZF9lY2MgLSBbTVREIEludGVyZmFjZV0gUmVhZCBkYXRhIHdpdGggRUNDCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQGZyb206CW9mZnNldCB0byByZWFkIGZyb20KKyAqIEBsZW46CW51bWJlciBvZiBieXRlcyB0byByZWFkCisgKiBAcmV0bGVuOglwb2ludGVyIHRvIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBudW1iZXIgb2YgcmVhZCBieXRlcworICogQGJ1ZjoJdGhlIGRhdGFidWZmZXIgdG8gcHV0IGRhdGEKKyAqIEBvb2JfYnVmOglmaWxlc3lzdGVtIHN1cHBsaWVkIG9vYiBkYXRhIGJ1ZmZlcgorICogQG9vYnNlbDoJb29iIHNlbGVjdGlvbiBzdHJ1Y3R1cmUKKyAqCisgKiBOQU5EIHJlYWQgd2l0aCBFQ0MKKyAqLworc3RhdGljIGludCBuYW5kX3JlYWRfZWNjIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4sCisJCQkgIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmLCB1X2NoYXIgKiBvb2JfYnVmLCBzdHJ1Y3QgbmFuZF9vb2JpbmZvICpvb2JzZWwpCit7CisJaW50IGksIGosIGNvbCwgcmVhbHBhZ2UsIHBhZ2UsIGVuZCwgZWNjLCBjaGlwbnIsIHNuZGNtZCA9IDE7CisJaW50IHJlYWQgPSAwLCBvb2IgPSAwLCBlY2Nfc3RhdHVzID0gMCwgZWNjX2ZhaWxlZCA9IDA7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwl1X2NoYXIgKmRhdGFfcG9pLCAqb29iX2RhdGEgPSBvb2JfYnVmOworCXVfY2hhciBlY2NfY2FsY1szMl07CisJdV9jaGFyIGVjY19jb2RlWzMyXTsKKwlpbnQgZWNjbW9kZSwgZWNjc3RlcHM7CisJdW5zaWduZWQgKm9vYl9jb25maWc7CisJaW50CWRhdGlkeDsKKwlpbnQJYmxvY2tjaGVjayA9ICgxIDw8ICh0aGlzLT5waHlzX2VyYXNlX3NoaWZ0IC0gdGhpcy0+cGFnZV9zaGlmdCkpIC0gMTsKKwlpbnQJZWNjYnl0ZXM7CisJaW50CWNvbXBhcmVlY2MgPSAxOworCWludAlvb2JyZWFkbGVuOworCisKKwlERUJVRyAoTVREX0RFQlVHX0xFVkVMMywgIm5hbmRfcmVhZF9lY2M6IGZyb20gPSAweCUwOHgsIGxlbiA9ICVpXG4iLCAodW5zaWduZWQgaW50KSBmcm9tLCAoaW50KSBsZW4pOworCisJLyogRG8gbm90IGFsbG93IHJlYWRzIHBhc3QgZW5kIG9mIGRldmljZSAqLworCWlmICgoZnJvbSArIGxlbikgPiBtdGQtPnNpemUpIHsKKwkJREVCVUcgKE1URF9ERUJVR19MRVZFTDAsICJuYW5kX3JlYWRfZWNjOiBBdHRlbXB0IHJlYWQgYmV5b25kIGVuZCBvZiBkZXZpY2VcbiIpOworCQkqcmV0bGVuID0gMDsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogR3JhYiB0aGUgbG9jayBhbmQgc2VlIGlmIHRoZSBkZXZpY2UgaXMgYXZhaWxhYmxlICovCisJbmFuZF9nZXRfZGV2aWNlICh0aGlzLCBtdGQgLEZMX1JFQURJTkcpOworCisJLyogdXNlIHVzZXJzcGFjZSBzdXBwbGllZCBvb2JpbmZvLCBpZiB6ZXJvICovCisJaWYgKG9vYnNlbCA9PSBOVUxMKQorCQlvb2JzZWwgPSAmbXRkLT5vb2JpbmZvOworCisJLyogQXV0b3BsYWNlIG9mIG9vYiBkYXRhID8gVXNlIHRoZSBkZWZhdWx0IHBsYWNlbWVudCBzY2hlbWUgKi8KKwlpZiAob29ic2VsLT51c2VlY2MgPT0gTVREX05BTkRFQ0NfQVVUT1BMQUNFKQorCQlvb2JzZWwgPSB0aGlzLT5hdXRvb29iOworCisJZWNjbW9kZSA9IG9vYnNlbC0+dXNlZWNjID8gdGhpcy0+ZWNjbW9kZSA6IE5BTkRfRUNDX05PTkU7CisJb29iX2NvbmZpZyA9IG9vYnNlbC0+ZWNjcG9zOworCisJLyogU2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLworCWNoaXBuciA9IChpbnQpKGZyb20gPj4gdGhpcy0+Y2hpcF9zaGlmdCk7CisJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCBjaGlwbnIpOworCisJLyogRmlyc3Qgd2UgY2FsY3VsYXRlIHRoZSBzdGFydGluZyBwYWdlICovCisJcmVhbHBhZ2UgPSAoaW50KSAoZnJvbSA+PiB0aGlzLT5wYWdlX3NoaWZ0KTsKKwlwYWdlID0gcmVhbHBhZ2UgJiB0aGlzLT5wYWdlbWFzazsKKworCS8qIEdldCByYXcgc3RhcnRpbmcgY29sdW1uICovCisJY29sID0gZnJvbSAmIChtdGQtPm9vYmJsb2NrIC0gMSk7CisKKwllbmQgPSBtdGQtPm9vYmJsb2NrOworCWVjYyA9IHRoaXMtPmVjY3NpemU7CisJZWNjYnl0ZXMgPSB0aGlzLT5lY2NieXRlczsKKworCWlmICgoZWNjbW9kZSA9PSBOQU5EX0VDQ19OT05FKSB8fCAodGhpcy0+b3B0aW9ucyAmIE5BTkRfSFdFQ0NfU1lORFJPTUUpKQorCQljb21wYXJlZWNjID0gMDsKKworCW9vYnJlYWRsZW4gPSBtdGQtPm9vYnNpemU7CisJaWYgKHRoaXMtPm9wdGlvbnMgJiBOQU5EX0hXRUNDX1NZTkRST01FKQorCQlvb2JyZWFkbGVuIC09IG9vYnNlbC0+ZWNjYnl0ZXM7CisKKwkvKiBMb29wIHVudGlsIGFsbCBkYXRhIHJlYWQgKi8KKwl3aGlsZSAocmVhZCA8IGxlbikgeworCisJCWludCBhbGlnbmVkID0gKCFjb2wgJiYgKGxlbiAtIHJlYWQpID49IGVuZCk7CisJCS8qCisJCSAqIElmIHRoZSByZWFkIGlzIG5vdCBwYWdlIGFsaWduZWQsIHdlIGhhdmUgdG8gcmVhZCBpbnRvIGRhdGEgYnVmZmVyCisJCSAqIGR1ZSB0byBlY2MsIGVsc2Ugd2UgcmVhZCBpbnRvIHJldHVybiBidWZmZXIgZGlyZWN0CisJCSAqLworCQlpZiAoYWxpZ25lZCkKKwkJCWRhdGFfcG9pID0gJmJ1ZltyZWFkXTsKKwkJZWxzZQorCQkJZGF0YV9wb2kgPSB0aGlzLT5kYXRhX2J1ZjsKKworCQkvKiBDaGVjaywgaWYgd2UgaGF2ZSB0aGlzIHBhZ2UgaW4gdGhlIGJ1ZmZlcgorCQkgKgorCQkgKiBGSVhNRTogTWFrZSBpdCB3b3JrIHdoZW4gd2UgbXVzdCBwcm92aWRlIG9vYiBkYXRhIHRvbywKKwkJICogY2hlY2sgdGhlIHVzYWdlIG9mIGRhdGFfYnVmIG9vYiBmaWVsZAorCQkgKi8KKwkJaWYgKHJlYWxwYWdlID09IHRoaXMtPnBhZ2VidWYgJiYgIW9vYl9idWYpIHsKKwkJCS8qIGFsaWduZWQgcmVhZCA/ICovCisJCQlpZiAoYWxpZ25lZCkKKwkJCQltZW1jcHkgKGRhdGFfcG9pLCB0aGlzLT5kYXRhX2J1ZiwgZW5kKTsKKwkJCWdvdG8gcmVhZGRhdGE7CisJCX0KKworCQkvKiBDaGVjaywgaWYgd2UgbXVzdCBzZW5kIHRoZSByZWFkIGNvbW1hbmQgKi8KKwkJaWYgKHNuZGNtZCkgeworCQkJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9SRUFEMCwgMHgwMCwgcGFnZSk7CisJCQlzbmRjbWQgPSAwOworCQl9CisKKwkJLyogZ2V0IG9vYiBhcmVhLCBpZiB3ZSBoYXZlIG5vIG9vYiBidWZmZXIgZnJvbSBmcy1kcml2ZXIgKi8KKwkJaWYgKCFvb2JfYnVmIHx8IG9vYnNlbC0+dXNlZWNjID09IE1URF9OQU5ERUNDX0FVVE9QTEFDRSB8fAorCQkJb29ic2VsLT51c2VlY2MgPT0gTVREX05BTkRFQ0NfQVVUT1BMX1VTUikKKwkJCW9vYl9kYXRhID0gJnRoaXMtPmRhdGFfYnVmW2VuZF07CisKKwkJZWNjc3RlcHMgPSB0aGlzLT5lY2NzdGVwczsKKworCQlzd2l0Y2ggKGVjY21vZGUpIHsKKwkJY2FzZSBOQU5EX0VDQ19OT05FOiB7CS8qIE5vIEVDQywgUmVhZCBpbiBhIHBhZ2UgKi8KKy8qIFhYWCBVLUJPT1QgWFhYICovCisjaWYgMAorCQkJc3RhdGljIHVuc2lnbmVkIGxvbmcgbGFzdHdoaW5nZSA9IDA7CisJCQlpZiAoKGxhc3R3aGluZ2UgLyBIWikgIT0gKGppZmZpZXMgLyBIWikpIHsKKwkJCQlwcmludGsgKEtFUk5fV0FSTklORyAiUmVhZGluZyBkYXRhIGZyb20gTkFORCBGTEFTSCB3aXRob3V0IEVDQyBpcyBub3QgcmVjb21tZW5kZWRcbiIpOworCQkJCWxhc3R3aGluZ2UgPSBqaWZmaWVzOworCQkJfQorI2Vsc2UKKwkJCXB1dHMoIlJlYWRpbmcgZGF0YSBmcm9tIE5BTkQgRkxBU0ggd2l0aG91dCBFQ0MgaXMgbm90IHJlY29tbWVuZGVkXG4iKTsKKyNlbmRpZgorCQkJdGhpcy0+cmVhZF9idWYobXRkLCBkYXRhX3BvaSwgZW5kKTsKKwkJCWJyZWFrOworCQl9CisKKwkJY2FzZSBOQU5EX0VDQ19TT0ZUOgkvKiBTb2Z0d2FyZSBFQ0MgMy8yNTY6IFJlYWQgaW4gYSBwYWdlICsgb29iIGRhdGEgKi8KKwkJCXRoaXMtPnJlYWRfYnVmKG10ZCwgZGF0YV9wb2ksIGVuZCk7CisJCQlmb3IgKGkgPSAwLCBkYXRpZHggPSAwOyBlY2NzdGVwczsgZWNjc3RlcHMtLSwgaSs9MywgZGF0aWR4ICs9IGVjYykKKwkJCQl0aGlzLT5jYWxjdWxhdGVfZWNjKG10ZCwgJmRhdGFfcG9pW2RhdGlkeF0sICZlY2NfY2FsY1tpXSk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZm9yIChpID0gMCwgZGF0aWR4ID0gMDsgZWNjc3RlcHM7IGVjY3N0ZXBzLS0sIGkrPWVjY2J5dGVzLCBkYXRpZHggKz0gZWNjKSB7CisJCQkJdGhpcy0+ZW5hYmxlX2h3ZWNjKG10ZCwgTkFORF9FQ0NfUkVBRCk7CisJCQkJdGhpcy0+cmVhZF9idWYobXRkLCAmZGF0YV9wb2lbZGF0aWR4XSwgZWNjKTsKKworCQkJCS8qIEhXIGVjYyB3aXRoIHN5bmRyb21lIGNhbGN1bGF0aW9uIG11c3QgcmVhZCB0aGUKKwkJCQkgKiBzeW5kcm9tZSBmcm9tIGZsYXNoIGltbWlkaWF0ZWx5IGFmdGVyIHRoZSBkYXRhICovCisJCQkJaWYgKCFjb21wYXJlZWNjKSB7CisJCQkJCS8qIFNvbWUgaHcgZWNjIGdlbmVyYXRvcnMgbmVlZCB0byBrbm93IHdoZW4gdGhlCisJCQkJCSAqIHN5bmRyb21lIGlzIHJlYWQgZnJvbSBmbGFzaCAqLworCQkJCQl0aGlzLT5lbmFibGVfaHdlY2MobXRkLCBOQU5EX0VDQ19SRUFEU1lOKTsKKwkJCQkJdGhpcy0+cmVhZF9idWYobXRkLCAmb29iX2RhdGFbaV0sIGVjY2J5dGVzKTsKKwkJCQkJLyogV2UgY2FsYyBlcnJvciBjb3JyZWN0aW9uIGRpcmVjdGx5LCBpdCBjaGVja3MgdGhlIGh3CisJCQkJCSAqIGdlbmVyYXRvciBmb3IgYW4gZXJyb3IsIHJlYWRzIGJhY2sgdGhlIHN5bmRyb21lIGFuZAorCQkJCQkgKiBkb2VzIHRoZSBlcnJvciBjb3JyZWN0aW9uIG9uIHRoZSBmbHkgKi8KKwkJCQkJaWYgKHRoaXMtPmNvcnJlY3RfZGF0YShtdGQsICZkYXRhX3BvaVtkYXRpZHhdLCAmb29iX2RhdGFbaV0sICZlY2NfY29kZVtpXSkgPT0gLTEpIHsKKwkJCQkJCURFQlVHIChNVERfREVCVUdfTEVWRUwwLCAibmFuZF9yZWFkX2VjYzogIgorCQkJCQkJCSJGYWlsZWQgRUNDIHJlYWQsIHBhZ2UgMHglMDh4IG9uIGNoaXAgJWRcbiIsIHBhZ2UsIGNoaXBucik7CisJCQkJCQllY2NfZmFpbGVkKys7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQl0aGlzLT5jYWxjdWxhdGVfZWNjKG10ZCwgJmRhdGFfcG9pW2RhdGlkeF0sICZlY2NfY2FsY1tpXSk7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisJCX0KKworCQkvKiByZWFkIG9vYmRhdGEgKi8KKwkJdGhpcy0+cmVhZF9idWYobXRkLCAmb29iX2RhdGFbbXRkLT5vb2JzaXplIC0gb29icmVhZGxlbl0sIG9vYnJlYWRsZW4pOworCisJCS8qIFNraXAgRUNDIGNoZWNrLCBpZiBub3QgcmVxdWVzdGVkIChFQ0NfTk9ORSBvciBIV19FQ0Mgd2l0aCBzeW5kcm9tZXMpICovCisJCWlmICghY29tcGFyZWVjYykKKwkJCWdvdG8gcmVhZG9vYjsKKworCQkvKiBQaWNrIHRoZSBFQ0MgYnl0ZXMgb3V0IG9mIHRoZSBvb2IgZGF0YSAqLworCQlmb3IgKGogPSAwOyBqIDwgb29ic2VsLT5lY2NieXRlczsgaisrKQorCQkJZWNjX2NvZGVbal0gPSBvb2JfZGF0YVtvb2JfY29uZmlnW2pdXTsKKworCQkvKiBjb3JyZWN0IGRhdGEsIGlmIG5lY2NlY2FyeSAqLworCQlmb3IgKGkgPSAwLCBqID0gMCwgZGF0aWR4ID0gMDsgaSA8IHRoaXMtPmVjY3N0ZXBzOyBpKyssIGRhdGlkeCArPSBlY2MpIHsKKwkJCWVjY19zdGF0dXMgPSB0aGlzLT5jb3JyZWN0X2RhdGEobXRkLCAmZGF0YV9wb2lbZGF0aWR4XSwgJmVjY19jb2RlW2pdLCAmZWNjX2NhbGNbal0pOworCisJCQkvKiBHZXQgbmV4dCBjaHVuayBvZiBlY2MgYnl0ZXMgKi8KKwkJCWogKz0gZWNjYnl0ZXM7CisKKwkJCS8qIENoZWNrLCBpZiB3ZSBoYXZlIGEgZnMgc3VwcGxpZWQgb29iLWJ1ZmZlciwKKwkJCSAqIFRoaXMgaXMgdGhlIGxlZ2FjeSBtb2RlLiBVc2VkIGJ5IFlBRkZTMQorCQkJICogU2hvdWxkIGdvIGF3YXkgc29tZSBkYXkKKwkJCSAqLworCQkJaWYgKG9vYl9idWYgJiYgb29ic2VsLT51c2VlY2MgPT0gTVREX05BTkRFQ0NfUExBQ0UpIHsKKwkJCQlpbnQgKnAgPSAoaW50ICopKCZvb2JfZGF0YVttdGQtPm9vYnNpemVdKTsKKwkJCQlwW2ldID0gZWNjX3N0YXR1czsKKwkJCX0KKworCQkJaWYgKGVjY19zdGF0dXMgPT0gLTEpIHsKKwkJCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIm5hbmRfcmVhZF9lY2M6ICIgIkZhaWxlZCBFQ0MgcmVhZCwgcGFnZSAweCUwOHhcbiIsIHBhZ2UpOworCQkJCWVjY19mYWlsZWQrKzsKKwkJCX0KKwkJfQorCisJcmVhZG9vYjoKKwkJLyogY2hlY2ssIGlmIHdlIGhhdmUgYSBmcyBzdXBwbGllZCBvb2ItYnVmZmVyICovCisJCWlmIChvb2JfYnVmKSB7CisJCQkvKiB3aXRob3V0IGF1dG9wbGFjZS4gTGVnYWN5IG1vZGUgdXNlZCBieSBZQUZGUzEgKi8KKwkJCXN3aXRjaChvb2JzZWwtPnVzZWVjYykgeworCQkJY2FzZSBNVERfTkFOREVDQ19BVVRPUExBQ0U6CisJCQljYXNlIE1URF9OQU5ERUNDX0FVVE9QTF9VU1I6CisJCQkJLyogV2FsayB0aHJvdWdoIHRoZSBhdXRvcGxhY2UgY2h1bmtzICovCisJCQkJZm9yIChpID0gMCwgaiA9IDA7IGogPCBtdGQtPm9vYmF2YWlsOyBpKyspIHsKKwkJCQkJaW50IGZyb20gPSBvb2JzZWwtPm9vYmZyZWVbaV1bMF07CisJCQkJCWludCBudW0gPSBvb2JzZWwtPm9vYmZyZWVbaV1bMV07CisJCQkJCW1lbWNweSgmb29iX2J1Zltvb2JdLCAmb29iX2RhdGFbZnJvbV0sIG51bSk7CisJCQkJCWorPSBudW07CisJCQkJfQorCQkJCW9vYiArPSBtdGQtPm9vYmF2YWlsOworCQkJCWJyZWFrOworCQkJY2FzZSBNVERfTkFOREVDQ19QTEFDRToKKwkJCQkvKiBZQUZGUzEgbGVnYWN5IG1vZGUgKi8KKwkJCQlvb2JfZGF0YSArPSB0aGlzLT5lY2NzdGVwcyAqIHNpemVvZiAoaW50KTsKKwkJCWRlZmF1bHQ6CisJCQkJb29iX2RhdGEgKz0gbXRkLT5vb2JzaXplOworCQkJfQorCQl9CisJcmVhZGRhdGE6CisJCS8qIFBhcnRpYWwgcGFnZSByZWFkLCB0cmFuc2ZlciBkYXRhIGludG8gZnMgYnVmZmVyICovCisJCWlmICghYWxpZ25lZCkgeworCQkJZm9yIChqID0gY29sOyBqIDwgZW5kICYmIHJlYWQgPCBsZW47IGorKykKKwkJCQlidWZbcmVhZCsrXSA9IGRhdGFfcG9pW2pdOworCQkJdGhpcy0+cGFnZWJ1ZiA9IHJlYWxwYWdlOworCQl9IGVsc2UKKwkJCXJlYWQgKz0gbXRkLT5vb2JibG9jazsKKworCQkvKiBBcHBseSBkZWxheSBvciB3YWl0IGZvciByZWFkeS9idXN5IHBpbgorCQkgKiBEbyB0aGlzIGJlZm9yZSB0aGUgQVVUT0lOQ1IgY2hlY2ssIHNvIG5vIHByb2JsZW1zCisJCSAqIGFyaXNlIGlmIGEgY2hpcCB3aGljaCBkb2VzIGF1dG8gaW5jcmVtZW50CisJCSAqIGlzIG1hcmtlZCBhcyBOT0FVVE9JTkNSIGJ5IHRoZSBib2FyZCBkcml2ZXIuCisJCSovCisJCWlmICghdGhpcy0+ZGV2X3JlYWR5KQorCQkJdWRlbGF5ICh0aGlzLT5jaGlwX2RlbGF5KTsKKwkJZWxzZQorCQkJd2hpbGUgKCF0aGlzLT5kZXZfcmVhZHkobXRkKSk7CisKKwkJaWYgKHJlYWQgPT0gbGVuKQorCQkJYnJlYWs7CisKKwkJLyogRm9yIHN1YnNlcXVlbnQgcmVhZHMgYWxpZ24gdG8gcGFnZSBib3VuZGFyeS4gKi8KKwkJY29sID0gMDsKKwkJLyogSW5jcmVtZW50IHBhZ2UgYWRkcmVzcyAqLworCQlyZWFscGFnZSsrOworCisJCXBhZ2UgPSByZWFscGFnZSAmIHRoaXMtPnBhZ2VtYXNrOworCQkvKiBDaGVjaywgaWYgd2UgY3Jvc3MgYSBjaGlwIGJvdW5kYXJ5ICovCisJCWlmICghcGFnZSkgeworCQkJY2hpcG5yKys7CisJCQl0aGlzLT5zZWxlY3RfY2hpcChtdGQsIC0xKTsKKwkJCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgY2hpcG5yKTsKKwkJfQorCQkvKiBDaGVjaywgaWYgdGhlIGNoaXAgc3VwcG9ydHMgYXV0byBwYWdlIGluY3JlbWVudAorCQkgKiBvciBpZiB3ZSBoYXZlIGhpdCBhIGJsb2NrIGJvdW5kYXJ5LgorCQkqLworCQlpZiAoIU5BTkRfQ0FOQVVUT0lOQ1IodGhpcykgfHwgIShwYWdlICYgYmxvY2tjaGVjaykpCisJCQlzbmRjbWQgPSAxOworCX0KKworCS8qIERlc2VsZWN0IGFuZCB3YWtlIHVwIGFueW9uZSB3YWl0aW5nIG9uIHRoZSBkZXZpY2UgKi8KKwluYW5kX3JlbGVhc2VfZGV2aWNlKG10ZCk7CisKKwkvKgorCSAqIFJldHVybiBzdWNjZXNzLCBpZiBubyBFQ0MgZmFpbHVyZXMsIGVsc2UgLUVCQURNU0cKKwkgKiBmcyBkcml2ZXIgd2lsbCB0YWtlIGNhcmUgb2YgdGhhdCwgYmVjYXVzZQorCSAqIHJldGxlbiA9PSBkZXNpcmVkIGxlbiBhbmQgcmVzdWx0ID09IC1FQkFETVNHCisJICovCisJKnJldGxlbiA9IHJlYWQ7CisJcmV0dXJuIGVjY19mYWlsZWQgPyAtRUJBRE1TRyA6IDA7Cit9CisKKy8qKgorICogbmFuZF9yZWFkX29vYiAtIFtNVEQgSW50ZXJmYWNlXSBOQU5EIHJlYWQgb3V0LW9mLWJhbmQKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAZnJvbToJb2Zmc2V0IHRvIHJlYWQgZnJvbQorICogQGxlbjoJbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQKKyAqIEByZXRsZW46CXBvaW50ZXIgdG8gdmFyaWFibGUgdG8gc3RvcmUgdGhlIG51bWJlciBvZiByZWFkIGJ5dGVzCisgKiBAYnVmOgl0aGUgZGF0YWJ1ZmZlciB0byBwdXQgZGF0YQorICoKKyAqIE5BTkQgcmVhZCBvdXQtb2YtYmFuZCBkYXRhIGZyb20gdGhlIHNwYXJlIGFyZWEKKyAqLworc3RhdGljIGludCBuYW5kX3JlYWRfb29iIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4sIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmKQoreworCWludCBpLCBjb2wsIHBhZ2UsIGNoaXBucjsKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCWludAlibG9ja2NoZWNrID0gKDEgPDwgKHRoaXMtPnBoeXNfZXJhc2Vfc2hpZnQgLSB0aGlzLT5wYWdlX3NoaWZ0KSkgLSAxOworCisJREVCVUcgKE1URF9ERUJVR19MRVZFTDMsICJuYW5kX3JlYWRfb29iOiBmcm9tID0gMHglMDh4LCBsZW4gPSAlaVxuIiwgKHVuc2lnbmVkIGludCkgZnJvbSwgKGludCkgbGVuKTsKKworCS8qIFNoaWZ0IHRvIGdldCBwYWdlICovCisJcGFnZSA9IChpbnQpKGZyb20gPj4gdGhpcy0+cGFnZV9zaGlmdCk7CisJY2hpcG5yID0gKGludCkoZnJvbSA+PiB0aGlzLT5jaGlwX3NoaWZ0KTsKKworCS8qIE1hc2sgdG8gZ2V0IGNvbHVtbiAqLworCWNvbCA9IGZyb20gJiAobXRkLT5vb2JzaXplIC0gMSk7CisKKwkvKiBJbml0aWFsaXplIHJldHVybiBsZW5ndGggdmFsdWUgKi8KKwkqcmV0bGVuID0gMDsKKworCS8qIERvIG5vdCBhbGxvdyByZWFkcyBwYXN0IGVuZCBvZiBkZXZpY2UgKi8KKwlpZiAoKGZyb20gKyBsZW4pID4gbXRkLT5zaXplKSB7CisJCURFQlVHIChNVERfREVCVUdfTEVWRUwwLCAibmFuZF9yZWFkX29vYjogQXR0ZW1wdCByZWFkIGJleW9uZCBlbmQgb2YgZGV2aWNlXG4iKTsKKwkJKnJldGxlbiA9IDA7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIEdyYWIgdGhlIGxvY2sgYW5kIHNlZSBpZiB0aGUgZGV2aWNlIGlzIGF2YWlsYWJsZSAqLworCW5hbmRfZ2V0X2RldmljZSAodGhpcywgbXRkICwgRkxfUkVBRElORyk7CisKKwkvKiBTZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCBjaGlwbnIpOworCisJLyogU2VuZCB0aGUgcmVhZCBjb21tYW5kICovCisJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9SRUFET09CLCBjb2wsIHBhZ2UgJiB0aGlzLT5wYWdlbWFzayk7CisJLyoKKwkgKiBSZWFkIHRoZSBkYXRhLCBpZiB3ZSByZWFkIG1vcmUgdGhhbiBvbmUgcGFnZQorCSAqIG9vYiBkYXRhLCBsZXQgdGhlIGRldmljZSB0cmFuc2ZlciB0aGUgZGF0YSAhCisJICovCisJaSA9IDA7CisJd2hpbGUgKGkgPCBsZW4pIHsKKwkJaW50IHRoaXNsZW4gPSBtdGQtPm9vYnNpemUgLSBjb2w7CisJCXRoaXNsZW4gPSBtaW5fdChpbnQsIHRoaXNsZW4sIGxlbik7CisJCXRoaXMtPnJlYWRfYnVmKG10ZCwgJmJ1ZltpXSwgdGhpc2xlbik7CisJCWkgKz0gdGhpc2xlbjsKKworCQkvKiBBcHBseSBkZWxheSBvciB3YWl0IGZvciByZWFkeS9idXN5IHBpbgorCQkgKiBEbyB0aGlzIGJlZm9yZSB0aGUgQVVUT0lOQ1IgY2hlY2ssIHNvIG5vIHByb2JsZW1zCisJCSAqIGFyaXNlIGlmIGEgY2hpcCB3aGljaCBkb2VzIGF1dG8gaW5jcmVtZW50CisJCSAqIGlzIG1hcmtlZCBhcyBOT0FVVE9JTkNSIGJ5IHRoZSBib2FyZCBkcml2ZXIuCisJCSovCisJCWlmICghdGhpcy0+ZGV2X3JlYWR5KQorCQkJdWRlbGF5ICh0aGlzLT5jaGlwX2RlbGF5KTsKKwkJZWxzZQorCQkJd2hpbGUgKCF0aGlzLT5kZXZfcmVhZHkobXRkKSk7CisKKwkJLyogUmVhZCBtb3JlID8gKi8KKwkJaWYgKGkgPCBsZW4pIHsKKwkJCXBhZ2UrKzsKKwkJCWNvbCA9IDA7CisKKwkJCS8qIENoZWNrLCBpZiB3ZSBjcm9zcyBhIGNoaXAgYm91bmRhcnkgKi8KKwkJCWlmICghKHBhZ2UgJiB0aGlzLT5wYWdlbWFzaykpIHsKKwkJCQljaGlwbnIrKzsKKwkJCQl0aGlzLT5zZWxlY3RfY2hpcChtdGQsIC0xKTsKKwkJCQl0aGlzLT5zZWxlY3RfY2hpcChtdGQsIGNoaXBucik7CisJCQl9CisKKwkJCS8qIENoZWNrLCBpZiB0aGUgY2hpcCBzdXBwb3J0cyBhdXRvIHBhZ2UgaW5jcmVtZW50CisJCQkgKiBvciBpZiB3ZSBoYXZlIGhpdCBhIGJsb2NrIGJvdW5kYXJ5LgorCQkJKi8KKwkJCWlmICghTkFORF9DQU5BVVRPSU5DUih0aGlzKSB8fCAhKHBhZ2UgJiBibG9ja2NoZWNrKSkgeworCQkJCS8qIEZvciBzdWJzZXF1ZW50IHBhZ2UgcmVhZHMgc2V0IG9mZnNldCB0byAwICovCisJCQkJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9SRUFET09CLCAweDAsIHBhZ2UgJiB0aGlzLT5wYWdlbWFzayk7CisJCQl9CisJCX0KKwl9CisKKwkvKiBEZXNlbGVjdCBhbmQgd2FrZSB1cCBhbnlvbmUgd2FpdGluZyBvbiB0aGUgZGV2aWNlICovCisJbmFuZF9yZWxlYXNlX2RldmljZShtdGQpOworCisJLyogUmV0dXJuIGhhcHB5ICovCisJKnJldGxlbiA9IGxlbjsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBuYW5kX3JlYWRfcmF3IC0gW0dFTkVSSUNdIFJlYWQgcmF3IGRhdGEgaW5jbHVkaW5nIG9vYiBpbnRvIGJ1ZmZlcgorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBidWY6CXRlbXBvcmFyeSBidWZmZXIKKyAqIEBmcm9tOglvZmZzZXQgdG8gcmVhZCBmcm9tCisgKiBAbGVuOgludW1iZXIgb2YgYnl0ZXMgdG8gcmVhZAorICogQG9vYmxlbjoJbnVtYmVyIG9mIG9vYiBkYXRhIGJ5dGVzIHRvIHJlYWQKKyAqCisgKiBSZWFkIHJhdyBkYXRhIGluY2x1ZGluZyBvb2IgaW50byBidWZmZXIKKyAqLworaW50IG5hbmRfcmVhZF9yYXcgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1aW50OF90ICpidWYsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLCBzaXplX3Qgb29ibGVuKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJaW50IHBhZ2UgPSAoaW50KSAoZnJvbSA+PiB0aGlzLT5wYWdlX3NoaWZ0KTsKKwlpbnQgY2hpcCA9IChpbnQpIChmcm9tID4+IHRoaXMtPmNoaXBfc2hpZnQpOworCWludCBzbmRjbWQgPSAxOworCWludCBjbnQgPSAwOworCWludCBwYWdlc2l6ZSA9IG10ZC0+b29iYmxvY2sgKyBtdGQtPm9vYnNpemU7CisJaW50CWJsb2NrY2hlY2sgPSAoMSA8PCAodGhpcy0+cGh5c19lcmFzZV9zaGlmdCAtIHRoaXMtPnBhZ2Vfc2hpZnQpKSAtIDE7CisKKwkvKiBEbyBub3QgYWxsb3cgcmVhZHMgcGFzdCBlbmQgb2YgZGV2aWNlICovCisJaWYgKChmcm9tICsgbGVuKSA+IG10ZC0+c2l6ZSkgeworCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIm5hbmRfcmVhZF9yYXc6IEF0dGVtcHQgcmVhZCBiZXlvbmQgZW5kIG9mIGRldmljZVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIEdyYWIgdGhlIGxvY2sgYW5kIHNlZSBpZiB0aGUgZGV2aWNlIGlzIGF2YWlsYWJsZSAqLworCW5hbmRfZ2V0X2RldmljZSAodGhpcywgbXRkICwgRkxfUkVBRElORyk7CisKKwl0aGlzLT5zZWxlY3RfY2hpcCAobXRkLCBjaGlwKTsKKworCS8qIEFkZCByZXF1ZXN0ZWQgb29iIGxlbmd0aCAqLworCWxlbiArPSBvb2JsZW47CisKKwl3aGlsZSAobGVuKSB7CisJCWlmIChzbmRjbWQpCisJCQl0aGlzLT5jbWRmdW5jIChtdGQsIE5BTkRfQ01EX1JFQUQwLCAwLCBwYWdlICYgdGhpcy0+cGFnZW1hc2spOworCQlzbmRjbWQgPSAwOworCisJCXRoaXMtPnJlYWRfYnVmIChtdGQsICZidWZbY250XSwgcGFnZXNpemUpOworCisJCWxlbiAtPSBwYWdlc2l6ZTsKKwkJY250ICs9IHBhZ2VzaXplOworCQlwYWdlKys7CisKKwkJaWYgKCF0aGlzLT5kZXZfcmVhZHkpCisJCQl1ZGVsYXkgKHRoaXMtPmNoaXBfZGVsYXkpOworCQllbHNlCisJCQl3aGlsZSAoIXRoaXMtPmRldl9yZWFkeShtdGQpKTsKKworCQkvKiBDaGVjaywgaWYgdGhlIGNoaXAgc3VwcG9ydHMgYXV0byBwYWdlIGluY3JlbWVudCAqLworCQlpZiAoIU5BTkRfQ0FOQVVUT0lOQ1IodGhpcykgfHwgIShwYWdlICYgYmxvY2tjaGVjaykpCisJCQlzbmRjbWQgPSAxOworCX0KKworCS8qIERlc2VsZWN0IGFuZCB3YWtlIHVwIGFueW9uZSB3YWl0aW5nIG9uIHRoZSBkZXZpY2UgKi8KKwluYW5kX3JlbGVhc2VfZGV2aWNlKG10ZCk7CisJcmV0dXJuIDA7Cit9CisKKworLyoqCisgKiBuYW5kX3ByZXBhcmVfb29iYnVmIC0gW0dFTkVSSUNdIFByZXBhcmUgdGhlIG91dCBvZiBiYW5kIGJ1ZmZlcgorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBmc2J1ZjoJYnVmZmVyIGdpdmVuIGJ5IGZzIGRyaXZlcgorICogQG9vYnNlbDoJb3V0IG9mIGJhbmQgc2VsZWN0aW9uIHN0cnVjdHJlCisgKiBAYXV0b3BsYWNlOgkxID0gcGxhY2UgZ2l2ZW4gYnVmZmVyIGludG8gdGhlIG9vYiBieXRlcworICogQG51bXBhZ2VzOgludW1iZXIgb2YgcGFnZXMgdG8gcHJlcGFyZQorICoKKyAqIFJldHVybjoKKyAqIDEuIEZpbGVzeXN0ZW0gYnVmZmVyIGF2YWlsYWJsZSBhbmQgYXV0b3BsYWNlbWVudCBpcyBvZmYsCisgKiAgICByZXR1cm4gZmlsZXN5c3RlbSBidWZmZXIKKyAqIDIuIE5vIGZpbGVzeXN0ZW0gYnVmZmVyIG9yIGF1dG9wbGFjZSBpcyBvZmYsIHJldHVybiBpbnRlcm5hbAorICogICAgYnVmZmVyCisgKiAzLiBGaWxlc3lzdGVtIGJ1ZmZlciBpcyBnaXZlbiBhbmQgYXV0b3BsYWNlIHNlbGVjdGVkCisgKiAgICBwdXQgZGF0YSBmcm9tIGZzIGJ1ZmZlciBpbnRvIGludGVybmFsIGJ1ZmZlciBhbmQKKyAqICAgIHJldHJ1biBpbnRlcm5hbCBidWZmZXIKKyAqCisgKiBOb3RlOiBUaGUgaW50ZXJuYWwgYnVmZmVyIGlzIGZpbGxlZCB3aXRoIDB4ZmYuIFRoaXMgbXVzdAorICogYmUgZG9uZSBvbmx5IG9uY2UsIHdoZW4gbm8gYXV0b3BsYWNlbWVudCBoYXBwZW5zCisgKiBBdXRvcGxhY2VtZW50IHNldHMgdGhlIGJ1ZmZlciBkaXJ0eSBmbGFnLCB3aGljaAorICogZm9yY2VzIHRoZSAweGZmIGZpbGwgYmVmb3JlIHVzaW5nIHRoZSBidWZmZXIgYWdhaW4uCisgKgorKi8KK3N0YXRpYyB1X2NoYXIgKiBuYW5kX3ByZXBhcmVfb29iYnVmIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyICpmc2J1Ziwgc3RydWN0IG5hbmRfb29iaW5mbyAqb29ic2VsLAorCQlpbnQgYXV0b3BsYWNlLCBpbnQgbnVtcGFnZXMpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlpbnQgaSwgbGVuLCBvZnM7CisKKwkvKiBaZXJvIGNvcHkgZnMgc3VwcGxpZWQgYnVmZmVyICovCisJaWYgKGZzYnVmICYmICFhdXRvcGxhY2UpCisJCXJldHVybiBmc2J1ZjsKKworCS8qIENoZWNrLCBpZiB0aGUgYnVmZmVyIG11c3QgYmUgZmlsbGVkIHdpdGggZmYgYWdhaW4gKi8KKwlpZiAodGhpcy0+b29iZGlydHkpIHsKKwkJbWVtc2V0ICh0aGlzLT5vb2JfYnVmLCAweGZmLAorCQkJbXRkLT5vb2JzaXplIDw8ICh0aGlzLT5waHlzX2VyYXNlX3NoaWZ0IC0gdGhpcy0+cGFnZV9zaGlmdCkpOworCQl0aGlzLT5vb2JkaXJ0eSA9IDA7CisJfQorCisJLyogSWYgd2UgaGF2ZSBubyBhdXRvcGxhY2VtZW50IG9yIG5vIGZzIGJ1ZmZlciB1c2UgdGhlIGludGVybmFsIG9uZSAqLworCWlmICghYXV0b3BsYWNlIHx8ICFmc2J1ZikKKwkJcmV0dXJuIHRoaXMtPm9vYl9idWY7CisKKwkvKiBXYWxrIHRocm91Z2ggdGhlIHBhZ2VzIGFuZCBwbGFjZSB0aGUgZGF0YSAqLworCXRoaXMtPm9vYmRpcnR5ID0gMTsKKwlvZnMgPSAwOworCXdoaWxlIChudW1wYWdlcy0tKSB7CisJCWZvciAoaSA9IDAsIGxlbiA9IDA7IGxlbiA8IG10ZC0+b29iYXZhaWw7IGkrKykgeworCQkJaW50IHRvID0gb2ZzICsgb29ic2VsLT5vb2JmcmVlW2ldWzBdOworCQkJaW50IG51bSA9IG9vYnNlbC0+b29iZnJlZVtpXVsxXTsKKwkJCW1lbWNweSAoJnRoaXMtPm9vYl9idWZbdG9dLCBmc2J1ZiwgbnVtKTsKKwkJCWxlbiArPSBudW07CisJCQlmc2J1ZiArPSBudW07CisJCX0KKwkJb2ZzICs9IG10ZC0+b29iYXZhaWw7CisJfQorCXJldHVybiB0aGlzLT5vb2JfYnVmOworfQorCisjZGVmaW5lIE5PVEFMSUdORUQoeCkgKHggJiAobXRkLT5vb2JibG9jay0xKSkgIT0gMAorCisvKioKKyAqIG5hbmRfd3JpdGUgLSBbTVREIEludGVyZmFjZV0gY29tcGFiaWxpdHkgZnVuY3Rpb24gZm9yIG5hbmRfd3JpdGVfZWNjCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQHRvOgkJb2Zmc2V0IHRvIHdyaXRlIHRvCisgKiBAbGVuOgludW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUKKyAqIEByZXRsZW46CXBvaW50ZXIgdG8gdmFyaWFibGUgdG8gc3RvcmUgdGhlIG51bWJlciBvZiB3cml0dGVuIGJ5dGVzCisgKiBAYnVmOgl0aGUgZGF0YSB0byB3cml0ZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gc2ltcGx5IGNhbGxzIG5hbmRfd3JpdGVfZWNjIHdpdGggb29iIGJ1ZmZlciBhbmQgb29ic2VsID0gTlVMTAorICoKKyovCitzdGF0aWMgaW50IG5hbmRfd3JpdGUgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgdG8sIHNpemVfdCBsZW4sIHNpemVfdCAqIHJldGxlbiwgY29uc3QgdV9jaGFyICogYnVmKQoreworCXJldHVybiAobmFuZF93cml0ZV9lY2MgKG10ZCwgdG8sIGxlbiwgcmV0bGVuLCBidWYsIE5VTEwsIE5VTEwpKTsKK30KKworLyoqCisgKiBuYW5kX3dyaXRlX2VjYyAtIFtNVEQgSW50ZXJmYWNlXSBOQU5EIHdyaXRlIHdpdGggRUNDCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQHRvOgkJb2Zmc2V0IHRvIHdyaXRlIHRvCisgKiBAbGVuOgludW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUKKyAqIEByZXRsZW46CXBvaW50ZXIgdG8gdmFyaWFibGUgdG8gc3RvcmUgdGhlIG51bWJlciBvZiB3cml0dGVuIGJ5dGVzCisgKiBAYnVmOgl0aGUgZGF0YSB0byB3cml0ZQorICogQGVjY2J1ZjoJZmlsZXN5c3RlbSBzdXBwbGllZCBvb2IgZGF0YSBidWZmZXIKKyAqIEBvb2JzZWw6CW9vYiBzZWxlY3Rpb24gc3RydWN0dXJlCisgKgorICogTkFORCB3cml0ZSB3aXRoIEVDQworICovCitzdGF0aWMgaW50IG5hbmRfd3JpdGVfZWNjIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IHRvLCBzaXplX3QgbGVuLAorCQkJICAgc2l6ZV90ICogcmV0bGVuLCBjb25zdCB1X2NoYXIgKiBidWYsIHVfY2hhciAqIGVjY2J1Ziwgc3RydWN0IG5hbmRfb29iaW5mbyAqb29ic2VsKQoreworCWludCBzdGFydHBhZ2UsIHBhZ2UsIHJldCA9IC1FSU8sIG9vYiA9IDAsIHdyaXR0ZW4gPSAwLCBjaGlwbnI7CisJaW50IGF1dG9wbGFjZSA9IDAsIG51bXBhZ2VzLCB0b3RhbHBhZ2VzOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJdV9jaGFyICpvb2JidWYsICpidWZzdGFydDsKKwlpbnQJcHBibG9jayA9ICgxIDw8ICh0aGlzLT5waHlzX2VyYXNlX3NoaWZ0IC0gdGhpcy0+cGFnZV9zaGlmdCkpOworCisJREVCVUcgKE1URF9ERUJVR19MRVZFTDMsICJuYW5kX3dyaXRlX2VjYzogdG8gPSAweCUwOHgsIGxlbiA9ICVpXG4iLCAodW5zaWduZWQgaW50KSB0bywgKGludCkgbGVuKTsKKworCS8qIEluaXRpYWxpemUgcmV0bGVuLCBpbiBjYXNlIG9mIGVhcmx5IGV4aXQgKi8KKwkqcmV0bGVuID0gMDsKKworCS8qIERvIG5vdCBhbGxvdyB3cml0ZSBwYXN0IGVuZCBvZiBkZXZpY2UgKi8KKwlpZiAoKHRvICsgbGVuKSA+IG10ZC0+c2l6ZSkgeworCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIm5hbmRfd3JpdGVfZWNjOiBBdHRlbXB0IHRvIHdyaXRlIHBhc3QgZW5kIG9mIHBhZ2VcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiByZWplY3Qgd3JpdGVzLCB3aGljaCBhcmUgbm90IHBhZ2UgYWxpZ25lZCAqLworCWlmIChOT1RBTElHTkVEICh0bykgfHwgTk9UQUxJR05FRChsZW4pKSB7CisJCXByaW50ayAoS0VSTl9OT1RJQ0UgIm5hbmRfd3JpdGVfZWNjOiBBdHRlbXB0IHRvIHdyaXRlIG5vdCBwYWdlIGFsaWduZWQgZGF0YVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIEdyYWIgdGhlIGxvY2sgYW5kIHNlZSBpZiB0aGUgZGV2aWNlIGlzIGF2YWlsYWJsZSAqLworCW5hbmRfZ2V0X2RldmljZSAodGhpcywgbXRkLCBGTF9XUklUSU5HKTsKKworCS8qIENhbGN1bGF0ZSBjaGlwbnIgKi8KKwljaGlwbnIgPSAoaW50KSh0byA+PiB0aGlzLT5jaGlwX3NoaWZ0KTsKKwkvKiBTZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCBjaGlwbnIpOworCisJLyogQ2hlY2ssIGlmIGl0IGlzIHdyaXRlIHByb3RlY3RlZCAqLworCWlmIChuYW5kX2NoZWNrX3dwKG10ZCkpCisJCWdvdG8gb3V0OworCisJLyogaWYgb29ic2VsIGlzIE5VTEwsIHVzZSBjaGlwIGRlZmF1bHRzICovCisJaWYgKG9vYnNlbCA9PSBOVUxMKQorCQlvb2JzZWwgPSAmbXRkLT5vb2JpbmZvOworCisJLyogQXV0b3BsYWNlIG9mIG9vYiBkYXRhID8gVXNlIHRoZSBkZWZhdWx0IHBsYWNlbWVudCBzY2hlbWUgKi8KKwlpZiAob29ic2VsLT51c2VlY2MgPT0gTVREX05BTkRFQ0NfQVVUT1BMQUNFKSB7CisJCW9vYnNlbCA9IHRoaXMtPmF1dG9vb2I7CisJCWF1dG9wbGFjZSA9IDE7CisJfQorCWlmIChvb2JzZWwtPnVzZWVjYyA9PSBNVERfTkFOREVDQ19BVVRPUExfVVNSKQorCQlhdXRvcGxhY2UgPSAxOworCisJLyogU2V0dXAgdmFyaWFibGVzIGFuZCBvb2IgYnVmZmVyICovCisJdG90YWxwYWdlcyA9IGxlbiA+PiB0aGlzLT5wYWdlX3NoaWZ0OworCXBhZ2UgPSAoaW50KSAodG8gPj4gdGhpcy0+cGFnZV9zaGlmdCk7CisJLyogSW52YWxpZGF0ZSB0aGUgcGFnZSBjYWNoZSwgaWYgd2Ugd3JpdGUgdG8gdGhlIGNhY2hlZCBwYWdlICovCisJaWYgKHBhZ2UgPD0gdGhpcy0+cGFnZWJ1ZiAmJiB0aGlzLT5wYWdlYnVmIDwgKHBhZ2UgKyB0b3RhbHBhZ2VzKSkKKwkJdGhpcy0+cGFnZWJ1ZiA9IC0xOworCisJLyogU2V0IGl0IHJlbGF0aXZlIHRvIGNoaXAgKi8KKwlwYWdlICY9IHRoaXMtPnBhZ2VtYXNrOworCXN0YXJ0cGFnZSA9IHBhZ2U7CisJLyogQ2FsYyBudW1iZXIgb2YgcGFnZXMgd2UgY2FuIHdyaXRlIGluIG9uZSBnbyAqLworCW51bXBhZ2VzID0gbWluIChwcGJsb2NrIC0gKHN0YXJ0cGFnZSAgJiAocHBibG9jayAtIDEpKSwgdG90YWxwYWdlcyk7CisJb29iYnVmID0gbmFuZF9wcmVwYXJlX29vYmJ1ZiAobXRkLCBlY2NidWYsIG9vYnNlbCwgYXV0b3BsYWNlLCBudW1wYWdlcyk7CisJYnVmc3RhcnQgPSAodV9jaGFyICopYnVmOworCisJLyogTG9vcCB1bnRpbCBhbGwgZGF0YSBpcyB3cml0dGVuICovCisJd2hpbGUgKHdyaXR0ZW4gPCBsZW4pIHsKKworCQl0aGlzLT5kYXRhX3BvaSA9ICh1X2NoYXIqKSAmYnVmW3dyaXR0ZW5dOworCQkvKiBXcml0ZSBvbmUgcGFnZS4gSWYgdGhpcyBpcyB0aGUgbGFzdCBwYWdlIHRvIHdyaXRlCisJCSAqIG9yIHRoZSBsYXN0IHBhZ2UgaW4gdGhpcyBibG9jaywgdGhlbiB1c2UgdGhlCisJCSAqIHJlYWwgcGFnZXByb2dyYW0gY29tbWFuZCwgZWxzZSBzZWxlY3QgY2FjaGVkIHByb2dyYW1taW5nCisJCSAqIGlmIHN1cHBvcnRlZCBieSB0aGUgY2hpcC4KKwkJICovCisJCXJldCA9IG5hbmRfd3JpdGVfcGFnZSAobXRkLCB0aGlzLCBwYWdlLCAmb29iYnVmW29vYl0sIG9vYnNlbCwgKC0tbnVtcGFnZXMgPiAwKSk7CisJCWlmIChyZXQpIHsKKwkJCURFQlVHIChNVERfREVCVUdfTEVWRUwwLCAibmFuZF93cml0ZV9lY2M6IHdyaXRlX3BhZ2UgZmFpbGVkICVkXG4iLCByZXQpOworCQkJZ290byBvdXQ7CisJCX0KKwkJLyogTmV4dCBvb2IgcGFnZSAqLworCQlvb2IgKz0gbXRkLT5vb2JzaXplOworCQkvKiBVcGRhdGUgd3JpdHRlbiBieXRlcyBjb3VudCAqLworCQl3cml0dGVuICs9IG10ZC0+b29iYmxvY2s7CisJCWlmICh3cml0dGVuID09IGxlbikKKwkJCWdvdG8gY21wOworCisJCS8qIEluY3JlbWVudCBwYWdlIGFkZHJlc3MgKi8KKwkJcGFnZSsrOworCisJCS8qIEhhdmUgd2UgaGl0IGEgYmxvY2sgYm91bmRhcnkgPyBUaGVuIHdlIGhhdmUgdG8gdmVyaWZ5IGFuZAorCQkgKiBpZiB2ZXJpZnkgaXMgb2ssIHdlIGhhdmUgdG8gc2V0dXAgdGhlIG9vYiBidWZmZXIgZm9yCisJCSAqIHRoZSBuZXh0IHBhZ2VzLgorCQkqLworCQlpZiAoIShwYWdlICYgKHBwYmxvY2sgLSAxKSkpeworCQkJaW50IG9mczsKKwkJCXRoaXMtPmRhdGFfcG9pID0gYnVmc3RhcnQ7CisJCQlyZXQgPSBuYW5kX3ZlcmlmeV9wYWdlcyAobXRkLCB0aGlzLCBzdGFydHBhZ2UsCisJCQkJcGFnZSAtIHN0YXJ0cGFnZSwKKwkJCQlvb2JidWYsIG9vYnNlbCwgY2hpcG5yLCAoZWNjYnVmICE9IE5VTEwpKTsKKwkJCWlmIChyZXQpIHsKKwkJCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIm5hbmRfd3JpdGVfZWNjOiB2ZXJpZnlfcGFnZXMgZmFpbGVkICVkXG4iLCByZXQpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJKnJldGxlbiA9IHdyaXR0ZW47CisKKwkJCW9mcyA9IGF1dG9wbGFjZSA/IG10ZC0+b29iYXZhaWwgOiBtdGQtPm9vYnNpemU7CisJCQlpZiAoZWNjYnVmKQorCQkJCWVjY2J1ZiArPSAocGFnZSAtIHN0YXJ0cGFnZSkgKiBvZnM7CisJCQl0b3RhbHBhZ2VzIC09IHBhZ2UgLSBzdGFydHBhZ2U7CisJCQludW1wYWdlcyA9IG1pbiAodG90YWxwYWdlcywgcHBibG9jayk7CisJCQlwYWdlICY9IHRoaXMtPnBhZ2VtYXNrOworCQkJc3RhcnRwYWdlID0gcGFnZTsKKwkJCW9vYiA9IDA7CisJCQl0aGlzLT5vb2JkaXJ0eSA9IDE7CisJCQlvb2JidWYgPSBuYW5kX3ByZXBhcmVfb29iYnVmIChtdGQsIGVjY2J1Ziwgb29ic2VsLAorCQkJCQlhdXRvcGxhY2UsIG51bXBhZ2VzKTsKKwkJCS8qIENoZWNrLCBpZiB3ZSBjcm9zcyBhIGNoaXAgYm91bmRhcnkgKi8KKwkJCWlmICghcGFnZSkgeworCQkJCWNoaXBucisrOworCQkJCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOworCQkJCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgY2hpcG5yKTsKKwkJCX0KKwkJfQorCX0KKwkvKiBWZXJpZnkgdGhlIHJlbWFpbmluZyBwYWdlcyAqLworY21wOgorCXRoaXMtPmRhdGFfcG9pID0gYnVmc3RhcnQ7CisgCXJldCA9IG5hbmRfdmVyaWZ5X3BhZ2VzIChtdGQsIHRoaXMsIHN0YXJ0cGFnZSwgdG90YWxwYWdlcywKKwkJb29iYnVmLCBvb2JzZWwsIGNoaXBuciwgKGVjY2J1ZiAhPSBOVUxMKSk7CisJaWYgKCFyZXQpCisJCSpyZXRsZW4gPSB3cml0dGVuOworCWVsc2UKKwkJREVCVUcgKE1URF9ERUJVR19MRVZFTDAsICJuYW5kX3dyaXRlX2VjYzogdmVyaWZ5X3BhZ2VzIGZhaWxlZCAlZFxuIiwgcmV0KTsKKworb3V0OgorCS8qIERlc2VsZWN0IGFuZCB3YWtlIHVwIGFueW9uZSB3YWl0aW5nIG9uIHRoZSBkZXZpY2UgKi8KKwluYW5kX3JlbGVhc2VfZGV2aWNlKG10ZCk7CisKKwlyZXR1cm4gcmV0OworfQorCisKKy8qKgorICogbmFuZF93cml0ZV9vb2IgLSBbTVREIEludGVyZmFjZV0gTkFORCB3cml0ZSBvdXQtb2YtYmFuZAorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEB0bzoJCW9mZnNldCB0byB3cml0ZSB0bworICogQGxlbjoJbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlCisgKiBAcmV0bGVuOglwb2ludGVyIHRvIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBieXRlcworICogQGJ1ZjoJdGhlIGRhdGEgdG8gd3JpdGUKKyAqCisgKiBOQU5EIHdyaXRlIG91dC1vZi1iYW5kCisgKi8KK3N0YXRpYyBpbnQgbmFuZF93cml0ZV9vb2IgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgdG8sIHNpemVfdCBsZW4sIHNpemVfdCAqIHJldGxlbiwgY29uc3QgdV9jaGFyICogYnVmKQoreworCWludCBjb2x1bW4sIHBhZ2UsIHN0YXR1cywgcmV0ID0gLUVJTywgY2hpcG5yOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwlERUJVRyAoTVREX0RFQlVHX0xFVkVMMywgIm5hbmRfd3JpdGVfb29iOiB0byA9IDB4JTA4eCwgbGVuID0gJWlcbiIsICh1bnNpZ25lZCBpbnQpIHRvLCAoaW50KSBsZW4pOworCisJLyogU2hpZnQgdG8gZ2V0IHBhZ2UgKi8KKwlwYWdlID0gKGludCkgKHRvID4+IHRoaXMtPnBhZ2Vfc2hpZnQpOworCWNoaXBuciA9IChpbnQpICh0byA+PiB0aGlzLT5jaGlwX3NoaWZ0KTsKKworCS8qIE1hc2sgdG8gZ2V0IGNvbHVtbiAqLworCWNvbHVtbiA9IHRvICYgKG10ZC0+b29ic2l6ZSAtIDEpOworCisJLyogSW5pdGlhbGl6ZSByZXR1cm4gbGVuZ3RoIHZhbHVlICovCisJKnJldGxlbiA9IDA7CisKKwkvKiBEbyBub3QgYWxsb3cgd3JpdGUgcGFzdCBlbmQgb2YgcGFnZSAqLworCWlmICgoY29sdW1uICsgbGVuKSA+IG10ZC0+b29ic2l6ZSkgeworCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIm5hbmRfd3JpdGVfb29iOiBBdHRlbXB0IHRvIHdyaXRlIHBhc3QgZW5kIG9mIHBhZ2VcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBHcmFiIHRoZSBsb2NrIGFuZCBzZWUgaWYgdGhlIGRldmljZSBpcyBhdmFpbGFibGUgKi8KKwluYW5kX2dldF9kZXZpY2UgKHRoaXMsIG10ZCwgRkxfV1JJVElORyk7CisKKwkvKiBTZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCBjaGlwbnIpOworCisJLyogUmVzZXQgdGhlIGNoaXAuIFNvbWUgY2hpcHMgKGxpa2UgdGhlIFRvc2hpYmEgVEM1ODMyREMgZm91bmQKKwkgICBpbiBvbmUgb2YgbXkgRGlza09uQ2hpcCAyMDAwIHRlc3QgdW5pdHMpIHdpbGwgY2xlYXIgdGhlIHdob2xlCisJICAgZGF0YSBwYWdlIHRvbyBpZiB3ZSBkb24ndCBkbyB0aGlzLiBJIGhhdmUgbm8gY2x1ZSB3aHksIGJ1dAorCSAgIEkgc2VlbSB0byBoYXZlICdmaXhlZCcgaXQgaW4gdGhlIGRvYzIwMDAgZHJpdmVyIGluCisJICAgQXVndXN0IDE5OTkuICBkd213Mi4gKi8KKwl0aGlzLT5jbWRmdW5jKG10ZCwgTkFORF9DTURfUkVTRVQsIC0xLCAtMSk7CisKKwkvKiBDaGVjaywgaWYgaXQgaXMgd3JpdGUgcHJvdGVjdGVkICovCisJaWYgKG5hbmRfY2hlY2tfd3AobXRkKSkKKwkJZ290byBvdXQ7CisKKwkvKiBJbnZhbGlkYXRlIHRoZSBwYWdlIGNhY2hlLCBpZiB3ZSB3cml0ZSB0byB0aGUgY2FjaGVkIHBhZ2UgKi8KKwlpZiAocGFnZSA9PSB0aGlzLT5wYWdlYnVmKQorCQl0aGlzLT5wYWdlYnVmID0gLTE7CisKKwlpZiAoTkFORF9NVVNUX1BBRCh0aGlzKSkgeworCQkvKiBXcml0ZSBvdXQgZGVzaXJlZCBkYXRhICovCisJCXRoaXMtPmNtZGZ1bmMgKG10ZCwgTkFORF9DTURfU0VRSU4sIG10ZC0+b29iYmxvY2ssIHBhZ2UgJiB0aGlzLT5wYWdlbWFzayk7CisJCS8qIHByZXBhZCAweGZmIGZvciBwYXJ0aWFsIHByb2dyYW1taW5nICovCisJCXRoaXMtPndyaXRlX2J1ZihtdGQsIGZmY2hhcnMsIGNvbHVtbik7CisJCS8qIHdyaXRlIGRhdGEgKi8KKwkJdGhpcy0+d3JpdGVfYnVmKG10ZCwgYnVmLCBsZW4pOworCQkvKiBwb3N0cGFkIDB4ZmYgZm9yIHBhcnRpYWwgcHJvZ3JhbW1pbmcgKi8KKwkJdGhpcy0+d3JpdGVfYnVmKG10ZCwgZmZjaGFycywgbXRkLT5vb2JzaXplIC0gKGxlbitjb2x1bW4pKTsKKwl9IGVsc2UgeworCQkvKiBXcml0ZSBvdXQgZGVzaXJlZCBkYXRhICovCisJCXRoaXMtPmNtZGZ1bmMgKG10ZCwgTkFORF9DTURfU0VRSU4sIG10ZC0+b29iYmxvY2sgKyBjb2x1bW4sIHBhZ2UgJiB0aGlzLT5wYWdlbWFzayk7CisJCS8qIHdyaXRlIGRhdGEgKi8KKwkJdGhpcy0+d3JpdGVfYnVmKG10ZCwgYnVmLCBsZW4pOworCX0KKwkvKiBTZW5kIGNvbW1hbmQgdG8gcHJvZ3JhbSB0aGUgT09CIGRhdGEgKi8KKwl0aGlzLT5jbWRmdW5jIChtdGQsIE5BTkRfQ01EX1BBR0VQUk9HLCAtMSwgLTEpOworCisJc3RhdHVzID0gdGhpcy0+d2FpdGZ1bmMgKG10ZCwgdGhpcywgRkxfV1JJVElORyk7CisKKwkvKiBTZWUgaWYgZGV2aWNlIHRoaW5rcyBpdCBzdWNjZWVkZWQgKi8KKwlpZiAoc3RhdHVzICYgMHgwMSkgeworCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIm5hbmRfd3JpdGVfb29iOiAiICJGYWlsZWQgd3JpdGUsIHBhZ2UgMHglMDh4XG4iLCBwYWdlKTsKKwkJcmV0ID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQorCS8qIFJldHVybiBoYXBweSAqLworCSpyZXRsZW4gPSBsZW47CisKKyNpZmRlZiBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCisJLyogU2VuZCBjb21tYW5kIHRvIHJlYWQgYmFjayB0aGUgZGF0YSAqLworCXRoaXMtPmNtZGZ1bmMgKG10ZCwgTkFORF9DTURfUkVBRE9PQiwgY29sdW1uLCBwYWdlICYgdGhpcy0+cGFnZW1hc2spOworCisJaWYgKHRoaXMtPnZlcmlmeV9idWYobXRkLCBidWYsIGxlbikpIHsKKwkJREVCVUcgKE1URF9ERUJVR19MRVZFTDAsICJuYW5kX3dyaXRlX29vYjogIiAiRmFpbGVkIHdyaXRlIHZlcmlmeSwgcGFnZSAweCUwOHhcbiIsIHBhZ2UpOworCQlyZXQgPSAtRUlPOworCQlnb3RvIG91dDsKKwl9CisjZW5kaWYKKwlyZXQgPSAwOworb3V0OgorCS8qIERlc2VsZWN0IGFuZCB3YWtlIHVwIGFueW9uZSB3YWl0aW5nIG9uIHRoZSBkZXZpY2UgKi8KKwluYW5kX3JlbGVhc2VfZGV2aWNlKG10ZCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKiBYWFggVS1CT09UIFhYWCAqLworI2lmIDAKKy8qKgorICogbmFuZF93cml0ZXYgLSBbTVREIEludGVyZmFjZV0gY29tcGFiaWx0eSBmdW5jdGlvbiBmb3IgbmFuZF93cml0ZXZfZWNjCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQHZlY3M6CXRoZSBpb3ZlY3RvcnMgdG8gd3JpdGUKKyAqIEBjb3VudDoJbnVtYmVyIG9mIHZlY3RvcnMKKyAqIEB0bzoJCW9mZnNldCB0byB3cml0ZSB0bworICogQHJldGxlbjoJcG9pbnRlciB0byB2YXJpYWJsZSB0byBzdG9yZSB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMKKyAqCisgKiBOQU5EIHdyaXRlIHdpdGgga3ZlYy4gVGhpcyBqdXN0IGNhbGxzIHRoZSBlY2MgZnVuY3Rpb24KKyAqLworc3RhdGljIGludCBuYW5kX3dyaXRldiAoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHN0cnVjdCBrdmVjICp2ZWNzLCB1bnNpZ25lZCBsb25nIGNvdW50LAorCQlsb2ZmX3QgdG8sIHNpemVfdCAqIHJldGxlbikKK3sKKwlyZXR1cm4gKG5hbmRfd3JpdGV2X2VjYyAobXRkLCB2ZWNzLCBjb3VudCwgdG8sIHJldGxlbiwgTlVMTCwgTlVMTCkpOworfQorCisvKioKKyAqIG5hbmRfd3JpdGV2X2VjYyAtIFtNVEQgSW50ZXJmYWNlXSB3cml0ZSB3aXRoIGlvdmVjIHdpdGggZWNjCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQHZlY3M6CXRoZSBpb3ZlY3RvcnMgdG8gd3JpdGUKKyAqIEBjb3VudDoJbnVtYmVyIG9mIHZlY3RvcnMKKyAqIEB0bzoJCW9mZnNldCB0byB3cml0ZSB0bworICogQHJldGxlbjoJcG9pbnRlciB0byB2YXJpYWJsZSB0byBzdG9yZSB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMKKyAqIEBlY2NidWY6CWZpbGVzeXN0ZW0gc3VwcGxpZWQgb29iIGRhdGEgYnVmZmVyCisgKiBAb29ic2VsOglvb2Igc2VsZWN0aW9uIHN0cnVjdHVyZQorICoKKyAqIE5BTkQgd3JpdGUgd2l0aCBpb3ZlYyB3aXRoIGVjYworICovCitzdGF0aWMgaW50IG5hbmRfd3JpdGV2X2VjYyAoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHN0cnVjdCBrdmVjICp2ZWNzLCB1bnNpZ25lZCBsb25nIGNvdW50LAorCQlsb2ZmX3QgdG8sIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICplY2NidWYsIHN0cnVjdCBuYW5kX29vYmluZm8gKm9vYnNlbCkKK3sKKwlpbnQgaSwgcGFnZSwgbGVuLCB0b3RhbF9sZW4sIHJldCA9IC1FSU8sIHdyaXR0ZW4gPSAwLCBjaGlwbnI7CisJaW50IG9vYiwgbnVtcGFnZXMsIGF1dG9wbGFjZSA9IDAsIHN0YXJ0cGFnZTsKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCWludAlwcGJsb2NrID0gKDEgPDwgKHRoaXMtPnBoeXNfZXJhc2Vfc2hpZnQgLSB0aGlzLT5wYWdlX3NoaWZ0KSk7CisJdV9jaGFyICpvb2JidWYsICpidWZzdGFydDsKKworCS8qIFByZXNldCB3cml0dGVuIGxlbiBmb3IgZWFybHkgZXhpdCAqLworCSpyZXRsZW4gPSAwOworCisJLyogQ2FsY3VsYXRlIHRvdGFsIGxlbmd0aCBvZiBkYXRhICovCisJdG90YWxfbGVuID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKwkJdG90YWxfbGVuICs9IChpbnQpIHZlY3NbaV0uaW92X2xlbjsKKworCURFQlVHIChNVERfREVCVUdfTEVWRUwzLAorCSAgICAgICAibmFuZF93cml0ZXY6IHRvID0gMHglMDh4LCBsZW4gPSAlaSwgY291bnQgPSAlbGRcbiIsICh1bnNpZ25lZCBpbnQpIHRvLCAodW5zaWduZWQgaW50KSB0b3RhbF9sZW4sIGNvdW50KTsKKworCS8qIERvIG5vdCBhbGxvdyB3cml0ZSBwYXN0IGVuZCBvZiBwYWdlICovCisJaWYgKCh0byArIHRvdGFsX2xlbikgPiBtdGQtPnNpemUpIHsKKwkJREVCVUcgKE1URF9ERUJVR19MRVZFTDAsICJuYW5kX3dyaXRldjogQXR0ZW1wdGVkIHdyaXRlIHBhc3QgZW5kIG9mIGRldmljZVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIHJlamVjdCB3cml0ZXMsIHdoaWNoIGFyZSBub3QgcGFnZSBhbGlnbmVkICovCisJaWYgKE5PVEFMSUdORUQgKHRvKSB8fCBOT1RBTElHTkVEKHRvdGFsX2xlbikpIHsKKwkJcHJpbnRrIChLRVJOX05PVElDRSAibmFuZF93cml0ZV9lY2M6IEF0dGVtcHQgdG8gd3JpdGUgbm90IHBhZ2UgYWxpZ25lZCBkYXRhXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogR3JhYiB0aGUgbG9jayBhbmQgc2VlIGlmIHRoZSBkZXZpY2UgaXMgYXZhaWxhYmxlICovCisJbmFuZF9nZXRfZGV2aWNlICh0aGlzLCBtdGQsIEZMX1dSSVRJTkcpOworCisJLyogR2V0IHRoZSBjdXJyZW50IGNoaXAtbnIgKi8KKwljaGlwbnIgPSAoaW50KSAodG8gPj4gdGhpcy0+Y2hpcF9zaGlmdCk7CisJLyogU2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLworCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgY2hpcG5yKTsKKworCS8qIENoZWNrLCBpZiBpdCBpcyB3cml0ZSBwcm90ZWN0ZWQgKi8KKwlpZiAobmFuZF9jaGVja193cChtdGQpKQorCQlnb3RvIG91dDsKKworCS8qIGlmIG9vYnNlbCBpcyBOVUxMLCB1c2UgY2hpcCBkZWZhdWx0cyAqLworCWlmIChvb2JzZWwgPT0gTlVMTCkKKwkJb29ic2VsID0gJm10ZC0+b29iaW5mbzsKKworCS8qIEF1dG9wbGFjZSBvZiBvb2IgZGF0YSA/IFVzZSB0aGUgZGVmYXVsdCBwbGFjZW1lbnQgc2NoZW1lICovCisJaWYgKG9vYnNlbC0+dXNlZWNjID09IE1URF9OQU5ERUNDX0FVVE9QTEFDRSkgeworCQlvb2JzZWwgPSB0aGlzLT5hdXRvb29iOworCQlhdXRvcGxhY2UgPSAxOworCX0KKwlpZiAob29ic2VsLT51c2VlY2MgPT0gTVREX05BTkRFQ0NfQVVUT1BMX1VTUikKKwkJYXV0b3BsYWNlID0gMTsKKworCS8qIFNldHVwIHN0YXJ0IHBhZ2UgKi8KKwlwYWdlID0gKGludCkgKHRvID4+IHRoaXMtPnBhZ2Vfc2hpZnQpOworCS8qIEludmFsaWRhdGUgdGhlIHBhZ2UgY2FjaGUsIGlmIHdlIHdyaXRlIHRvIHRoZSBjYWNoZWQgcGFnZSAqLworCWlmIChwYWdlIDw9IHRoaXMtPnBhZ2VidWYgJiYgdGhpcy0+cGFnZWJ1ZiA8ICgodG8gKyB0b3RhbF9sZW4pID4+IHRoaXMtPnBhZ2Vfc2hpZnQpKQorCQl0aGlzLT5wYWdlYnVmID0gLTE7CisKKwlzdGFydHBhZ2UgPSBwYWdlICYgdGhpcy0+cGFnZW1hc2s7CisKKwkvKiBMb29wIHVudGlsIGFsbCBrdmVjJyBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4gKi8KKwlsZW4gPSAwOworCXdoaWxlIChjb3VudCkgeworCQkvKiBJZiB0aGUgZ2l2ZW4gdHVwbGUgaXMgPj0gcGFnZXNpemUgdGhlbgorCQkgKiB3cml0ZSBpdCBvdXQgZnJvbSB0aGUgaW92CisJCSAqLworCQlpZiAoKHZlY3MtPmlvdl9sZW4gLSBsZW4pID49IG10ZC0+b29iYmxvY2spIHsKKwkJCS8qIENhbGMgbnVtYmVyIG9mIHBhZ2VzIHdlIGNhbiB3cml0ZQorCQkJICogb3V0IG9mIHRoaXMgaW92IGluIG9uZSBnbyAqLworCQkJbnVtcGFnZXMgPSAodmVjcy0+aW92X2xlbiAtIGxlbikgPj4gdGhpcy0+cGFnZV9zaGlmdDsKKwkJCS8qIERvIG5vdCBjcm9zcyBibG9jayBib3VuZGFyaWVzICovCisJCQludW1wYWdlcyA9IG1pbiAocHBibG9jayAtIChzdGFydHBhZ2UgJiAocHBibG9jayAtIDEpKSwgbnVtcGFnZXMpOworCQkJb29iYnVmID0gbmFuZF9wcmVwYXJlX29vYmJ1ZiAobXRkLCBOVUxMLCBvb2JzZWwsIGF1dG9wbGFjZSwgbnVtcGFnZXMpOworCQkJYnVmc3RhcnQgPSAodV9jaGFyICopdmVjcy0+aW92X2Jhc2U7CisJCQlidWZzdGFydCArPSBsZW47CisJCQl0aGlzLT5kYXRhX3BvaSA9IGJ1ZnN0YXJ0OworCQkJb29iID0gMDsKKwkJCWZvciAoaSA9IDE7IGkgPD0gbnVtcGFnZXM7IGkrKykgeworCQkJCS8qIFdyaXRlIG9uZSBwYWdlLiBJZiB0aGlzIGlzIHRoZSBsYXN0IHBhZ2UgdG8gd3JpdGUKKwkJCQkgKiB0aGVuIHVzZSB0aGUgcmVhbCBwYWdlcHJvZ3JhbSBjb21tYW5kLCBlbHNlIHNlbGVjdAorCQkJCSAqIGNhY2hlZCBwcm9ncmFtbWluZyBpZiBzdXBwb3J0ZWQgYnkgdGhlIGNoaXAuCisJCQkJICovCisJCQkJcmV0ID0gbmFuZF93cml0ZV9wYWdlIChtdGQsIHRoaXMsIHBhZ2UgJiB0aGlzLT5wYWdlbWFzaywKKwkJCQkJJm9vYmJ1Zltvb2JdLCBvb2JzZWwsIGkgIT0gbnVtcGFnZXMpOworCQkJCWlmIChyZXQpCisJCQkJCWdvdG8gb3V0OworCQkJCXRoaXMtPmRhdGFfcG9pICs9IG10ZC0+b29iYmxvY2s7CisJCQkJbGVuICs9IG10ZC0+b29iYmxvY2s7CisJCQkJb29iICs9IG10ZC0+b29ic2l6ZTsKKwkJCQlwYWdlKys7CisJCQl9CisJCQkvKiBDaGVjaywgaWYgd2UgaGF2ZSB0byBzd2l0Y2ggdG8gdGhlIG5leHQgdHVwbGUgKi8KKwkJCWlmIChsZW4gPj0gKGludCkgdmVjcy0+aW92X2xlbikgeworCQkJCXZlY3MrKzsKKwkJCQlsZW4gPSAwOworCQkJCWNvdW50LS07CisJCQl9CisJCX0gZWxzZSB7CisJCQkvKiBXZSBtdXN0IHVzZSB0aGUgaW50ZXJuYWwgYnVmZmVyLCByZWFkIGRhdGEgb3V0IG9mIGVhY2gKKwkJCSAqIHR1cGxlIHVudGlsIHdlIGhhdmUgYSBmdWxsIHBhZ2UgdG8gd3JpdGUKKwkJCSAqLworCQkJaW50IGNudCA9IDA7CisJCQl3aGlsZSAoY250IDwgbXRkLT5vb2JibG9jaykgeworCQkJCWlmICh2ZWNzLT5pb3ZfYmFzZSAhPSBOVUxMICYmIHZlY3MtPmlvdl9sZW4pCisJCQkJCXRoaXMtPmRhdGFfYnVmW2NudCsrXSA9ICgodV9jaGFyICopIHZlY3MtPmlvdl9iYXNlKVtsZW4rK107CisJCQkJLyogQ2hlY2ssIGlmIHdlIGhhdmUgdG8gc3dpdGNoIHRvIHRoZSBuZXh0IHR1cGxlICovCisJCQkJaWYgKGxlbiA+PSAoaW50KSB2ZWNzLT5pb3ZfbGVuKSB7CisJCQkJCXZlY3MrKzsKKwkJCQkJbGVuID0gMDsKKwkJCQkJY291bnQtLTsKKwkJCQl9CisJCQl9CisJCQl0aGlzLT5wYWdlYnVmID0gcGFnZTsKKwkJCXRoaXMtPmRhdGFfcG9pID0gdGhpcy0+ZGF0YV9idWY7CisJCQlidWZzdGFydCA9IHRoaXMtPmRhdGFfcG9pOworCQkJbnVtcGFnZXMgPSAxOworCQkJb29iYnVmID0gbmFuZF9wcmVwYXJlX29vYmJ1ZiAobXRkLCBOVUxMLCBvb2JzZWwsIGF1dG9wbGFjZSwgbnVtcGFnZXMpOworCQkJcmV0ID0gbmFuZF93cml0ZV9wYWdlIChtdGQsIHRoaXMsIHBhZ2UgJiB0aGlzLT5wYWdlbWFzaywKKwkJCQlvb2JidWYsIG9vYnNlbCwgMCk7CisJCQlpZiAocmV0KQorCQkJCWdvdG8gb3V0OworCQkJcGFnZSsrOworCQl9CisKKwkJdGhpcy0+ZGF0YV9wb2kgPSBidWZzdGFydDsKKwkJcmV0ID0gbmFuZF92ZXJpZnlfcGFnZXMgKG10ZCwgdGhpcywgc3RhcnRwYWdlLCBudW1wYWdlcywgb29iYnVmLCBvb2JzZWwsIGNoaXBuciwgMCk7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsKKworCQl3cml0dGVuICs9IG10ZC0+b29iYmxvY2sgKiBudW1wYWdlczsKKwkJLyogQWxsIGRvbmUgPyAqLworCQlpZiAoIWNvdW50KQorCQkJYnJlYWs7CisKKwkJc3RhcnRwYWdlID0gcGFnZSAmIHRoaXMtPnBhZ2VtYXNrOworCQkvKiBDaGVjaywgaWYgd2UgY3Jvc3MgYSBjaGlwIGJvdW5kYXJ5ICovCisJCWlmICghc3RhcnRwYWdlKSB7CisJCQljaGlwbnIrKzsKKwkJCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOworCQkJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCBjaGlwbnIpOworCQl9CisJfQorCXJldCA9IDA7CitvdXQ6CisJLyogRGVzZWxlY3QgYW5kIHdha2UgdXAgYW55b25lIHdhaXRpbmcgb24gdGhlIGRldmljZSAqLworCW5hbmRfcmVsZWFzZV9kZXZpY2UobXRkKTsKKworCSpyZXRsZW4gPSB3cml0dGVuOworCXJldHVybiByZXQ7Cit9CisjZW5kaWYKKworLyoqCisgKiBzaW5nbGVfZXJlYXNlX2NtZCAtIFtHRU5FUklDXSBOQU5EIHN0YW5kYXJkIGJsb2NrIGVyYXNlIGNvbW1hbmQgZnVuY3Rpb24KKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAcGFnZToJdGhlIHBhZ2UgYWRkcmVzcyBvZiB0aGUgYmxvY2sgd2hpY2ggd2lsbCBiZSBlcmFzZWQKKyAqCisgKiBTdGFuZGFyZCBlcmFzZSBjb21tYW5kIGZvciBOQU5EIGNoaXBzCisgKi8KK3N0YXRpYyB2b2lkIHNpbmdsZV9lcmFzZV9jbWQgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgcGFnZSkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCS8qIFNlbmQgY29tbWFuZHMgdG8gZXJhc2UgYSBibG9jayAqLworCXRoaXMtPmNtZGZ1bmMgKG10ZCwgTkFORF9DTURfRVJBU0UxLCAtMSwgcGFnZSk7CisJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9FUkFTRTIsIC0xLCAtMSk7Cit9CisKKy8qKgorICogbXVsdGlfZXJlYXNlX2NtZCAtIFtHRU5FUklDXSBBTkQgc3BlY2lmaWMgYmxvY2sgZXJhc2UgY29tbWFuZCBmdW5jdGlvbgorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBwYWdlOgl0aGUgcGFnZSBhZGRyZXNzIG9mIHRoZSBibG9jayB3aGljaCB3aWxsIGJlIGVyYXNlZAorICoKKyAqIEFORCBtdWx0aSBibG9jayBlcmFzZSBjb21tYW5kIGZ1bmN0aW9uCisgKiBFcmFzZSA0IGNvbnNlY3V0aXZlIGJsb2NrcworICovCitzdGF0aWMgdm9pZCBtdWx0aV9lcmFzZV9jbWQgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgcGFnZSkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCS8qIFNlbmQgY29tbWFuZHMgdG8gZXJhc2UgYSBibG9jayAqLworCXRoaXMtPmNtZGZ1bmMgKG10ZCwgTkFORF9DTURfRVJBU0UxLCAtMSwgcGFnZSsrKTsKKwl0aGlzLT5jbWRmdW5jIChtdGQsIE5BTkRfQ01EX0VSQVNFMSwgLTEsIHBhZ2UrKyk7CisJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9FUkFTRTEsIC0xLCBwYWdlKyspOworCXRoaXMtPmNtZGZ1bmMgKG10ZCwgTkFORF9DTURfRVJBU0UxLCAtMSwgcGFnZSk7CisJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9FUkFTRTIsIC0xLCAtMSk7Cit9CisKKy8qKgorICogbmFuZF9lcmFzZSAtIFtNVEQgSW50ZXJmYWNlXSBlcmFzZSBibG9jayhzKQorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBpbnN0cjoJZXJhc2UgaW5zdHJ1Y3Rpb24KKyAqCisgKiBFcmFzZSBvbmUgb3JlIG1vcmUgYmxvY2tzCisgKi8KK3N0YXRpYyBpbnQgbmFuZF9lcmFzZSAoc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBlcmFzZV9pbmZvICppbnN0cikKK3sKKwlyZXR1cm4gbmFuZF9lcmFzZV9uYW5kIChtdGQsIGluc3RyLCAwKTsKK30KKworLyoqCisgKiBuYW5kX2VyYXNlX2ludGVybiAtIFtOQU5EIEludGVyZmFjZV0gZXJhc2UgYmxvY2socykKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAaW5zdHI6CWVyYXNlIGluc3RydWN0aW9uCisgKiBAYWxsb3diYnQ6CWFsbG93IGVyYXNpbmcgdGhlIGJidCBhcmVhCisgKgorICogRXJhc2Ugb25lIG9yZSBtb3JlIGJsb2NrcworICovCitpbnQgbmFuZF9lcmFzZV9uYW5kIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IGVyYXNlX2luZm8gKmluc3RyLCBpbnQgYWxsb3diYnQpCit7CisJaW50IHBhZ2UsIGxlbiwgc3RhdHVzLCBwYWdlc19wZXJfYmxvY2ssIHJldCwgY2hpcG5yOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwlERUJVRyAoTVREX0RFQlVHX0xFVkVMMywKKwkgICAgICAgIm5hbmRfZXJhc2U6IHN0YXJ0ID0gMHglMDh4LCBsZW4gPSAlaVxuIiwgKHVuc2lnbmVkIGludCkgaW5zdHItPmFkZHIsICh1bnNpZ25lZCBpbnQpIGluc3RyLT5sZW4pOworCisJLyogU3RhcnQgYWRkcmVzcyBtdXN0IGFsaWduIG9uIGJsb2NrIGJvdW5kYXJ5ICovCisJaWYgKGluc3RyLT5hZGRyICYgKCgxIDw8IHRoaXMtPnBoeXNfZXJhc2Vfc2hpZnQpIC0gMSkpIHsKKwkJREVCVUcgKE1URF9ERUJVR19MRVZFTDAsICJuYW5kX2VyYXNlOiBVbmFsaWduZWQgYWRkcmVzc1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIExlbmd0aCBtdXN0IGFsaWduIG9uIGJsb2NrIGJvdW5kYXJ5ICovCisJaWYgKGluc3RyLT5sZW4gJiAoKDEgPDwgdGhpcy0+cGh5c19lcmFzZV9zaGlmdCkgLSAxKSkgeworCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIm5hbmRfZXJhc2U6IExlbmd0aCBub3QgYmxvY2sgYWxpZ25lZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIERvIG5vdCBhbGxvdyBlcmFzZSBwYXN0IGVuZCBvZiBkZXZpY2UgKi8KKwlpZiAoKGluc3RyLT5sZW4gKyBpbnN0ci0+YWRkcikgPiBtdGQtPnNpemUpIHsKKwkJREVCVUcgKE1URF9ERUJVR19MRVZFTDAsICJuYW5kX2VyYXNlOiBFcmFzZSBwYXN0IGVuZCBvZiBkZXZpY2VcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpbnN0ci0+ZmFpbF9hZGRyID0gMHhmZmZmZmZmZjsKKworCS8qIEdyYWIgdGhlIGxvY2sgYW5kIHNlZSBpZiB0aGUgZGV2aWNlIGlzIGF2YWlsYWJsZSAqLworCW5hbmRfZ2V0X2RldmljZSAodGhpcywgbXRkLCBGTF9FUkFTSU5HKTsKKworCS8qIFNoaWZ0IHRvIGdldCBmaXJzdCBwYWdlICovCisJcGFnZSA9IChpbnQpIChpbnN0ci0+YWRkciA+PiB0aGlzLT5wYWdlX3NoaWZ0KTsKKwljaGlwbnIgPSAoaW50KSAoaW5zdHItPmFkZHIgPj4gdGhpcy0+Y2hpcF9zaGlmdCk7CisKKwkvKiBDYWxjdWxhdGUgcGFnZXMgaW4gZWFjaCBibG9jayAqLworCXBhZ2VzX3Blcl9ibG9jayA9IDEgPDwgKHRoaXMtPnBoeXNfZXJhc2Vfc2hpZnQgLSB0aGlzLT5wYWdlX3NoaWZ0KTsKKworCS8qIFNlbGVjdCB0aGUgTkFORCBkZXZpY2UgKi8KKwl0aGlzLT5zZWxlY3RfY2hpcChtdGQsIGNoaXBucik7CisKKwkvKiBDaGVjayB0aGUgV1AgYml0ICovCisJLyogQ2hlY2ssIGlmIGl0IGlzIHdyaXRlIHByb3RlY3RlZCAqLworCWlmIChuYW5kX2NoZWNrX3dwKG10ZCkpIHsKKwkJREVCVUcgKE1URF9ERUJVR19MRVZFTDAsICJuYW5kX2VyYXNlOiBEZXZpY2UgaXMgd3JpdGUgcHJvdGVjdGVkISEhXG4iKTsKKwkJaW5zdHItPnN0YXRlID0gTVREX0VSQVNFX0ZBSUxFRDsKKwkJZ290byBlcmFzZV9leGl0OworCX0KKworCS8qIExvb3AgdGhyb3VnaCB0aGUgcGFnZXMgKi8KKwlsZW4gPSBpbnN0ci0+bGVuOworCisJaW5zdHItPnN0YXRlID0gTVREX0VSQVNJTkc7CisKKwl3aGlsZSAobGVuKSB7CisjaWZuZGVmIE5BTkRfQUxMT1dfRVJBU0VfQUxMCisJCS8qIENoZWNrIGlmIHdlIGhhdmUgYSBiYWQgYmxvY2ssIHdlIGRvIG5vdCBlcmFzZSBiYWQgYmxvY2tzICEgKi8KKwkJaWYgKG5hbmRfYmxvY2tfY2hlY2tiYWQobXRkLCAoKGxvZmZfdCkgcGFnZSkgPDwgdGhpcy0+cGFnZV9zaGlmdCwgMCwgYWxsb3diYnQpKSB7CisJCQlwcmludGsgKEtFUk5fV0FSTklORyAibmFuZF9lcmFzZTogYXR0ZW1wdCB0byBlcmFzZSBhIGJhZCBibG9jayBhdCBwYWdlIDB4JTA4eFxuIiwgcGFnZSk7CisJCQlpbnN0ci0+c3RhdGUgPSBNVERfRVJBU0VfRkFJTEVEOworCQkJZ290byBlcmFzZV9leGl0OworCQl9CisjZW5kaWYKKwkJLyogSW52YWxpZGF0ZSB0aGUgcGFnZSBjYWNoZSwgaWYgd2UgZXJhc2UgdGhlIGJsb2NrIHdoaWNoIGNvbnRhaW5zCisJCSAgIHRoZSBjdXJyZW50IGNhY2hlZCBwYWdlICovCisJCWlmIChwYWdlIDw9IHRoaXMtPnBhZ2VidWYgJiYgdGhpcy0+cGFnZWJ1ZiA8IChwYWdlICsgcGFnZXNfcGVyX2Jsb2NrKSkKKwkJCXRoaXMtPnBhZ2VidWYgPSAtMTsKKworCQl0aGlzLT5lcmFzZV9jbWQgKG10ZCwgcGFnZSAmIHRoaXMtPnBhZ2VtYXNrKTsKKworCQlzdGF0dXMgPSB0aGlzLT53YWl0ZnVuYyAobXRkLCB0aGlzLCBGTF9FUkFTSU5HKTsKKworCQkvKiBTZWUgaWYgYmxvY2sgZXJhc2Ugc3VjY2VlZGVkICovCisJCWlmIChzdGF0dXMgJiAweDAxKSB7CisJCQlERUJVRyAoTVREX0RFQlVHX0xFVkVMMCwgIm5hbmRfZXJhc2U6ICIgIkZhaWxlZCBlcmFzZSwgcGFnZSAweCUwOHhcbiIsIHBhZ2UpOworCQkJaW5zdHItPnN0YXRlID0gTVREX0VSQVNFX0ZBSUxFRDsKKwkJCWluc3RyLT5mYWlsX2FkZHIgPSAocGFnZSA8PCB0aGlzLT5wYWdlX3NoaWZ0KTsKKwkJCWdvdG8gZXJhc2VfZXhpdDsKKwkJfQorCisJCS8qIEluY3JlbWVudCBwYWdlIGFkZHJlc3MgYW5kIGRlY3JlbWVudCBsZW5ndGggKi8KKwkJbGVuIC09ICgxIDw8IHRoaXMtPnBoeXNfZXJhc2Vfc2hpZnQpOworCQlwYWdlICs9IHBhZ2VzX3Blcl9ibG9jazsKKworCQkvKiBDaGVjaywgaWYgd2UgY3Jvc3MgYSBjaGlwIGJvdW5kYXJ5ICovCisJCWlmIChsZW4gJiYgIShwYWdlICYgdGhpcy0+cGFnZW1hc2spKSB7CisJCQljaGlwbnIrKzsKKwkJCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOworCQkJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCBjaGlwbnIpOworCQl9CisJfQorCWluc3RyLT5zdGF0ZSA9IE1URF9FUkFTRV9ET05FOworCitlcmFzZV9leGl0OgorCisJcmV0ID0gaW5zdHItPnN0YXRlID09IE1URF9FUkFTRV9ET05FID8gMCA6IC1FSU87CisJLyogRG8gY2FsbCBiYWNrIGZ1bmN0aW9uICovCisJaWYgKCFyZXQpCisJCW10ZF9lcmFzZV9jYWxsYmFjayhpbnN0cik7CisKKwkvKiBEZXNlbGVjdCBhbmQgd2FrZSB1cCBhbnlvbmUgd2FpdGluZyBvbiB0aGUgZGV2aWNlICovCisJbmFuZF9yZWxlYXNlX2RldmljZShtdGQpOworCisJLyogUmV0dXJuIG1vcmUgb3IgbGVzcyBoYXBweSAqLworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogbmFuZF9zeW5jIC0gW01URCBJbnRlcmZhY2VdIHN5bmMKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKgorICogU3luYyBpcyBhY3R1YWxseSBhIHdhaXQgZm9yIGNoaXAgcmVhZHkgZnVuY3Rpb24KKyAqLworc3RhdGljIHZvaWQgbmFuZF9zeW5jIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCisJREVCVUcgKE1URF9ERUJVR19MRVZFTDMsICJuYW5kX3N5bmM6IGNhbGxlZFxuIik7CisKKwkvKiBHcmFiIHRoZSBsb2NrIGFuZCBzZWUgaWYgdGhlIGRldmljZSBpcyBhdmFpbGFibGUgKi8KKwluYW5kX2dldF9kZXZpY2UgKHRoaXMsIG10ZCwgRkxfU1lOQ0lORyk7CisJLyogUmVsZWFzZSBpdCBhbmQgZ28gYmFjayAqLworCW5hbmRfcmVsZWFzZV9kZXZpY2UgKG10ZCk7Cit9CisKKworLyoqCisgKiBuYW5kX2Jsb2NrX2lzYmFkIC0gW01URCBJbnRlcmZhY2VdIENoZWNrIHdoZXRoZXIgdGhlIGJsb2NrIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgYmFkCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQG9mczoJb2Zmc2V0IHJlbGF0aXZlIHRvIG10ZCBzdGFydAorICovCitzdGF0aWMgaW50IG5hbmRfYmxvY2tfaXNiYWQgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3Qgb2ZzKQoreworCS8qIENoZWNrIGZvciBpbnZhbGlkIG9mZnNldCAqLworCWlmIChvZnMgPiBtdGQtPnNpemUpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIG5hbmRfYmxvY2tfY2hlY2tiYWQgKG10ZCwgb2ZzLCAxLCAwKTsKK30KKworLyoqCisgKiBuYW5kX2Jsb2NrX21hcmtiYWQgLSBbTVREIEludGVyZmFjZV0gTWFyayB0aGUgYmxvY2sgYXQgdGhlIGdpdmVuIG9mZnNldCBhcyBiYWQKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAb2ZzOglvZmZzZXQgcmVsYXRpdmUgdG8gbXRkIHN0YXJ0CisgKi8KK3N0YXRpYyBpbnQgbmFuZF9ibG9ja19tYXJrYmFkIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mcykKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCWludCByZXQ7CisKKwlpZiAoKHJldCA9IG5hbmRfYmxvY2tfaXNiYWQobXRkLCBvZnMpKSkgeworCQkvKiBJZiBpdCB3YXMgYmFkIGFscmVhZHksIHJldHVybiBzdWNjZXNzIGFuZCBkbyBub3RoaW5nLiAqLworCQlpZiAocmV0ID4gMCkKKwkJCXJldHVybiAwOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiB0aGlzLT5ibG9ja19tYXJrYmFkKG10ZCwgb2ZzKTsKK30KKworLyoqCisgKiBuYW5kX3NjYW4gLSBbTkFORCBJbnRlcmZhY2VdIFNjYW4gZm9yIHRoZSBOQU5EIGRldmljZQorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBtYXhjaGlwczoJTnVtYmVyIG9mIGNoaXBzIHRvIHNjYW4gZm9yCisgKgorICogVGhpcyBmaWxscyBvdXQgYWxsIHRoZSBub3QgaW5pdGlhbGl6ZWQgZnVuY3Rpb24gcG9pbnRlcnMKKyAqIHdpdGggdGhlIGRlZmF1bHRzLgorICogVGhlIGZsYXNoIElEIGlzIHJlYWQgYW5kIHRoZSBtdGQvY2hpcCBzdHJ1Y3R1cmVzIGFyZQorICogZmlsbGVkIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlcy4gQnVmZmVycyBhcmUgYWxsb2NhdGVkIGlmCisgKiB0aGV5IGFyZSBub3QgcHJvdmlkZWQgYnkgdGhlIGJvYXJkIGRyaXZlcgorICoKKyAqLworaW50IG5hbmRfc2NhbiAoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBtYXhjaGlwcykKK3sKKwlpbnQgaSwgaiwgbmFuZF9tYWZfaWQsIG5hbmRfZGV2X2lkLCBidXN3OworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwkvKiBHZXQgYnVzd2lkdGggdG8gc2VsZWN0IHRoZSBjb3JyZWN0IGZ1bmN0aW9ucyovCisJYnVzdyA9IHRoaXMtPm9wdGlvbnMgJiBOQU5EX0JVU1dJRFRIXzE2OworCisJLyogY2hlY2sgZm9yIHByb3BlciBjaGlwX2RlbGF5IHNldHVwLCBzZXQgMjB1cyBpZiBub3QgKi8KKwlpZiAoIXRoaXMtPmNoaXBfZGVsYXkpCisJCXRoaXMtPmNoaXBfZGVsYXkgPSAyMDsKKworCS8qIGNoZWNrLCBpZiBhIHVzZXIgc3VwcGxpZWQgY29tbWFuZCBmdW5jdGlvbiBnaXZlbiAqLworCWlmICh0aGlzLT5jbWRmdW5jID09IE5VTEwpCisJCXRoaXMtPmNtZGZ1bmMgPSBuYW5kX2NvbW1hbmQ7CisKKwkvKiBjaGVjaywgaWYgYSB1c2VyIHN1cHBsaWVkIHdhaXQgZnVuY3Rpb24gZ2l2ZW4gKi8KKwlpZiAodGhpcy0+d2FpdGZ1bmMgPT0gTlVMTCkKKwkJdGhpcy0+d2FpdGZ1bmMgPSBuYW5kX3dhaXQ7CisKKwlpZiAoIXRoaXMtPnNlbGVjdF9jaGlwKQorCQl0aGlzLT5zZWxlY3RfY2hpcCA9IG5hbmRfc2VsZWN0X2NoaXA7CisJaWYgKCF0aGlzLT53cml0ZV9ieXRlKQorCQl0aGlzLT53cml0ZV9ieXRlID0gYnVzdyA/IG5hbmRfd3JpdGVfYnl0ZTE2IDogbmFuZF93cml0ZV9ieXRlOworCWlmICghdGhpcy0+cmVhZF9ieXRlKQorCQl0aGlzLT5yZWFkX2J5dGUgPSBidXN3ID8gbmFuZF9yZWFkX2J5dGUxNiA6IG5hbmRfcmVhZF9ieXRlOworCWlmICghdGhpcy0+d3JpdGVfd29yZCkKKwkJdGhpcy0+d3JpdGVfd29yZCA9IG5hbmRfd3JpdGVfd29yZDsKKwlpZiAoIXRoaXMtPnJlYWRfd29yZCkKKwkJdGhpcy0+cmVhZF93b3JkID0gbmFuZF9yZWFkX3dvcmQ7CisJaWYgKCF0aGlzLT5ibG9ja19iYWQpCisJCXRoaXMtPmJsb2NrX2JhZCA9IG5hbmRfYmxvY2tfYmFkOworCWlmICghdGhpcy0+YmxvY2tfbWFya2JhZCkKKwkJdGhpcy0+YmxvY2tfbWFya2JhZCA9IG5hbmRfZGVmYXVsdF9ibG9ja19tYXJrYmFkOworCWlmICghdGhpcy0+d3JpdGVfYnVmKQorCQl0aGlzLT53cml0ZV9idWYgPSBidXN3ID8gbmFuZF93cml0ZV9idWYxNiA6IG5hbmRfd3JpdGVfYnVmOworCWlmICghdGhpcy0+cmVhZF9idWYpCisJCXRoaXMtPnJlYWRfYnVmID0gYnVzdyA/IG5hbmRfcmVhZF9idWYxNiA6IG5hbmRfcmVhZF9idWY7CisJaWYgKCF0aGlzLT52ZXJpZnlfYnVmKQorCQl0aGlzLT52ZXJpZnlfYnVmID0gYnVzdyA/IG5hbmRfdmVyaWZ5X2J1ZjE2IDogbmFuZF92ZXJpZnlfYnVmOworCWlmICghdGhpcy0+c2Nhbl9iYnQpCisJCXRoaXMtPnNjYW5fYmJ0ID0gbmFuZF9kZWZhdWx0X2JidDsKKworCS8qIFNlbGVjdCB0aGUgZGV2aWNlICovCisJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCAwKTsKKworCS8qIFNlbmQgdGhlIGNvbW1hbmQgZm9yIHJlYWRpbmcgZGV2aWNlIElEICovCisJdGhpcy0+Y21kZnVuYyAobXRkLCBOQU5EX0NNRF9SRUFESUQsIDB4MDAsIC0xKTsKKworCS8qIFJlYWQgbWFudWZhY3R1cmVyIGFuZCBkZXZpY2UgSURzICovCisJbmFuZF9tYWZfaWQgPSB0aGlzLT5yZWFkX2J5dGUobXRkKTsKKwluYW5kX2Rldl9pZCA9IHRoaXMtPnJlYWRfYnl0ZShtdGQpOworCisJLyogUHJpbnQgYW5kIHN0b3JlIGZsYXNoIGRldmljZSBpbmZvcm1hdGlvbiAqLworCWZvciAoaSA9IDA7IG5hbmRfZmxhc2hfaWRzW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7CisKKwkJaWYgKG5hbmRfZGV2X2lkICE9IG5hbmRfZmxhc2hfaWRzW2ldLmlkKQorCQkJY29udGludWU7CisKKwkJaWYgKCFtdGQtPm5hbWUpIG10ZC0+bmFtZSA9IG5hbmRfZmxhc2hfaWRzW2ldLm5hbWU7CisJCXRoaXMtPmNoaXBzaXplID0gbmFuZF9mbGFzaF9pZHNbaV0uY2hpcHNpemUgPDwgMjA7CisKKwkJLyogTmV3IGRldmljZXMgaGF2ZSBhbGwgdGhlIGluZm9ybWF0aW9uIGluIGFkZGl0aW9uYWwgaWQgYnl0ZXMgKi8KKwkJaWYgKCFuYW5kX2ZsYXNoX2lkc1tpXS5wYWdlc2l6ZSkgeworCQkJaW50IGV4dGlkOworCQkJLyogVGhlIDNyZCBpZCBieXRlIGNvbnRhaW5zIG5vbiByZWxldmFudCBkYXRhIEFUTSAqLworCQkJZXh0aWQgPSB0aGlzLT5yZWFkX2J5dGUobXRkKTsKKwkJCS8qIFRoZSA0dGggaWQgYnl0ZSBpcyB0aGUgaW1wb3J0YW50IG9uZSAqLworCQkJZXh0aWQgPSB0aGlzLT5yZWFkX2J5dGUobXRkKTsKKwkJCS8qIENhbGMgcGFnZXNpemUgKi8KKwkJCW10ZC0+b29iYmxvY2sgPSAxMDI0IDw8IChleHRpZCAmIDB4Myk7CisJCQlleHRpZCA+Pj0gMjsKKwkJCS8qIENhbGMgb29ic2l6ZSAqLworCQkJbXRkLT5vb2JzaXplID0gKDggPDwgKGV4dGlkICYgMHgwMykpICogKG10ZC0+b29iYmxvY2sgLyA1MTIpOworCQkJZXh0aWQgPj49IDI7CisJCQkvKiBDYWxjIGJsb2Nrc2l6ZS4gQmxvY2tzaXplIGlzIG11bHRpcGxlcyBvZiA2NEtpQiAqLworCQkJbXRkLT5lcmFzZXNpemUgPSAoNjQgKiAxMDI0KSAgPDwgKGV4dGlkICYgMHgwMyk7CisJCQlleHRpZCA+Pj0gMjsKKwkJCS8qIEdldCBidXN3aWR0aCBpbmZvcm1hdGlvbiAqLworCQkJYnVzdyA9IChleHRpZCAmIDB4MDEpID8gTkFORF9CVVNXSURUSF8xNiA6IDA7CisKKwkJfSBlbHNlIHsKKwkJCS8qIE9sZCBkZXZpY2VzIGhhdmUgdGhpcyBkYXRhIGhhcmRjb2RlZCBpbiB0aGUKKwkJCSAqIGRldmljZSBpZCB0YWJsZSAqLworCQkJbXRkLT5lcmFzZXNpemUgPSBuYW5kX2ZsYXNoX2lkc1tpXS5lcmFzZXNpemU7CisJCQltdGQtPm9vYmJsb2NrID0gbmFuZF9mbGFzaF9pZHNbaV0ucGFnZXNpemU7CisJCQltdGQtPm9vYnNpemUgPSBtdGQtPm9vYmJsb2NrIC8gMzI7CisJCQlidXN3ID0gbmFuZF9mbGFzaF9pZHNbaV0ub3B0aW9ucyAmIE5BTkRfQlVTV0lEVEhfMTY7CisJCX0KKworCQkvKiBDaGVjaywgaWYgYnVzd2lkdGggaXMgY29ycmVjdC4gSGFyZHdhcmUgZHJpdmVycyBzaG91bGQgc2V0CisJCSAqIHRoaXMgY29ycmVjdCAhICovCisJCWlmIChidXN3ICE9ICh0aGlzLT5vcHRpb25zICYgTkFORF9CVVNXSURUSF8xNikpIHsKKwkJCXByaW50ayAoS0VSTl9JTkZPICJOQU5EIGRldmljZTogTWFudWZhY3R1cmVyIElEOiIKKwkJCQkiIDB4JTAyeCwgQ2hpcCBJRDogMHglMDJ4ICglcyAlcylcbiIsIG5hbmRfbWFmX2lkLCBuYW5kX2Rldl9pZCwKKwkJCQluYW5kX21hbnVmX2lkc1tpXS5uYW1lICwgbXRkLT5uYW1lKTsKKwkJCXByaW50ayAoS0VSTl9XQVJOSU5HCisJCQkJIk5BTkQgYnVzIHdpZHRoICVkIGluc3RlYWQgJWQgYml0XG4iLAorCQkJCQkodGhpcy0+b3B0aW9ucyAmIE5BTkRfQlVTV0lEVEhfMTYpID8gMTYgOiA4LAorCQkJCQlidXN3ID8gMTYgOiA4KTsKKwkJCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOworCQkJcmV0dXJuIDE7CisJCX0KKworCQkvKiBDYWxjdWxhdGUgdGhlIGFkZHJlc3Mgc2hpZnQgZnJvbSB0aGUgcGFnZSBzaXplICovCisJCXRoaXMtPnBhZ2Vfc2hpZnQgPSBmZnMobXRkLT5vb2JibG9jaykgLSAxOworCQl0aGlzLT5iYnRfZXJhc2Vfc2hpZnQgPSB0aGlzLT5waHlzX2VyYXNlX3NoaWZ0ID0gZmZzKG10ZC0+ZXJhc2VzaXplKSAtIDE7CisJCXRoaXMtPmNoaXBfc2hpZnQgPSBmZnModGhpcy0+Y2hpcHNpemUpIC0gMTsKKworCQkvKiBTZXQgdGhlIGJhZCBibG9jayBwb3NpdGlvbiAqLworCQl0aGlzLT5iYWRibG9ja3BvcyA9IG10ZC0+b29iYmxvY2sgPiA1MTIgPworCQkJTkFORF9MQVJHRV9CQURCTE9DS19QT1MgOiBOQU5EX1NNQUxMX0JBREJMT0NLX1BPUzsKKworCQkvKiBHZXQgY2hpcCBvcHRpb25zLCBwcmVzZXJ2ZSBub24gY2hpcCBiYXNlZCBvcHRpb25zICovCisJCXRoaXMtPm9wdGlvbnMgJj0gfk5BTkRfQ0hJUE9QVElPTlNfTVNLOworCQl0aGlzLT5vcHRpb25zIHw9IG5hbmRfZmxhc2hfaWRzW2ldLm9wdGlvbnMgJiBOQU5EX0NISVBPUFRJT05TX01TSzsKKwkJLyogU2V0IHRoaXMgYXMgYSBkZWZhdWx0LiBCb2FyZCBkcml2ZXJzIGNhbiBvdmVycmlkZSBpdCwgaWYgbmVjY2VjYXJ5ICovCisJCXRoaXMtPm9wdGlvbnMgfD0gTkFORF9OT19BVVRPSU5DUjsKKwkJLyogQ2hlY2sgaWYgdGhpcyBpcyBhIG5vdCBhIHNhbXN1bmcgZGV2aWNlLiBEbyBub3QgY2xlYXIgdGhlIG9wdGlvbnMKKwkJICogZm9yIGNoaXBzIHdoaWNoIGFyZSBub3QgaGF2aW5nIGFuIGV4dGVuZGVkIGlkLgorCQkgKi8KKwkJaWYgKG5hbmRfbWFmX2lkICE9IE5BTkRfTUZSX1NBTVNVTkcgJiYgIW5hbmRfZmxhc2hfaWRzW2ldLnBhZ2VzaXplKQorCQkJdGhpcy0+b3B0aW9ucyAmPSB+TkFORF9TQU1TVU5HX0xQX09QVElPTlM7CisKKwkJLyogQ2hlY2sgZm9yIEFORCBjaGlwcyB3aXRoIDQgcGFnZSBwbGFuZXMgKi8KKwkJaWYgKHRoaXMtPm9wdGlvbnMgJiBOQU5EXzRQQUdFX0FSUkFZKQorCQkJdGhpcy0+ZXJhc2VfY21kID0gbXVsdGlfZXJhc2VfY21kOworCQllbHNlCisJCQl0aGlzLT5lcmFzZV9jbWQgPSBzaW5nbGVfZXJhc2VfY21kOworCisJCS8qIERvIG5vdCByZXBsYWNlIHVzZXIgc3VwcGxpZWQgY29tbWFuZCBmdW5jdGlvbiAhICovCisJCWlmIChtdGQtPm9vYmJsb2NrID4gNTEyICYmIHRoaXMtPmNtZGZ1bmMgPT0gbmFuZF9jb21tYW5kKQorCQkJdGhpcy0+Y21kZnVuYyA9IG5hbmRfY29tbWFuZF9scDsKKworCQkvKiBUcnkgdG8gaWRlbnRpZnkgbWFudWZhY3R1cmVyICovCisJCWZvciAoaiA9IDA7IG5hbmRfbWFudWZfaWRzW2pdLmlkICE9IDB4MDsgaisrKSB7CisJCQlpZiAobmFuZF9tYW51Zl9pZHNbal0uaWQgPT0gbmFuZF9tYWZfaWQpCisJCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJfQorCisJaWYgKCFuYW5kX2ZsYXNoX2lkc1tpXS5uYW1lKSB7CisJCXByaW50ayAoS0VSTl9XQVJOSU5HICJObyBOQU5EIGRldmljZSBmb3VuZCEhIVxuIik7CisJCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOworCQlyZXR1cm4gMTsKKwl9CisKKwlmb3IgKGk9MTsgaSA8IG1heGNoaXBzOyBpKyspIHsKKwkJdGhpcy0+c2VsZWN0X2NoaXAobXRkLCBpKTsKKworCQkvKiBTZW5kIHRoZSBjb21tYW5kIGZvciByZWFkaW5nIGRldmljZSBJRCAqLworCQl0aGlzLT5jbWRmdW5jIChtdGQsIE5BTkRfQ01EX1JFQURJRCwgMHgwMCwgLTEpOworCisJCS8qIFJlYWQgbWFudWZhY3R1cmVyIGFuZCBkZXZpY2UgSURzICovCisJCWlmIChuYW5kX21hZl9pZCAhPSB0aGlzLT5yZWFkX2J5dGUobXRkKSB8fAorCQkgICAgbmFuZF9kZXZfaWQgIT0gdGhpcy0+cmVhZF9ieXRlKG10ZCkpCisJCQlicmVhazsKKwl9CisJaWYgKGkgPiAxKQorCQlwcmludGsoS0VSTl9JTkZPICIlZCBOQU5EIGNoaXBzIGRldGVjdGVkXG4iLCBpKTsKKworCS8qIEFsbG9jYXRlIGJ1ZmZlcnMsIGlmIG5lY2NlY2FyeSAqLworCWlmICghdGhpcy0+b29iX2J1ZikgeworCQlzaXplX3QgbGVuOworCQlsZW4gPSBtdGQtPm9vYnNpemUgPDwgKHRoaXMtPnBoeXNfZXJhc2Vfc2hpZnQgLSB0aGlzLT5wYWdlX3NoaWZ0KTsKKwkJdGhpcy0+b29iX2J1ZiA9IGttYWxsb2MgKGxlbiwgR0ZQX0tFUk5FTCk7CisJCWlmICghdGhpcy0+b29iX2J1ZikgeworCQkJcHJpbnRrIChLRVJOX0VSUiAibmFuZF9zY2FuKCk6IENhbm5vdCBhbGxvY2F0ZSBvb2JfYnVmXG4iKTsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisJCXRoaXMtPm9wdGlvbnMgfD0gTkFORF9PT0JCVUZfQUxMT0M7CisJfQorCisJaWYgKCF0aGlzLT5kYXRhX2J1ZikgeworCQlzaXplX3QgbGVuOworCQlsZW4gPSBtdGQtPm9vYmJsb2NrICsgbXRkLT5vb2JzaXplOworCQl0aGlzLT5kYXRhX2J1ZiA9IGttYWxsb2MgKGxlbiwgR0ZQX0tFUk5FTCk7CisJCWlmICghdGhpcy0+ZGF0YV9idWYpIHsKKwkJCWlmICh0aGlzLT5vcHRpb25zICYgTkFORF9PT0JCVUZfQUxMT0MpCisJCQkJa2ZyZWUgKHRoaXMtPm9vYl9idWYpOworCQkJcHJpbnRrIChLRVJOX0VSUiAibmFuZF9zY2FuKCk6IENhbm5vdCBhbGxvY2F0ZSBkYXRhX2J1ZlxuIik7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCQl0aGlzLT5vcHRpb25zIHw9IE5BTkRfREFUQUJVRl9BTExPQzsKKwl9CisKKwkvKiBTdG9yZSB0aGUgbnVtYmVyIG9mIGNoaXBzIGFuZCBjYWxjIHRvdGFsIHNpemUgZm9yIG10ZCAqLworCXRoaXMtPm51bWNoaXBzID0gaTsKKwltdGQtPnNpemUgPSBpICogdGhpcy0+Y2hpcHNpemU7CisJLyogQ29udmVydCBjaGlwc2l6ZSB0byBudW1iZXIgb2YgcGFnZXMgcGVyIGNoaXAgLTEuICovCisJdGhpcy0+cGFnZW1hc2sgPSAodGhpcy0+Y2hpcHNpemUgPj4gdGhpcy0+cGFnZV9zaGlmdCkgLSAxOworCS8qIFByZXNldCB0aGUgaW50ZXJuYWwgb29iIGJ1ZmZlciAqLworCW1lbXNldCh0aGlzLT5vb2JfYnVmLCAweGZmLCBtdGQtPm9vYnNpemUgPDwgKHRoaXMtPnBoeXNfZXJhc2Vfc2hpZnQgLSB0aGlzLT5wYWdlX3NoaWZ0KSk7CisKKwkvKiBJZiBubyBkZWZhdWx0IHBsYWNlbWVudCBzY2hlbWUgaXMgZ2l2ZW4sIHNlbGVjdCBhbgorCSAqIGFwcHJvcHJpYXRlIG9uZSAqLworCWlmICghdGhpcy0+YXV0b29vYikgeworCQkvKiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGRlZmF1bHQgb29iIHBsYWNlbWVudCBzY2hlbWUgZm9yCisJCSAqIHBsYWNlbWVudCBhZ25vc3RpYyBmaWxlc3lzdGVtcyAqLworCQlzd2l0Y2ggKG10ZC0+b29ic2l6ZSkgeworCQljYXNlIDg6CisJCQl0aGlzLT5hdXRvb29iID0gJm5hbmRfb29iXzg7CisJCQlicmVhazsKKwkJY2FzZSAxNjoKKwkJCXRoaXMtPmF1dG9vb2IgPSAmbmFuZF9vb2JfMTY7CisJCQlicmVhazsKKwkJY2FzZSA2NDoKKwkJCXRoaXMtPmF1dG9vb2IgPSAmbmFuZF9vb2JfNjQ7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50ayAoS0VSTl9XQVJOSU5HICJObyBvb2Igc2NoZW1lIGRlZmluZWQgZm9yIG9vYnNpemUgJWRcbiIsCisJCQkJbXRkLT5vb2JzaXplKTsKKy8qCQkJQlVHKCk7ICovCisJCX0KKwl9CisKKwkvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBmb3IgdGhlIGZpbGVzeXN0ZW0gdG8gcGxhY2UgZnMgZGVwZW5kZW5kCisJICogb29iIGRhdGEgKi8KKwlpZiAodGhpcy0+b3B0aW9ucyAmIE5BTkRfQlVTV0lEVEhfMTYpIHsKKwkJbXRkLT5vb2JhdmFpbCA9IG10ZC0+b29ic2l6ZSAtICh0aGlzLT5hdXRvb29iLT5lY2NieXRlcyArIDIpOworCQlpZiAodGhpcy0+YXV0b29vYi0+ZWNjYnl0ZXMgJiAweDAxKQorCQkJbXRkLT5vb2JhdmFpbC0tOworCX0gZWxzZQorCQltdGQtPm9vYmF2YWlsID0gbXRkLT5vb2JzaXplIC0gKHRoaXMtPmF1dG9vb2ItPmVjY2J5dGVzICsgMSk7CisKKwkvKgorCSAqIGNoZWNrIEVDQyBtb2RlLCBkZWZhdWx0IHRvIHNvZnR3YXJlCisJICogaWYgM2J5dGUvNTEyYnl0ZSBoYXJkd2FyZSBFQ0MgaXMgc2VsZWN0ZWQgYW5kIHdlIGhhdmUgMjU2IGJ5dGUgcGFnZXNpemUKKwkgKiBmYWxsYmFjayB0byBzb2Z0d2FyZSBFQ0MKKwkqLworCXRoaXMtPmVjY3NpemUgPSAyNTY7CS8qIHNldCBkZWZhdWx0IGVjY3NpemUgKi8KKwl0aGlzLT5lY2NieXRlcyA9IDM7CisKKwlzd2l0Y2ggKHRoaXMtPmVjY21vZGUpIHsKKwljYXNlIE5BTkRfRUNDX0hXMTJfMjA0ODoKKwkJaWYgKG10ZC0+b29iYmxvY2sgPCAyMDQ4KSB7CisJCQlwcmludGsoS0VSTl9XQVJOSU5HICIyMDQ4IGJ5dGUgSFcgRUNDIG5vdCBwb3NzaWJsZSBvbiAlZCBieXRlIHBhZ2Ugc2l6ZSwgZmFsbGJhY2sgdG8gU1cgRUNDXG4iLAorCQkJICAgICAgIG10ZC0+b29iYmxvY2spOworCQkJdGhpcy0+ZWNjbW9kZSA9IE5BTkRfRUNDX1NPRlQ7CisJCQl0aGlzLT5jYWxjdWxhdGVfZWNjID0gbmFuZF9jYWxjdWxhdGVfZWNjOworCQkJdGhpcy0+Y29ycmVjdF9kYXRhID0gbmFuZF9jb3JyZWN0X2RhdGE7CisJCX0gZWxzZQorCQkJdGhpcy0+ZWNjc2l6ZSA9IDIwNDg7CisJCWJyZWFrOworCisJY2FzZSBOQU5EX0VDQ19IVzNfNTEyOgorCWNhc2UgTkFORF9FQ0NfSFc2XzUxMjoKKwljYXNlIE5BTkRfRUNDX0hXOF81MTI6CisJCWlmIChtdGQtPm9vYmJsb2NrID09IDI1NikgeworCQkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIjUxMiBieXRlIEhXIEVDQyBub3QgcG9zc2libGUgb24gMjU2IEJ5dGUgcGFnZXNpemUsIGZhbGxiYWNrIHRvIFNXIEVDQyBcbiIpOworCQkJdGhpcy0+ZWNjbW9kZSA9IE5BTkRfRUNDX1NPRlQ7CisJCQl0aGlzLT5jYWxjdWxhdGVfZWNjID0gbmFuZF9jYWxjdWxhdGVfZWNjOworCQkJdGhpcy0+Y29ycmVjdF9kYXRhID0gbmFuZF9jb3JyZWN0X2RhdGE7CisJCX0gZWxzZQorCQkJdGhpcy0+ZWNjc2l6ZSA9IDUxMjsgLyogc2V0IGVjY3NpemUgdG8gNTEyICovCisJCWJyZWFrOworCisJY2FzZSBOQU5EX0VDQ19IVzNfMjU2OgorCQlicmVhazsKKworCWNhc2UgTkFORF9FQ0NfTk9ORToKKwkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIk5BTkRfRUNDX05PTkUgc2VsZWN0ZWQgYnkgYm9hcmQgZHJpdmVyLiBUaGlzIGlzIG5vdCByZWNvbW1lbmRlZCAhIVxuIik7CisJCXRoaXMtPmVjY21vZGUgPSBOQU5EX0VDQ19OT05FOworCQlicmVhazsKKworCWNhc2UgTkFORF9FQ0NfU09GVDoKKwkJdGhpcy0+Y2FsY3VsYXRlX2VjYyA9IG5hbmRfY2FsY3VsYXRlX2VjYzsKKwkJdGhpcy0+Y29ycmVjdF9kYXRhID0gbmFuZF9jb3JyZWN0X2RhdGE7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIkludmFsaWQgTkFORF9FQ0NfTU9ERSAlZFxuIiwgdGhpcy0+ZWNjbW9kZSk7CisvKgkJQlVHKCk7ICovCisJfQorCisJLyogQ2hlY2sgaGFyZHdhcmUgZWNjIGZ1bmN0aW9uIGF2YWlsYWJpbGl0eSBhbmQgYWRqdXN0IG51bWJlciBvZiBlY2MgYnl0ZXMgcGVyCisJICogY2FsY3VsYXRpb24gc3RlcAorCSovCisJc3dpdGNoICh0aGlzLT5lY2Ntb2RlKSB7CisJY2FzZSBOQU5EX0VDQ19IVzEyXzIwNDg6CisJCXRoaXMtPmVjY2J5dGVzICs9IDQ7CisJY2FzZSBOQU5EX0VDQ19IVzhfNTEyOgorCQl0aGlzLT5lY2NieXRlcyArPSAyOworCWNhc2UgTkFORF9FQ0NfSFc2XzUxMjoKKwkJdGhpcy0+ZWNjYnl0ZXMgKz0gMzsKKwljYXNlIE5BTkRfRUNDX0hXM181MTI6CisJY2FzZSBOQU5EX0VDQ19IVzNfMjU2OgorCQlpZiAodGhpcy0+Y2FsY3VsYXRlX2VjYyAmJiB0aGlzLT5jb3JyZWN0X2RhdGEgJiYgdGhpcy0+ZW5hYmxlX2h3ZWNjKQorCQkJYnJlYWs7CisJCXByaW50ayAoS0VSTl9XQVJOSU5HICJObyBFQ0MgZnVuY3Rpb25zIHN1cHBsaWVkLCBIYXJkd2FyZSBFQ0Mgbm90IHBvc3NpYmxlXG4iKTsKKy8qCQlCVUcoKTsJKi8KKwl9CisKKwltdGQtPmVjY3NpemUgPSB0aGlzLT5lY2NzaXplOworCisJLyogU2V0IHRoZSBudW1iZXIgb2YgcmVhZCAvIHdyaXRlIHN0ZXBzIGZvciBvbmUgcGFnZSB0byBlbnN1cmUgRUNDIGdlbmVyYXRpb24gKi8KKwlzd2l0Y2ggKHRoaXMtPmVjY21vZGUpIHsKKwljYXNlIE5BTkRfRUNDX0hXMTJfMjA0ODoKKwkJdGhpcy0+ZWNjc3RlcHMgPSBtdGQtPm9vYmJsb2NrIC8gMjA0ODsKKwkJYnJlYWs7CisJY2FzZSBOQU5EX0VDQ19IVzNfNTEyOgorCWNhc2UgTkFORF9FQ0NfSFc2XzUxMjoKKwljYXNlIE5BTkRfRUNDX0hXOF81MTI6CisJCXRoaXMtPmVjY3N0ZXBzID0gbXRkLT5vb2JibG9jayAvIDUxMjsKKwkJYnJlYWs7CisJY2FzZSBOQU5EX0VDQ19IVzNfMjU2OgorCWNhc2UgTkFORF9FQ0NfU09GVDoKKwkJdGhpcy0+ZWNjc3RlcHMgPSBtdGQtPm9vYmJsb2NrIC8gMjU2OworCQlicmVhazsKKworCWNhc2UgTkFORF9FQ0NfTk9ORToKKwkJdGhpcy0+ZWNjc3RlcHMgPSAxOworCQlicmVhazsKKwl9CisKKy8qIFhYWCBVLUJPT1QgWFhYICovCisjaWYgMAorCS8qIEluaXRpYWxpemUgc3RhdGUsIHdhaXRxdWV1ZSBhbmQgc3BpbmxvY2sgKi8KKwl0aGlzLT5zdGF0ZSA9IEZMX1JFQURZOworCWluaXRfd2FpdHF1ZXVlX2hlYWQgKCZ0aGlzLT53cSk7CisJc3Bpbl9sb2NrX2luaXQgKCZ0aGlzLT5jaGlwX2xvY2spOworI2VuZGlmCisKKwkvKiBEZS1zZWxlY3QgdGhlIGRldmljZSAqLworCXRoaXMtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOworCisJLyogSW52YWxpZGF0ZSB0aGUgcGFnZWJ1ZmZlciByZWZlcmVuY2UgKi8KKwl0aGlzLT5wYWdlYnVmID0gLTE7CisKKwkvKiBGaWxsIGluIHJlbWFpbmluZyBNVEQgZHJpdmVyIGRhdGEgKi8KKwltdGQtPnR5cGUgPSBNVERfTkFOREZMQVNIOworCW10ZC0+ZmxhZ3MgPSBNVERfQ0FQX05BTkRGTEFTSCB8IE1URF9FQ0M7CisJbXRkLT5lY2N0eXBlID0gTVREX0VDQ19TVzsKKwltdGQtPmVyYXNlID0gbmFuZF9lcmFzZTsKKwltdGQtPnBvaW50ID0gTlVMTDsKKwltdGQtPnVucG9pbnQgPSBOVUxMOworCW10ZC0+cmVhZCA9IG5hbmRfcmVhZDsKKwltdGQtPndyaXRlID0gbmFuZF93cml0ZTsKKwltdGQtPnJlYWRfZWNjID0gbmFuZF9yZWFkX2VjYzsKKwltdGQtPndyaXRlX2VjYyA9IG5hbmRfd3JpdGVfZWNjOworCW10ZC0+cmVhZF9vb2IgPSBuYW5kX3JlYWRfb29iOworCW10ZC0+d3JpdGVfb29iID0gbmFuZF93cml0ZV9vb2I7CisvKiBYWFggVS1CT09UIFhYWCAqLworI2lmIDAKKwltdGQtPnJlYWR2ID0gTlVMTDsKKwltdGQtPndyaXRldiA9IG5hbmRfd3JpdGV2OworCW10ZC0+d3JpdGV2X2VjYyA9IG5hbmRfd3JpdGV2X2VjYzsKKyNlbmRpZgorCW10ZC0+c3luYyA9IG5hbmRfc3luYzsKKy8qIFhYWCBVLUJPT1QgWFhYICovCisjaWYgMAorCW10ZC0+bG9jayA9IE5VTEw7CisJbXRkLT51bmxvY2sgPSBOVUxMOworCW10ZC0+c3VzcGVuZCA9IE5VTEw7CisJbXRkLT5yZXN1bWUgPSBOVUxMOworI2VuZGlmCisJbXRkLT5ibG9ja19pc2JhZCA9IG5hbmRfYmxvY2tfaXNiYWQ7CisJbXRkLT5ibG9ja19tYXJrYmFkID0gbmFuZF9ibG9ja19tYXJrYmFkOworCisJLyogYW5kIG1ha2UgdGhlIGF1dG9vb2IgdGhlIGRlZmF1bHQgb25lICovCisJbWVtY3B5KCZtdGQtPm9vYmluZm8sIHRoaXMtPmF1dG9vb2IsIHNpemVvZihtdGQtPm9vYmluZm8pKTsKKy8qIFhYWCBVLUJPT1QgWFhYICovCisjaWYgMAorCW10ZC0+b3duZXIgPSBUSElTX01PRFVMRTsKKyNlbmRpZgorCS8qIEJ1aWxkIGJhZCBibG9jayB0YWJsZSAqLworCXJldHVybiB0aGlzLT5zY2FuX2JidCAobXRkKTsKK30KKworLyoqCisgKiBuYW5kX3JlbGVhc2UgLSBbTkFORCBJbnRlcmZhY2VdIEZyZWUgcmVzb3VyY2VzIGhlbGQgYnkgdGhlIE5BTkQgZGV2aWNlCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICovCit2b2lkIG5hbmRfcmVsZWFzZSAoc3RydWN0IG10ZF9pbmZvICptdGQpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKworI2lmZGVmIENPTkZJR19NVERfUEFSVElUSU9OUworCS8qIERlcmVnaXN0ZXIgcGFydGl0aW9ucyAqLworCWRlbF9tdGRfcGFydGl0aW9ucyAobXRkKTsKKyNlbmRpZgorCS8qIERlcmVnaXN0ZXIgdGhlIGRldmljZSAqLworLyogWFhYIFUtQk9PVCBYWFggKi8KKyNpZiAwCisJZGVsX210ZF9kZXZpY2UgKG10ZCk7CisjZW5kaWYKKwkvKiBGcmVlIGJhZCBibG9jayB0YWJsZSBtZW1vcnksIGlmIGFsbG9jYXRlZCAqLworCWlmICh0aGlzLT5iYnQpCisJCWtmcmVlICh0aGlzLT5iYnQpOworCS8qIEJ1ZmZlciBhbGxvY2F0ZWQgYnkgbmFuZF9zY2FuID8gKi8KKwlpZiAodGhpcy0+b3B0aW9ucyAmIE5BTkRfT09CQlVGX0FMTE9DKQorCQlrZnJlZSAodGhpcy0+b29iX2J1Zik7CisJLyogQnVmZmVyIGFsbG9jYXRlZCBieSBuYW5kX3NjYW4gPyAqLworCWlmICh0aGlzLT5vcHRpb25zICYgTkFORF9EQVRBQlVGX0FMTE9DKQorCQlrZnJlZSAodGhpcy0+ZGF0YV9idWYpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmFuZC9uYW5kX2JidC5jIGIvZHJpdmVycy9uYW5kL25hbmRfYmJ0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMxNjg3MgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmFuZC9uYW5kX2JidC5jCkBAIC0wLDAgKzEsMTA1NiBAQAorLyoKKyAqICBkcml2ZXJzL210ZC9uYW5kX2JidC5jCisgKgorICogIE92ZXJ2aWV3OgorICogICBCYWQgYmxvY2sgdGFibGUgc3VwcG9ydCBmb3IgdGhlIE5BTkQgZHJpdmVyCisgKgorICogIENvcHlyaWdodCAoQykgMjAwNCBUaG9tYXMgR2xlaXhuZXIgKHRnbHhAbGludXRyb25peC5kZSkKKyAqCisgKiAkSWQ6IG5hbmRfYmJ0LmMsdiAxLjI4IDIwMDQvMTEvMTMgMTA6MTk6MDkgZ2xlaXhuZXIgRXhwICQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIERlc2NyaXB0aW9uOgorICoKKyAqIFdoZW4gbmFuZF9zY2FuX2JidCBpcyBjYWxsZWQsIHRoZW4gaXQgdHJpZXMgdG8gZmluZCB0aGUgYmFkIGJsb2NrIHRhYmxlCisgKiBkZXBlbmRpbmcgb24gdGhlIG9wdGlvbnMgaW4gdGhlIGJidCBkZXNjcmlwdG9yKHMpLiBJZiBhIGJidCBpcyBmb3VuZAorICogdGhlbiB0aGUgY29udGVudHMgYXJlIHJlYWQgYW5kIHRoZSBtZW1vcnkgYmFzZWQgYmJ0IGlzIGNyZWF0ZWQuIElmIGEKKyAqIG1pcnJvcmVkIGJidCBpcyBzZWxlY3RlZCB0aGVuIHRoZSBtaXJyb3IgaXMgc2VhcmNoZWQgdG9vIGFuZCB0aGUKKyAqIHZlcnNpb25zIGFyZSBjb21wYXJlZC4gSWYgdGhlIG1pcnJvciBoYXMgYSBncmVhdGVyIHZlcnNpb24gbnVtYmVyCisgKiB0aGFuIHRoZSBtaXJyb3IgYmJ0IGlzIHVzZWQgdG8gYnVpbGQgdGhlIG1lbW9yeSBiYXNlZCBiYnQuCisgKiBJZiB0aGUgdGFibGVzIGFyZSBub3QgdmVyc2lvbmVkLCB0aGVuIHdlICJvciIgdGhlIGJhZCBibG9jayBpbmZvcm1hdGlvbi4KKyAqIElmIG9uZSBvZiB0aGUgYmJ0J3MgaXMgb3V0IG9mIGRhdGUgb3IgZG9lcyBub3QgZXhpc3QgaXQgaXMgKHJlKWNyZWF0ZWQuCisgKiBJZiBubyBiYnQgZXhpc3RzIGF0IGFsbCB0aGVuIHRoZSBkZXZpY2UgaXMgc2Nhbm5lZCBmb3IgZmFjdG9yeSBtYXJrZWQKKyAqIGdvb2QgLyBiYWQgYmxvY2tzIGFuZCB0aGUgYmFkIGJsb2NrIHRhYmxlcyBhcmUgY3JlYXRlZC4KKyAqCisgKiBGb3IgbWFudWZhY3R1cmVyIGNyZWF0ZWQgYmJ0cyBsaWtlIHRoZSBvbmUgZm91bmQgb24gTS1TWVMgRE9DIGRldmljZXMKKyAqIHRoZSBiYnQgaXMgc2VhcmNoZWQgYW5kIHJlYWQgYnV0IG5ldmVyIGNyZWF0ZWQKKyAqCisgKiBUaGUgYXV0b2dlbmVyYXRlZCBiYWQgYmxvY2sgdGFibGUgaXMgbG9jYXRlZCBpbiB0aGUgbGFzdCBnb29kIGJsb2NrcworICogb2YgdGhlIGRldmljZS4gVGhlIHRhYmxlIGlzIG1pcnJvcmVkLCBzbyBpdCBjYW4gYmUgdXBkYXRlZCBldmVudHVhbGx5LgorICogVGhlIHRhYmxlIGlzIG1hcmtlZCBpbiB0aGUgb29iIGFyZWEgd2l0aCBhbiBpZGVudCBwYXR0ZXJuIGFuZCBhIHZlcnNpb24KKyAqIG51bWJlciB3aGljaCBpbmRpY2F0ZXMgd2hpY2ggb2YgYm90aCB0YWJsZXMgaXMgbW9yZSB1cCB0byBkYXRlLgorICoKKyAqIFRoZSB0YWJsZSB1c2VzIDIgYml0cyBwZXIgYmxvY2sKKyAqIDExYjogCWJsb2NrIGlzIGdvb2QKKyAqIDAwYjogCWJsb2NrIGlzIGZhY3RvcnkgbWFya2VkIGJhZAorICogMDFiLCAxMGI6IAlibG9jayBpcyBtYXJrZWQgYmFkIGR1ZSB0byB3ZWFyCisgKgorICogVGhlIG1lbW9yeSBiYWQgYmxvY2sgdGFibGUgdXNlcyB0aGUgZm9sbG93aW5nIHNjaGVtZToKKyAqIDAwYjoJCWJsb2NrIGlzIGdvb2QKKyAqIDAxYjoJCWJsb2NrIGlzIG1hcmtlZCBiYWQgZHVlIHRvIHdlYXIKKyAqIDEwYjoJCWJsb2NrIGlzIHJlc2VydmVkICh0byBwcm90ZWN0IHRoZSBiYnQgYXJlYSkKKyAqIDExYjoJCWJsb2NrIGlzIGZhY3RvcnkgbWFya2VkIGJhZAorICoKKyAqIE11bHRpY2hpcCBkZXZpY2VzIGxpa2UgRE9DIHN0b3JlIHRoZSBiYWQgYmxvY2sgaW5mbyBwZXIgZmxvb3IuCisgKgorICogRm9sbG93aW5nIGFzc3VtcHRpb25zIGFyZSBtYWRlOgorICogLSBiYnRzIHN0YXJ0IGF0IGEgcGFnZSBib3VuZGFyeSwgaWYgYXV0b2xvY2F0ZWQgb24gYSBibG9jayBib3VuZGFyeQorICogLSB0aGUgc3BhY2UgbmVjY2VjYXJ5IGZvciBhIGJidCBpbiBGTEFTSCBkb2VzIG5vdCBleGNlZWQgYSBibG9jayBib3VuZGFyeQorICoKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisKKyNpZmRlZiBDRkdfTkFORF9MRUdBQ1kKKyNlcnJvciBDRkdfTkFORF9MRUdBQ1kgZGVmaW5lZCBpbiBhIGZpbGUgbm90IHVzaW5nIHRoZSBsZWdhY3kgTkFORCBzdXBwb3J0IQorI2VuZGlmCisKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQorCisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbmFuZC5oPgorCisjaW5jbHVkZSA8YXNtL2Vycm5vLmg+CisKKy8qKgorICogY2hlY2tfcGF0dGVybiAtIFtHRU5FUklDXSBjaGVjayBpZiBhIHBhdHRlcm4gaXMgaW4gdGhlIGJ1ZmZlcgorICogQGJ1ZjoJdGhlIGJ1ZmZlciB0byBzZWFyY2gKKyAqIEBsZW46CXRoZSBsZW5ndGggb2YgYnVmZmVyIHRvIHNlYXJjaAorICogQHBhZ2xlbjoJdGhlIHBhZ2VsZW5ndGgKKyAqIEB0ZDoJCXNlYXJjaCBwYXR0ZXJuIGRlc2NyaXB0b3IKKyAqCisgKiBDaGVjayBmb3IgYSBwYXR0ZXJuIGF0IHRoZSBnaXZlbiBwbGFjZS4gVXNlZCB0byBzZWFyY2ggYmFkIGJsb2NrCisgKiB0YWJsZXMgYW5kIGdvb2QgLyBiYWQgYmxvY2sgaWRlbnRpZmllcnMuCisgKiBJZiB0aGUgU0NBTl9FTVBUWSBvcHRpb24gaXMgc2V0IHRoZW4gY2hlY2ssIGlmIGFsbCBieXRlcyBleGNlcHQgdGhlCisgKiBwYXR0ZXJuIGFyZWEgY29udGFpbiAweGZmCisgKgorKi8KK3N0YXRpYyBpbnQgY2hlY2tfcGF0dGVybiAodWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgcGFnbGVuLCBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKnRkKQoreworCWludCBpLCBlbmQ7CisJdWludDhfdCAqcCA9IGJ1ZjsKKworCWVuZCA9IHBhZ2xlbiArIHRkLT5vZmZzOworCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1NDQU5FTVBUWSkgeworCQlmb3IgKGkgPSAwOyBpIDwgZW5kOyBpKyspIHsKKwkJCWlmIChwW2ldICE9IDB4ZmYpCisJCQkJcmV0dXJuIC0xOworCQl9CisJfQorCXAgKz0gZW5kOworCisJLyogQ29tcGFyZSB0aGUgcGF0dGVybiAqLworCWZvciAoaSA9IDA7IGkgPCB0ZC0+bGVuOyBpKyspIHsKKwkJaWYgKHBbaV0gIT0gdGQtPnBhdHRlcm5baV0pCisJCQlyZXR1cm4gLTE7CisJfQorCisJcCArPSB0ZC0+bGVuOworCWVuZCArPSB0ZC0+bGVuOworCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1NDQU5FTVBUWSkgeworCQlmb3IgKGkgPSBlbmQ7IGkgPCBsZW47IGkrKykgeworCQkJaWYgKCpwKysgIT0gMHhmZikKKwkJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogcmVhZF9iYnQgLSBbR0VORVJJQ10gUmVhZCB0aGUgYmFkIGJsb2NrIHRhYmxlIHN0YXJ0aW5nIGZyb20gcGFnZQorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBidWY6CXRlbXBvcmFyeSBidWZmZXIKKyAqIEBwYWdlOgl0aGUgc3RhcnRpbmcgcGFnZQorICogQG51bToJdGhlIG51bWJlciBvZiBiYnQgZGVzY3JpcHRvcnMgdG8gcmVhZAorICogQGJpdHM6CW51bWJlciBvZiBiaXRzIHBlciBibG9jaworICogQG9mZnM6CW9mZnNldCBpbiB0aGUgbWVtb3J5IHRhYmxlCisgKiBAcmVzZXJ2ZWRfYmxvY2tfY29kZToJUGF0dGVybiB0byBpZGVudGlmeSByZXNlcnZlZCBibG9ja3MKKyAqCisgKiBSZWFkIHRoZSBiYWQgYmxvY2sgdGFibGUgc3RhcnRpbmcgZnJvbSBwYWdlLgorICoKKyAqLworc3RhdGljIGludCByZWFkX2JidCAoc3RydWN0IG10ZF9pbmZvICptdGQsIHVpbnQ4X3QgKmJ1ZiwgaW50IHBhZ2UsIGludCBudW0sCisJaW50IGJpdHMsIGludCBvZmZzLCBpbnQgcmVzZXJ2ZWRfYmxvY2tfY29kZSkKK3sKKwlpbnQgcmVzLCBpLCBqLCBhY3QgPSAwOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc2l6ZV90IHJldGxlbiwgbGVuLCB0b3RsZW47CisJbG9mZl90IGZyb207CisJdWludDhfdCBtc2sgPSAodWludDhfdCkgKCgxIDw8IGJpdHMpIC0gMSk7CisKKwl0b3RsZW4gPSAobnVtICogYml0cykgPj4gMzsKKwlmcm9tID0gKChsb2ZmX3QpcGFnZSkgPDwgdGhpcy0+cGFnZV9zaGlmdDsKKworCXdoaWxlICh0b3RsZW4pIHsKKwkJbGVuID0gbWluICh0b3RsZW4sIChzaXplX3QpICgxIDw8IHRoaXMtPmJidF9lcmFzZV9zaGlmdCkpOworCQlyZXMgPSBtdGQtPnJlYWRfZWNjIChtdGQsIGZyb20sIGxlbiwgJnJldGxlbiwgYnVmLCBOVUxMLCB0aGlzLT5hdXRvb29iKTsKKwkJaWYgKHJlcyA8IDApIHsKKwkJCWlmIChyZXRsZW4gIT0gbGVuKSB7CisJCQkJcHJpbnRrIChLRVJOX0lORk8gIm5hbmRfYmJ0OiBFcnJvciByZWFkaW5nIGJhZCBibG9jayB0YWJsZVxuIik7CisJCQkJcmV0dXJuIHJlczsKKwkJCX0KKwkJCXByaW50ayAoS0VSTl9XQVJOSU5HICJuYW5kX2JidDogRUNDIGVycm9yIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrIHRhYmxlXG4iKTsKKwkJfQorCisJCS8qIEFuYWx5c2UgZGF0YSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJCXVpbnQ4X3QgZGF0ID0gYnVmW2ldOworCQkJZm9yIChqID0gMDsgaiA8IDg7IGogKz0gYml0cywgYWN0ICs9IDIpIHsKKwkJCQl1aW50OF90IHRtcCA9IChkYXQgPj4gaikgJiBtc2s7CisJCQkJaWYgKHRtcCA9PSBtc2spCisJCQkJCWNvbnRpbnVlOworCQkJCWlmIChyZXNlcnZlZF9ibG9ja19jb2RlICYmCisJCQkJICAgICh0bXAgPT0gcmVzZXJ2ZWRfYmxvY2tfY29kZSkpIHsKKwkJCQkJcHJpbnRrIChLRVJOX0RFQlVHICJuYW5kX3JlYWRfYmJ0OiBSZXNlcnZlZCBibG9jayBhdCAweCUwOHhcbiIsCisJCQkJCQkoKG9mZnMgPDwgMikgKyAoYWN0ID4+IDEpKSA8PCB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQpOworCQkJCQl0aGlzLT5iYnRbb2ZmcyArIChhY3QgPj4gMyldIHw9IDB4MiA8PCAoYWN0ICYgMHgwNik7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQkvKiBMZWF2ZSBpdCBmb3Igbm93LCBpZiBpdHMgbWF0dXJlZCB3ZSBjYW4gbW92ZSB0aGlzCisJCQkJICogbWVzc2FnZSB0byBNVERfREVCVUdfTEVWRUwwICovCisJCQkJcHJpbnRrIChLRVJOX0RFQlVHICJuYW5kX3JlYWRfYmJ0OiBCYWQgYmxvY2sgYXQgMHglMDh4XG4iLAorCQkJCQkoKG9mZnMgPDwgMikgKyAoYWN0ID4+IDEpKSA8PCB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQpOworCQkJCS8qIEZhY3RvcnkgbWFya2VkIGJhZCBvciB3b3JuIG91dCA/ICovCisJCQkJaWYgKHRtcCA9PSAwKQorCQkJCQl0aGlzLT5iYnRbb2ZmcyArIChhY3QgPj4gMyldIHw9IDB4MyA8PCAoYWN0ICYgMHgwNik7CisJCQkJZWxzZQorCQkJCQl0aGlzLT5iYnRbb2ZmcyArIChhY3QgPj4gMyldIHw9IDB4MSA8PCAoYWN0ICYgMHgwNik7CisJCQl9CisJCX0KKwkJdG90bGVuIC09IGxlbjsKKwkJZnJvbSArPSBsZW47CisJfQorCXJldHVybiAwOworfQorCisvKioKKyAqIHJlYWRfYWJzX2JidCAtIFtHRU5FUklDXSBSZWFkIHRoZSBiYWQgYmxvY2sgdGFibGUgc3RhcnRpbmcgYXQgYSBnaXZlbiBwYWdlCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQGJ1ZjoJdGVtcG9yYXJ5IGJ1ZmZlcgorICogQHRkOgkJZGVzY3JpcHRvciBmb3IgdGhlIGJhZCBibG9jayB0YWJsZQorICogQGNoaXA6CXJlYWQgdGhlIHRhYmxlIGZvciBhIHNwZWNpZmljIGNoaXAsIC0xIHJlYWQgYWxsIGNoaXBzLgorICoJCUFwcGxpZXMgb25seSBpZiBOQU5EX0JCVF9QRVJDSElQIG9wdGlvbiBpcyBzZXQKKyAqCisgKiBSZWFkIHRoZSBiYWQgYmxvY2sgdGFibGUgZm9yIGFsbCBjaGlwcyBzdGFydGluZyBhdCBhIGdpdmVuIHBhZ2UKKyAqIFdlIGFzc3VtZSB0aGF0IHRoZSBiYnQgYml0cyBhcmUgaW4gY29uc2VjdXRpdmUgb3JkZXIuCisqLworc3RhdGljIGludCByZWFkX2Fic19iYnQgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1aW50OF90ICpidWYsIHN0cnVjdCBuYW5kX2JidF9kZXNjciAqdGQsIGludCBjaGlwKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJaW50IHJlcyA9IDAsIGk7CisJaW50IGJpdHM7CisKKwliaXRzID0gdGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9OUkJJVFNfTVNLOworCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1BFUkNISVApIHsKKwkJaW50IG9mZnMgPSAwOworCQlmb3IgKGkgPSAwOyBpIDwgdGhpcy0+bnVtY2hpcHM7IGkrKykgeworCQkJaWYgKGNoaXAgPT0gLTEgfHwgY2hpcCA9PSBpKQorCQkJCXJlcyA9IHJlYWRfYmJ0IChtdGQsIGJ1ZiwgdGQtPnBhZ2VzW2ldLCB0aGlzLT5jaGlwc2l6ZSA+PiB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQsIGJpdHMsIG9mZnMsIHRkLT5yZXNlcnZlZF9ibG9ja19jb2RlKTsKKwkJCWlmIChyZXMpCisJCQkJcmV0dXJuIHJlczsKKwkJCW9mZnMgKz0gdGhpcy0+Y2hpcHNpemUgPj4gKHRoaXMtPmJidF9lcmFzZV9zaGlmdCArIDIpOworCQl9CisJfSBlbHNlIHsKKwkJcmVzID0gcmVhZF9iYnQgKG10ZCwgYnVmLCB0ZC0+cGFnZXNbMF0sIG10ZC0+c2l6ZSA+PiB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQsIGJpdHMsIDAsIHRkLT5yZXNlcnZlZF9ibG9ja19jb2RlKTsKKwkJaWYgKHJlcykKKwkJCXJldHVybiByZXM7CisJfQorCXJldHVybiAwOworfQorCisvKioKKyAqIHJlYWRfYWJzX2JidHMgLSBbR0VORVJJQ10gUmVhZCB0aGUgYmFkIGJsb2NrIHRhYmxlKHMpIGZvciBhbGwgY2hpcHMgc3RhcnRpbmcgYXQgYSBnaXZlbiBwYWdlCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQGJ1ZjoJdGVtcG9yYXJ5IGJ1ZmZlcgorICogQHRkOgkJZGVzY3JpcHRvciBmb3IgdGhlIGJhZCBibG9jayB0YWJsZQorICogQG1kOgkJZGVzY3JpcHRvciBmb3IgdGhlIGJhZCBibG9jayB0YWJsZSBtaXJyb3IKKyAqCisgKiBSZWFkIHRoZSBiYWQgYmxvY2sgdGFibGUocykgZm9yIGFsbCBjaGlwcyBzdGFydGluZyBhdCBhIGdpdmVuIHBhZ2UKKyAqIFdlIGFzc3VtZSB0aGF0IHRoZSBiYnQgYml0cyBhcmUgaW4gY29uc2VjdXRpdmUgb3JkZXIuCisgKgorKi8KK3N0YXRpYyBpbnQgcmVhZF9hYnNfYmJ0cyAoc3RydWN0IG10ZF9pbmZvICptdGQsIHVpbnQ4X3QgKmJ1Ziwgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICp0ZCwKKwlzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKm1kKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwkvKiBSZWFkIHRoZSBwcmltYXJ5IHZlcnNpb24sIGlmIGF2YWlsYWJsZSAqLworCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1ZFUlNJT04pIHsKKwkJbmFuZF9yZWFkX3JhdyAobXRkLCBidWYsIHRkLT5wYWdlc1swXSA8PCB0aGlzLT5wYWdlX3NoaWZ0LCBtdGQtPm9vYmJsb2NrLCBtdGQtPm9vYnNpemUpOworCQl0ZC0+dmVyc2lvblswXSA9IGJ1ZlttdGQtPm9vYmJsb2NrICsgdGQtPnZlcm9mZnNdOworCQlwcmludGsgKEtFUk5fREVCVUcgIkJhZCBibG9jayB0YWJsZSBhdCBwYWdlICVkLCB2ZXJzaW9uIDB4JTAyWFxuIiwgdGQtPnBhZ2VzWzBdLCB0ZC0+dmVyc2lvblswXSk7CisJfQorCisJLyogUmVhZCB0aGUgbWlycm9yIHZlcnNpb24sIGlmIGF2YWlsYWJsZSAqLworCWlmIChtZCAmJiAobWQtPm9wdGlvbnMgJiBOQU5EX0JCVF9WRVJTSU9OKSkgeworCQluYW5kX3JlYWRfcmF3IChtdGQsIGJ1ZiwgbWQtPnBhZ2VzWzBdIDw8IHRoaXMtPnBhZ2Vfc2hpZnQsIG10ZC0+b29iYmxvY2ssIG10ZC0+b29ic2l6ZSk7CisJCW1kLT52ZXJzaW9uWzBdID0gYnVmW210ZC0+b29iYmxvY2sgKyBtZC0+dmVyb2Zmc107CisJCXByaW50ayAoS0VSTl9ERUJVRyAiQmFkIGJsb2NrIHRhYmxlIGF0IHBhZ2UgJWQsIHZlcnNpb24gMHglMDJYXG4iLCBtZC0+cGFnZXNbMF0sIG1kLT52ZXJzaW9uWzBdKTsKKwl9CisKKwlyZXR1cm4gMTsKK30KKworLyoqCisgKiBjcmVhdGVfYmJ0IC0gW0dFTkVSSUNdIENyZWF0ZSBhIGJhZCBibG9jayB0YWJsZSBieSBzY2FubmluZyB0aGUgZGV2aWNlCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQGJ1ZjoJdGVtcG9yYXJ5IGJ1ZmZlcgorICogQGJkOgkJZGVzY3JpcHRvciBmb3IgdGhlIGdvb2QvYmFkIGJsb2NrIHNlYXJjaCBwYXR0ZXJuCisgKiBAY2hpcDoJY3JlYXRlIHRoZSB0YWJsZSBmb3IgYSBzcGVjaWZpYyBjaGlwLCAtMSByZWFkIGFsbCBjaGlwcy4KKyAqCQlBcHBsaWVzIG9ubHkgaWYgTkFORF9CQlRfUEVSQ0hJUCBvcHRpb24gaXMgc2V0CisgKgorICogQ3JlYXRlIGEgYmFkIGJsb2NrIHRhYmxlIGJ5IHNjYW5uaW5nIHRoZSBkZXZpY2UKKyAqIGZvciB0aGUgZ2l2ZW4gZ29vZC9iYWQgYmxvY2sgaWRlbnRpZnkgcGF0dGVybgorICovCitzdGF0aWMgdm9pZCBjcmVhdGVfYmJ0IChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdWludDhfdCAqYnVmLCBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKmJkLCBpbnQgY2hpcCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCWludCBpLCBqLCBudW1ibG9ja3MsIGxlbiwgc2NhbmxlbjsKKwlpbnQgc3RhcnRibG9jazsKKwlsb2ZmX3QgZnJvbTsKKwlzaXplX3QgcmVhZGxlbiwgb29ibGVuOworCisJaWYgKGJkLT5vcHRpb25zICYgTkFORF9CQlRfU0NBTkFMTFBBR0VTKQorCQlsZW4gPSAxIDw8ICh0aGlzLT5iYnRfZXJhc2Vfc2hpZnQgLSB0aGlzLT5wYWdlX3NoaWZ0KTsKKwllbHNlIHsKKwkJaWYgKGJkLT5vcHRpb25zICYgTkFORF9CQlRfU0NBTjJORFBBR0UpCisJCQlsZW4gPSAyOworCQllbHNlCisJCQlsZW4gPSAxOworCX0KKwlzY2FubGVuCT0gbXRkLT5vb2JibG9jayArIG10ZC0+b29ic2l6ZTsKKwlyZWFkbGVuID0gbGVuICogbXRkLT5vb2JibG9jazsKKwlvb2JsZW4gPSBsZW4gKiBtdGQtPm9vYnNpemU7CisKKwlpZiAoY2hpcCA9PSAtMSkgeworCQkvKiBOb3RlIHRoYXQgbnVtYmxvY2tzIGlzIDIgKiAocmVhbCBudW1ibG9ja3MpIGhlcmUsIHNlZSBpKz0yIGJlbG93IGFzIGl0CisJCSAqIG1ha2VzIHNoaWZ0aW5nIGFuZCBtYXNraW5nIGxlc3MgcGFpbmZ1bCAqLworCQludW1ibG9ja3MgPSBtdGQtPnNpemUgPj4gKHRoaXMtPmJidF9lcmFzZV9zaGlmdCAtIDEpOworCQlzdGFydGJsb2NrID0gMDsKKwkJZnJvbSA9IDA7CisJfSBlbHNlIHsKKwkJaWYgKGNoaXAgPj0gdGhpcy0+bnVtY2hpcHMpIHsKKwkJCXByaW50ayAoS0VSTl9XQVJOSU5HICJjcmVhdGVfYmJ0KCk6IGNoaXBuciAoJWQpID4gYXZhaWxhYmxlIGNoaXBzICglZClcbiIsCisJCQkJY2hpcCArIDEsIHRoaXMtPm51bWNoaXBzKTsKKwkJCXJldHVybjsKKwkJfQorCQludW1ibG9ja3MgPSB0aGlzLT5jaGlwc2l6ZSA+PiAodGhpcy0+YmJ0X2VyYXNlX3NoaWZ0IC0gMSk7CisJCXN0YXJ0YmxvY2sgPSBjaGlwICogbnVtYmxvY2tzOworCQludW1ibG9ja3MgKz0gc3RhcnRibG9jazsKKwkJZnJvbSA9IHN0YXJ0YmxvY2sgPDwgKHRoaXMtPmJidF9lcmFzZV9zaGlmdCAtIDEpOworCX0KKworCWZvciAoaSA9IHN0YXJ0YmxvY2s7IGkgPCBudW1ibG9ja3M7KSB7CisJCW5hbmRfcmVhZF9yYXcgKG10ZCwgYnVmLCBmcm9tLCByZWFkbGVuLCBvb2JsZW4pOworCQlmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHsKKwkJCWlmIChjaGVja19wYXR0ZXJuICgmYnVmW2ogKiBzY2FubGVuXSwgc2NhbmxlbiwgbXRkLT5vb2JibG9jaywgYmQpKSB7CisJCQkJdGhpcy0+YmJ0W2kgPj4gM10gfD0gMHgwMyA8PCAoaSAmIDB4Nik7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaSArPSAyOworCQlmcm9tICs9ICgxIDw8IHRoaXMtPmJidF9lcmFzZV9zaGlmdCk7CisJfQorfQorCisvKioKKyAqIHNlYXJjaF9iYnQgLSBbR0VORVJJQ10gc2NhbiB0aGUgZGV2aWNlIGZvciBhIHNwZWNpZmljIGJhZCBibG9jayB0YWJsZQorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBidWY6CXRlbXBvcmFyeSBidWZmZXIKKyAqIEB0ZDoJCWRlc2NyaXB0b3IgZm9yIHRoZSBiYWQgYmxvY2sgdGFibGUKKyAqCisgKiBSZWFkIHRoZSBiYWQgYmxvY2sgdGFibGUgYnkgc2VhcmNoaW5nIGZvciBhIGdpdmVuIGlkZW50IHBhdHRlcm4uCisgKiBTZWFyY2ggaXMgcHJlZm9ybWVkIGVpdGhlciBmcm9tIHRoZSBiZWdpbm5pbmcgdXAgb3IgZnJvbSB0aGUgZW5kIG9mCisgKiB0aGUgZGV2aWNlIGRvd253YXJkcy4gVGhlIHNlYXJjaCBzdGFydHMgYWx3YXlzIGF0IHRoZSBzdGFydCBvZiBhCisgKiBibG9jay4KKyAqIElmIHRoZSBvcHRpb24gTkFORF9CQlRfUEVSQ0hJUCBpcyBnaXZlbiwgZWFjaCBjaGlwIGlzIHNlYXJjaGVkCisgKiBmb3IgYSBiYnQsIHdoaWNoIGNvbnRhaW5zIHRoZSBiYWQgYmxvY2sgaW5mb3JtYXRpb24gb2YgdGhpcyBjaGlwLgorICogVGhpcyBpcyBuZWNjZWNhcnkgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciBjZXJ0YWluIERPQyBkZXZpY2VzLgorICoKKyAqIFRoZSBiYnQgaWRlbnQgcGF0dGVybiByZXNpZGVzIGluIHRoZSBvb2IgYXJlYSBvZiB0aGUgZmlyc3QgcGFnZQorICogaW4gYSBibG9jay4KKyAqLworc3RhdGljIGludCBzZWFyY2hfYmJ0IChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdWludDhfdCAqYnVmLCBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKnRkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJaW50IGksIGNoaXBzOworCWludCBiaXRzLCBzdGFydGJsb2NrLCBibG9jaywgZGlyOworCWludCBzY2FubGVuID0gbXRkLT5vb2JibG9jayArIG10ZC0+b29ic2l6ZTsKKwlpbnQgYmJ0YmxvY2tzOworCisJLyogU2VhcmNoIGRpcmVjdGlvbiB0b3AgLT4gZG93biA/ICovCisJaWYgKHRkLT5vcHRpb25zICYgTkFORF9CQlRfTEFTVEJMT0NLKSB7CisJCXN0YXJ0YmxvY2sgPSAobXRkLT5zaXplID4+IHRoaXMtPmJidF9lcmFzZV9zaGlmdCkgLTE7CisJCWRpciA9IC0xOworCX0gZWxzZSB7CisJCXN0YXJ0YmxvY2sgPSAwOworCQlkaXIgPSAxOworCX0KKworCS8qIERvIHdlIGhhdmUgYSBiYnQgcGVyIGNoaXAgPyAqLworCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1BFUkNISVApIHsKKwkJY2hpcHMgPSB0aGlzLT5udW1jaGlwczsKKwkJYmJ0YmxvY2tzID0gdGhpcy0+Y2hpcHNpemUgPj4gdGhpcy0+YmJ0X2VyYXNlX3NoaWZ0OworCQlzdGFydGJsb2NrICY9IGJidGJsb2NrcyAtIDE7CisJfSBlbHNlIHsKKwkJY2hpcHMgPSAxOworCQliYnRibG9ja3MgPSBtdGQtPnNpemUgPj4gdGhpcy0+YmJ0X2VyYXNlX3NoaWZ0OworCX0KKworCS8qIE51bWJlciBvZiBiaXRzIGZvciBlYWNoIGVyYXNlIGJsb2NrIGluIHRoZSBiYnQgKi8KKwliaXRzID0gdGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9OUkJJVFNfTVNLOworCisJZm9yIChpID0gMDsgaSA8IGNoaXBzOyBpKyspIHsKKwkJLyogUmVzZXQgdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworCQl0ZC0+dmVyc2lvbltpXSA9IDA7CisJCXRkLT5wYWdlc1tpXSA9IC0xOworCQkvKiBTY2FuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBibG9ja3MgKi8KKwkJZm9yIChibG9jayA9IDA7IGJsb2NrIDwgdGQtPm1heGJsb2NrczsgYmxvY2srKykgeworCQkJaW50IGFjdGJsb2NrID0gc3RhcnRibG9jayArIGRpciAqIGJsb2NrOworCQkJLyogUmVhZCBmaXJzdCBwYWdlICovCisJCQluYW5kX3JlYWRfcmF3IChtdGQsIGJ1ZiwgYWN0YmxvY2sgPDwgdGhpcy0+YmJ0X2VyYXNlX3NoaWZ0LCBtdGQtPm9vYmJsb2NrLCBtdGQtPm9vYnNpemUpOworCQkJaWYgKCFjaGVja19wYXR0ZXJuKGJ1Ziwgc2NhbmxlbiwgbXRkLT5vb2JibG9jaywgdGQpKSB7CisJCQkJdGQtPnBhZ2VzW2ldID0gYWN0YmxvY2sgPDwgKHRoaXMtPmJidF9lcmFzZV9zaGlmdCAtIHRoaXMtPnBhZ2Vfc2hpZnQpOworCQkJCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1ZFUlNJT04pIHsKKwkJCQkJdGQtPnZlcnNpb25baV0gPSBidWZbbXRkLT5vb2JibG9jayArIHRkLT52ZXJvZmZzXTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJc3RhcnRibG9jayArPSB0aGlzLT5jaGlwc2l6ZSA+PiB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQ7CisJfQorCS8qIENoZWNrLCBpZiB3ZSBmb3VuZCBhIGJidCBmb3IgZWFjaCByZXF1ZXN0ZWQgY2hpcCAqLworCWZvciAoaSA9IDA7IGkgPCBjaGlwczsgaSsrKSB7CisJCWlmICh0ZC0+cGFnZXNbaV0gPT0gLTEpCisJCQlwcmludGsgKEtFUk5fV0FSTklORyAiQmFkIGJsb2NrIHRhYmxlIG5vdCBmb3VuZCBmb3IgY2hpcCAlZFxuIiwgaSk7CisJCWVsc2UKKwkJCXByaW50ayAoS0VSTl9ERUJVRyAiQmFkIGJsb2NrIHRhYmxlIGZvdW5kIGF0IHBhZ2UgJWQsIHZlcnNpb24gMHglMDJYXG4iLCB0ZC0+cGFnZXNbaV0sIHRkLT52ZXJzaW9uW2ldKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogc2VhcmNoX3JlYWRfYmJ0cyAtIFtHRU5FUklDXSBzY2FuIHRoZSBkZXZpY2UgZm9yIGJhZCBibG9jayB0YWJsZShzKQorICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKKyAqIEBidWY6CXRlbXBvcmFyeSBidWZmZXIKKyAqIEB0ZDoJCWRlc2NyaXB0b3IgZm9yIHRoZSBiYWQgYmxvY2sgdGFibGUKKyAqIEBtZDoJCWRlc2NyaXB0b3IgZm9yIHRoZSBiYWQgYmxvY2sgdGFibGUgbWlycm9yCisgKgorICogU2VhcmNoIGFuZCByZWFkIHRoZSBiYWQgYmxvY2sgdGFibGUocykKKyovCitzdGF0aWMgaW50IHNlYXJjaF9yZWFkX2JidHMgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1aW50OF90ICpidWYsCisJc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICp0ZCwgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICptZCkKK3sKKwkvKiBTZWFyY2ggdGhlIHByaW1hcnkgdGFibGUgKi8KKwlzZWFyY2hfYmJ0IChtdGQsIGJ1ZiwgdGQpOworCisJLyogU2VhcmNoIHRoZSBtaXJyb3IgdGFibGUgKi8KKwlpZiAobWQpCisJCXNlYXJjaF9iYnQgKG10ZCwgYnVmLCBtZCk7CisKKwkvKiBGb3JjZSByZXN1bHQgY2hlY2sgKi8KKwlyZXR1cm4gMTsKK30KKworCisvKioKKyAqIHdyaXRlX2JidCAtIFtHRU5FUklDXSAoUmUpd3JpdGUgdGhlIGJhZCBibG9jayB0YWJsZQorICoKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAYnVmOgl0ZW1wb3JhcnkgYnVmZmVyCisgKiBAdGQ6CQlkZXNjcmlwdG9yIGZvciB0aGUgYmFkIGJsb2NrIHRhYmxlCisgKiBAbWQ6CQlkZXNjcmlwdG9yIGZvciB0aGUgYmFkIGJsb2NrIHRhYmxlIG1pcnJvcgorICogQGNoaXBzZWw6CXNlbGVjdG9yIGZvciBhIHNwZWNpZmljIGNoaXAsIC0xIGZvciBhbGwKKyAqCisgKiAoUmUpd3JpdGUgdGhlIGJhZCBibG9jayB0YWJsZQorICoKKyovCitzdGF0aWMgaW50IHdyaXRlX2JidCAoc3RydWN0IG10ZF9pbmZvICptdGQsIHVpbnQ4X3QgKmJ1ZiwKKwlzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKnRkLCBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKm1kLCBpbnQgY2hpcHNlbCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCXN0cnVjdCBuYW5kX29vYmluZm8gb29iaW5mbzsKKwlzdHJ1Y3QgZXJhc2VfaW5mbyBlaW5mbzsKKwlpbnQgaSwgaiwgcmVzLCBjaGlwID0gMDsKKwlpbnQgYml0cywgc3RhcnRibG9jaywgZGlyLCBwYWdlLCBvZmZzLCBudW1ibG9ja3MsIHNmdCwgc2Z0bXNrOworCWludCBucmNoaXBzLCBiYnRvZmZzLCBwYWdlb2ZmczsKKwl1aW50OF90IG1za1s0XTsKKwl1aW50OF90IHJjb2RlID0gdGQtPnJlc2VydmVkX2Jsb2NrX2NvZGU7CisJc2l6ZV90IHJldGxlbiwgbGVuID0gMDsKKwlsb2ZmX3QgdG87CisKKwlpZiAoIXJjb2RlKQorCQlyY29kZSA9IDB4ZmY7CisJLyogV3JpdGUgYmFkIGJsb2NrIHRhYmxlIHBlciBjaGlwIHJhdGhlciB0aGFuIHBlciBkZXZpY2UgPyAqLworCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1BFUkNISVApIHsKKwkJbnVtYmxvY2tzID0gKGludCkgKHRoaXMtPmNoaXBzaXplID4+IHRoaXMtPmJidF9lcmFzZV9zaGlmdCk7CisJCS8qIEZ1bGwgZGV2aWNlIHdyaXRlIG9yIHNwZWNpZmljIGNoaXAgPyAqLworCQlpZiAoY2hpcHNlbCA9PSAtMSkgeworCQkJbnJjaGlwcyA9IHRoaXMtPm51bWNoaXBzOworCQl9IGVsc2UgeworCQkJbnJjaGlwcyA9IGNoaXBzZWwgKyAxOworCQkJY2hpcCA9IGNoaXBzZWw7CisJCX0KKwl9IGVsc2UgeworCQludW1ibG9ja3MgPSAoaW50KSAobXRkLT5zaXplID4+IHRoaXMtPmJidF9lcmFzZV9zaGlmdCk7CisJCW5yY2hpcHMgPSAxOworCX0KKworCS8qIExvb3AgdGhyb3VnaCB0aGUgY2hpcHMgKi8KKwlmb3IgKDsgY2hpcCA8IG5yY2hpcHM7IGNoaXArKykgeworCisJCS8qIFRoZXJlIHdhcyBhbHJlYWR5IGEgdmVyc2lvbiBvZiB0aGUgdGFibGUsIHJldXNlIHRoZSBwYWdlCisJCSAqIFRoaXMgYXBwbGllcyBmb3IgYWJzb2x1dGUgcGxhY2VtZW50IHRvbywgYXMgd2UgaGF2ZSB0aGUKKwkJICogcGFnZSBuci4gaW4gdGQtPnBhZ2VzLgorCQkgKi8KKwkJaWYgKHRkLT5wYWdlc1tjaGlwXSAhPSAtMSkgeworCQkJcGFnZSA9IHRkLT5wYWdlc1tjaGlwXTsKKwkJCWdvdG8gd3JpdGU7CisJCX0KKworCQkvKiBBdXRvbWF0aWMgcGxhY2VtZW50IG9mIHRoZSBiYWQgYmxvY2sgdGFibGUgKi8KKwkJLyogU2VhcmNoIGRpcmVjdGlvbiB0b3AgLT4gZG93biA/ICovCisJCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX0xBU1RCTE9DSykgeworCQkJc3RhcnRibG9jayA9IG51bWJsb2NrcyAqIChjaGlwICsgMSkgLSAxOworCQkJZGlyID0gLTE7CisJCX0gZWxzZSB7CisJCQlzdGFydGJsb2NrID0gY2hpcCAqIG51bWJsb2NrczsKKwkJCWRpciA9IDE7CisJCX0KKworCQlmb3IgKGkgPSAwOyBpIDwgdGQtPm1heGJsb2NrczsgaSsrKSB7CisJCQlpbnQgYmxvY2sgPSBzdGFydGJsb2NrICsgZGlyICogaTsKKwkJCS8qIENoZWNrLCBpZiB0aGUgYmxvY2sgaXMgYmFkICovCisJCQlzd2l0Y2ggKCh0aGlzLT5iYnRbYmxvY2sgPj4gMl0gPj4gKDIgKiAoYmxvY2sgJiAweDAzKSkpICYgMHgwMykgeworCQkJY2FzZSAweDAxOgorCQkJY2FzZSAweDAzOgorCQkJCWNvbnRpbnVlOworCQkJfQorCQkJcGFnZSA9IGJsb2NrIDw8ICh0aGlzLT5iYnRfZXJhc2Vfc2hpZnQgLSB0aGlzLT5wYWdlX3NoaWZ0KTsKKwkJCS8qIENoZWNrLCBpZiB0aGUgYmxvY2sgaXMgdXNlZCBieSB0aGUgbWlycm9yIHRhYmxlICovCisJCQlpZiAoIW1kIHx8IG1kLT5wYWdlc1tjaGlwXSAhPSBwYWdlKQorCQkJCWdvdG8gd3JpdGU7CisJCX0KKwkJcHJpbnRrIChLRVJOX0VSUiAiTm8gc3BhY2UgbGVmdCB0byB3cml0ZSBiYWQgYmxvY2sgdGFibGVcbiIpOworCQlyZXR1cm4gLUVOT1NQQzsKK3dyaXRlOgorCisJCS8qIFNldCB1cCBzaGlmdCBjb3VudCBhbmQgbWFza3MgZm9yIHRoZSBmbGFzaCB0YWJsZSAqLworCQliaXRzID0gdGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9OUkJJVFNfTVNLOworCQlzd2l0Y2ggKGJpdHMpIHsKKwkJY2FzZSAxOiBzZnQgPSAzOyBzZnRtc2sgPSAweDA3OyBtc2tbMF0gPSAweDAwOyBtc2tbMV0gPSAweDAxOyBtc2tbMl0gPSB+cmNvZGU7IG1za1szXSA9IDB4MDE7IGJyZWFrOworCQljYXNlIDI6IHNmdCA9IDI7IHNmdG1zayA9IDB4MDY7IG1za1swXSA9IDB4MDA7IG1za1sxXSA9IDB4MDE7IG1za1syXSA9IH5yY29kZTsgbXNrWzNdID0gMHgwMzsgYnJlYWs7CisJCWNhc2UgNDogc2Z0ID0gMTsgc2Z0bXNrID0gMHgwNDsgbXNrWzBdID0gMHgwMDsgbXNrWzFdID0gMHgwQzsgbXNrWzJdID0gfnJjb2RlOyBtc2tbM10gPSAweDBmOyBicmVhazsKKwkJY2FzZSA4OiBzZnQgPSAwOyBzZnRtc2sgPSAweDAwOyBtc2tbMF0gPSAweDAwOyBtc2tbMV0gPSAweDBGOyBtc2tbMl0gPSB+cmNvZGU7IG1za1szXSA9IDB4ZmY7IGJyZWFrOworCQlkZWZhdWx0OiByZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWJidG9mZnMgPSBjaGlwICogKG51bWJsb2NrcyA+PiAyKTsKKworCQl0byA9ICgobG9mZl90KSBwYWdlKSA8PCB0aGlzLT5wYWdlX3NoaWZ0OworCisJCW1lbWNweSAoJm9vYmluZm8sIHRoaXMtPmF1dG9vb2IsIHNpemVvZihvb2JpbmZvKSk7CisJCW9vYmluZm8udXNlZWNjID0gTVREX05BTkRFQ0NfUExBQ0VPTkxZOworCisJCS8qIE11c3Qgd2Ugc2F2ZSB0aGUgYmxvY2sgY29udGVudHMgPyAqLworCQlpZiAodGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9TQVZFQ09OVEVOVCkgeworCQkJLyogTWFrZSBpdCBibG9jayBhbGlnbmVkICovCisJCQl0byAmPSB+KChsb2ZmX3QpICgoMSA8PCB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQpIC0gMSkpOworCQkJbGVuID0gMSA8PCB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQ7CisJCQlyZXMgPSBtdGQtPnJlYWRfZWNjIChtdGQsIHRvLCBsZW4sICZyZXRsZW4sIGJ1ZiwgJmJ1ZltsZW5dLCAmb29iaW5mbyk7CisJCQlpZiAocmVzIDwgMCkgeworCQkJCWlmIChyZXRsZW4gIT0gbGVuKSB7CisJCQkJCXByaW50ayAoS0VSTl9JTkZPICJuYW5kX2JidDogRXJyb3IgcmVhZGluZyBibG9jayBmb3Igd3JpdGluZyB0aGUgYmFkIGJsb2NrIHRhYmxlXG4iKTsKKwkJCQkJcmV0dXJuIHJlczsKKwkJCQl9CisJCQkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIm5hbmRfYmJ0OiBFQ0MgZXJyb3Igd2hpbGUgcmVhZGluZyBibG9jayBmb3Igd3JpdGluZyBiYWQgYmxvY2sgdGFibGVcbiIpOworCQkJfQorCQkJLyogQ2FsYyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIGJ1ZmZlciAqLworCQkJcGFnZW9mZnMgPSBwYWdlIC0gKGludCkodG8gPj4gdGhpcy0+cGFnZV9zaGlmdCk7CisJCQlvZmZzID0gcGFnZW9mZnMgPDwgdGhpcy0+cGFnZV9zaGlmdDsKKwkJCS8qIFByZXNldCB0aGUgYmJ0IGFyZWEgd2l0aCAweGZmICovCisJCQltZW1zZXQgKCZidWZbb2Zmc10sIDB4ZmYsIChzaXplX3QpKG51bWJsb2NrcyA+PiBzZnQpKTsKKwkJCS8qIFByZXNldCB0aGUgYmJ0J3Mgb29iIGFyZWEgd2l0aCAweGZmICovCisJCQltZW1zZXQgKCZidWZbbGVuICsgcGFnZW9mZnMgKiBtdGQtPm9vYnNpemVdLCAweGZmLAorCQkJCSgobGVuID4+IHRoaXMtPnBhZ2Vfc2hpZnQpIC0gcGFnZW9mZnMpICogbXRkLT5vb2JzaXplKTsKKwkJCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1ZFUlNJT04pIHsKKwkJCQlidWZbbGVuICsgKHBhZ2VvZmZzICogbXRkLT5vb2JzaXplKSArIHRkLT52ZXJvZmZzXSA9IHRkLT52ZXJzaW9uW2NoaXBdOworCQkJfQorCQl9IGVsc2UgeworCQkJLyogQ2FsYyBsZW5ndGggKi8KKwkJCWxlbiA9IChzaXplX3QpIChudW1ibG9ja3MgPj4gc2Z0KTsKKwkJCS8qIE1ha2UgaXQgcGFnZSBhbGlnbmVkICEgKi8KKwkJCWxlbiA9IChsZW4gKyAobXRkLT5vb2JibG9jay0xKSkgJiB+KG10ZC0+b29iYmxvY2stMSk7CisJCQkvKiBQcmVzZXQgdGhlIGJ1ZmZlciB3aXRoIDB4ZmYgKi8KKwkJCW1lbXNldCAoYnVmLCAweGZmLCBsZW4gKyAobGVuID4+IHRoaXMtPnBhZ2Vfc2hpZnQpICogbXRkLT5vb2JzaXplKTsKKwkJCW9mZnMgPSAwOworCQkJLyogUGF0dGVybiBpcyBsb2NhdGVkIGluIG9vYiBhcmVhIG9mIGZpcnN0IHBhZ2UgKi8KKwkJCW1lbWNweSAoJmJ1ZltsZW4gKyB0ZC0+b2Zmc10sIHRkLT5wYXR0ZXJuLCB0ZC0+bGVuKTsKKwkJCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1ZFUlNJT04pIHsKKwkJCQlidWZbbGVuICsgdGQtPnZlcm9mZnNdID0gdGQtPnZlcnNpb25bY2hpcF07CisJCQl9CisJCX0KKworCQkvKiB3YWxrIHRocm91Z2ggdGhlIG1lbW9yeSB0YWJsZSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnVtYmxvY2tzOyApIHsKKwkJCXVpbnQ4X3QgZGF0OworCQkJZGF0ID0gdGhpcy0+YmJ0W2JidG9mZnMgKyAoaSA+PiAyKV07CisJCQlmb3IgKGogPSAwOyBqIDwgNDsgaisrICwgaSsrKSB7CisJCQkJaW50IHNmdGNudCA9IChpIDw8ICgzIC0gc2Z0KSkgJiBzZnRtc2s7CisJCQkJLyogRG8gbm90IHN0b3JlIHRoZSByZXNlcnZlZCBiYnQgYmxvY2tzICEgKi8KKwkJCQlidWZbb2ZmcyArIChpID4+IHNmdCldICY9IH4obXNrW2RhdCAmIDB4MDNdIDw8IHNmdGNudCk7CisJCQkJZGF0ID4+PSAyOworCQkJfQorCQl9CisKKwkJbWVtc2V0ICgmZWluZm8sIDAsIHNpemVvZiAoZWluZm8pKTsKKwkJZWluZm8ubXRkID0gbXRkOworCQllaW5mby5hZGRyID0gKHVuc2lnbmVkIGxvbmcpIHRvOworCQllaW5mby5sZW4gPSAxIDw8IHRoaXMtPmJidF9lcmFzZV9zaGlmdDsKKwkJcmVzID0gbmFuZF9lcmFzZV9uYW5kIChtdGQsICZlaW5mbywgMSk7CisJCWlmIChyZXMgPCAwKSB7CisJCQlwcmludGsgKEtFUk5fV0FSTklORyAibmFuZF9iYnQ6IEVycm9yIGR1cmluZyBibG9jayBlcmFzZTogJWRcbiIsIHJlcyk7CisJCQlyZXR1cm4gcmVzOworCQl9CisKKwkJcmVzID0gbXRkLT53cml0ZV9lY2MgKG10ZCwgdG8sIGxlbiwgJnJldGxlbiwgYnVmLCAmYnVmW2xlbl0sICZvb2JpbmZvKTsKKwkJaWYgKHJlcyA8IDApIHsKKwkJCXByaW50ayAoS0VSTl9XQVJOSU5HICJuYW5kX2JidDogRXJyb3Igd2hpbGUgd3JpdGluZyBiYWQgYmxvY2sgdGFibGUgJWRcbiIsIHJlcyk7CisJCQlyZXR1cm4gcmVzOworCQl9CisJCXByaW50ayAoS0VSTl9ERUJVRyAiQmFkIGJsb2NrIHRhYmxlIHdyaXR0ZW4gdG8gMHglMDh4LCB2ZXJzaW9uIDB4JTAyWFxuIiwKKwkJCSh1bnNpZ25lZCBpbnQpIHRvLCB0ZC0+dmVyc2lvbltjaGlwXSk7CisKKwkJLyogTWFyayBpdCBhcyB1c2VkICovCisJCXRkLT5wYWdlc1tjaGlwXSA9IHBhZ2U7CisJfQorCXJldHVybiAwOworfQorCisvKioKKyAqIG5hbmRfbWVtb3J5X2JidCAtIFtHRU5FUklDXSBjcmVhdGUgYSBtZW1vcnkgYmFzZWQgYmFkIGJsb2NrIHRhYmxlCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQGJkOgkJZGVzY3JpcHRvciBmb3IgdGhlIGdvb2QvYmFkIGJsb2NrIHNlYXJjaCBwYXR0ZXJuCisgKgorICogVGhlIGZ1bmN0aW9uIGNyZWF0ZXMgYSBtZW1vcnkgYmFzZWQgYmJ0IGJ5IHNjYW5uaW5nIHRoZSBkZXZpY2UKKyAqIGZvciBtYW51ZmFjdHVyZXIgLyBzb2Z0d2FyZSBtYXJrZWQgZ29vZCAvIGJhZCBibG9ja3MKKyovCitzdGF0aWMgaW50IG5hbmRfbWVtb3J5X2JidCAoc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBuYW5kX2JidF9kZXNjciAqYmQpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKworCS8qIEVuc3VyZSB0aGF0IHdlIG9ubHkgc2NhbiBmb3IgdGhlIHBhdHRlcm4gYW5kIG5vdGhpbmcgZWxzZSAqLworCWJkLT5vcHRpb25zID0gMDsKKwljcmVhdGVfYmJ0IChtdGQsIHRoaXMtPmRhdGFfYnVmLCBiZCwgLTEpOworCXJldHVybiAwOworfQorCisvKioKKyAqIGNoZWNrX2NyZWF0ZSAtIFtHRU5FUklDXSBjcmVhdGUgYW5kIHdyaXRlIGJidChzKSBpZiBuZWNjZWNhcnkKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAYnVmOgl0ZW1wb3JhcnkgYnVmZmVyCisgKiBAYmQ6CQlkZXNjcmlwdG9yIGZvciB0aGUgZ29vZC9iYWQgYmxvY2sgc2VhcmNoIHBhdHRlcm4KKyAqCisgKiBUaGUgZnVuY3Rpb24gY2hlY2tzIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyBjYWxsIHRvIHJlYWRfYmJ0CisgKiBhbmQgY3JlYXRlcyAvIHVwZGF0ZXMgdGhlIGJidChzKSBpZiBuZWNjZWNhcnkKKyAqIENyZWF0aW9uIGlzIG5lY2NlY2FyeSBpZiBubyBiYnQgd2FzIGZvdW5kIGZvciB0aGUgY2hpcC9kZXZpY2UKKyAqIFVwZGF0ZSBpcyBuZWNjZWNhcnkgaWYgb25lIG9mIHRoZSB0YWJsZXMgaXMgbWlzc2luZyBvciB0aGUKKyAqIHZlcnNpb24gbnIuIG9mIG9uZSB0YWJsZSBpcyBsZXNzIHRoYW4gdGhlIG90aGVyCisqLworc3RhdGljIGludCBjaGVja19jcmVhdGUgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1aW50OF90ICpidWYsIHN0cnVjdCBuYW5kX2JidF9kZXNjciAqYmQpCit7CisJaW50IGksIGNoaXBzLCB3cml0ZW9wcywgY2hpcHNlbCwgcmVzOworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICp0ZCA9IHRoaXMtPmJidF90ZDsKKwlzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKm1kID0gdGhpcy0+YmJ0X21kOworCXN0cnVjdCBuYW5kX2JidF9kZXNjciAqcmQsICpyZDI7CisKKwkvKiBEbyB3ZSBoYXZlIGEgYmJ0IHBlciBjaGlwID8gKi8KKwlpZiAodGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9QRVJDSElQKQorCQljaGlwcyA9IHRoaXMtPm51bWNoaXBzOworCWVsc2UKKwkJY2hpcHMgPSAxOworCisJZm9yIChpID0gMDsgaSA8IGNoaXBzOyBpKyspIHsKKwkJd3JpdGVvcHMgPSAwOworCQlyZCA9IE5VTEw7CisJCXJkMiA9IE5VTEw7CisJCS8qIFBlciBjaGlwIG9yIHBlciBkZXZpY2UgPyAqLworCQljaGlwc2VsID0gKHRkLT5vcHRpb25zICYgTkFORF9CQlRfUEVSQ0hJUCkgPyBpIDogLTE7CisJCS8qIE1pcnJvcmVkIHRhYmxlIGF2aWxhYmxlID8gKi8KKwkJaWYgKG1kKSB7CisJCQlpZiAodGQtPnBhZ2VzW2ldID09IC0xICYmIG1kLT5wYWdlc1tpXSA9PSAtMSkgeworCQkJCXdyaXRlb3BzID0gMHgwMzsKKwkJCQlnb3RvIGNyZWF0ZTsKKwkJCX0KKworCQkJaWYgKHRkLT5wYWdlc1tpXSA9PSAtMSkgeworCQkJCXJkID0gbWQ7CisJCQkJdGQtPnZlcnNpb25baV0gPSBtZC0+dmVyc2lvbltpXTsKKwkJCQl3cml0ZW9wcyA9IDE7CisJCQkJZ290byB3cml0ZWNoZWNrOworCQkJfQorCisJCQlpZiAobWQtPnBhZ2VzW2ldID09IC0xKSB7CisJCQkJcmQgPSB0ZDsKKwkJCQltZC0+dmVyc2lvbltpXSA9IHRkLT52ZXJzaW9uW2ldOworCQkJCXdyaXRlb3BzID0gMjsKKwkJCQlnb3RvIHdyaXRlY2hlY2s7CisJCQl9CisKKwkJCWlmICh0ZC0+dmVyc2lvbltpXSA9PSBtZC0+dmVyc2lvbltpXSkgeworCQkJCXJkID0gdGQ7CisJCQkJaWYgKCEodGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9WRVJTSU9OKSkKKwkJCQkJcmQyID0gbWQ7CisJCQkJZ290byB3cml0ZWNoZWNrOworCQkJfQorCisJCQlpZiAoKChpbnQ4X3QpICh0ZC0+dmVyc2lvbltpXSAtIG1kLT52ZXJzaW9uW2ldKSkgPiAwKSB7CisJCQkJcmQgPSB0ZDsKKwkJCQltZC0+dmVyc2lvbltpXSA9IHRkLT52ZXJzaW9uW2ldOworCQkJCXdyaXRlb3BzID0gMjsKKwkJCX0gZWxzZSB7CisJCQkJcmQgPSBtZDsKKwkJCQl0ZC0+dmVyc2lvbltpXSA9IG1kLT52ZXJzaW9uW2ldOworCQkJCXdyaXRlb3BzID0gMTsKKwkJCX0KKworCQkJZ290byB3cml0ZWNoZWNrOworCisJCX0gZWxzZSB7CisJCQlpZiAodGQtPnBhZ2VzW2ldID09IC0xKSB7CisJCQkJd3JpdGVvcHMgPSAweDAxOworCQkJCWdvdG8gY3JlYXRlOworCQkJfQorCQkJcmQgPSB0ZDsKKwkJCWdvdG8gd3JpdGVjaGVjazsKKwkJfQorY3JlYXRlOgorCQkvKiBDcmVhdGUgdGhlIGJhZCBibG9jayB0YWJsZSBieSBzY2FubmluZyB0aGUgZGV2aWNlID8gKi8KKwkJaWYgKCEodGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9DUkVBVEUpKQorCQkJY29udGludWU7CisKKwkJLyogQ3JlYXRlIHRoZSB0YWJsZSBpbiBtZW1vcnkgYnkgc2Nhbm5pbmcgdGhlIGNoaXAocykgKi8KKwkJY3JlYXRlX2JidCAobXRkLCBidWYsIGJkLCBjaGlwc2VsKTsKKworCQl0ZC0+dmVyc2lvbltpXSA9IDE7CisJCWlmIChtZCkKKwkJCW1kLT52ZXJzaW9uW2ldID0gMTsKK3dyaXRlY2hlY2s6CisJCS8qIHJlYWQgYmFjayBmaXJzdCA/ICovCisJCWlmIChyZCkKKwkJCXJlYWRfYWJzX2JidCAobXRkLCBidWYsIHJkLCBjaGlwc2VsKTsKKwkJLyogSWYgdGhleSB3ZXJlbid0IHZlcnNpb25lZCwgcmVhZCBib3RoLiAqLworCQlpZiAocmQyKQorCQkJcmVhZF9hYnNfYmJ0IChtdGQsIGJ1ZiwgcmQyLCBjaGlwc2VsKTsKKworCQkvKiBXcml0ZSB0aGUgYmFkIGJsb2NrIHRhYmxlIHRvIHRoZSBkZXZpY2UgPyAqLworCQlpZiAoKHdyaXRlb3BzICYgMHgwMSkgJiYgKHRkLT5vcHRpb25zICYgTkFORF9CQlRfV1JJVEUpKSB7CisJCQlyZXMgPSB3cml0ZV9iYnQgKG10ZCwgYnVmLCB0ZCwgbWQsIGNoaXBzZWwpOworCQkJaWYgKHJlcyA8IDApCisJCQkJcmV0dXJuIHJlczsKKwkJfQorCisJCS8qIFdyaXRlIHRoZSBtaXJyb3IgYmFkIGJsb2NrIHRhYmxlIHRvIHRoZSBkZXZpY2UgPyAqLworCQlpZiAoKHdyaXRlb3BzICYgMHgwMikgJiYgbWQgJiYgKG1kLT5vcHRpb25zICYgTkFORF9CQlRfV1JJVEUpKSB7CisJCQlyZXMgPSB3cml0ZV9iYnQgKG10ZCwgYnVmLCBtZCwgdGQsIGNoaXBzZWwpOworCQkJaWYgKHJlcyA8IDApCisJCQkJcmV0dXJuIHJlczsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBtYXJrX2JidF9yZWdpb25zIC0gW0dFTkVSSUNdIG1hcmsgdGhlIGJhZCBibG9jayB0YWJsZSByZWdpb25zCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQHRkOgkJYmFkIGJsb2NrIHRhYmxlIGRlc2NyaXB0b3IKKyAqCisgKiBUaGUgYmFkIGJsb2NrIHRhYmxlIHJlZ2lvbnMgYXJlIG1hcmtlZCBhcyAiYmFkIiB0byBwcmV2ZW50CisgKiBhY2NpZGVudGFsIGVyYXN1cmVzIC8gd3JpdGVzLiBUaGUgcmVnaW9ucyBhcmUgaWRlbnRpZmllZCBieQorICogdGhlIG1hcmsgMHgwMi4KKyovCitzdGF0aWMgdm9pZCBtYXJrX2JidF9yZWdpb24gKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKnRkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisJaW50IGksIGosIGNoaXBzLCBibG9jaywgbnJibG9ja3MsIHVwZGF0ZTsKKwl1aW50OF90IG9sZHZhbCwgbmV3dmFsOworCisJLyogRG8gd2UgaGF2ZSBhIGJidCBwZXIgY2hpcCA/ICovCisJaWYgKHRkLT5vcHRpb25zICYgTkFORF9CQlRfUEVSQ0hJUCkgeworCQljaGlwcyA9IHRoaXMtPm51bWNoaXBzOworCQlucmJsb2NrcyA9IChpbnQpKHRoaXMtPmNoaXBzaXplID4+IHRoaXMtPmJidF9lcmFzZV9zaGlmdCk7CisJfSBlbHNlIHsKKwkJY2hpcHMgPSAxOworCQlucmJsb2NrcyA9IChpbnQpKG10ZC0+c2l6ZSA+PiB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBjaGlwczsgaSsrKSB7CisJCWlmICgodGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9BQlNQQUdFKSB8fAorCQkgICAgISh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1dSSVRFKSkgeworCQkgICAgCWlmICh0ZC0+cGFnZXNbaV0gPT0gLTEpIGNvbnRpbnVlOworCQkJYmxvY2sgPSB0ZC0+cGFnZXNbaV0gPj4gKHRoaXMtPmJidF9lcmFzZV9zaGlmdCAtIHRoaXMtPnBhZ2Vfc2hpZnQpOworCQkJYmxvY2sgPDw9IDE7CisJCQlvbGR2YWwgPSB0aGlzLT5iYnRbKGJsb2NrID4+IDMpXTsKKwkJCW5ld3ZhbCA9IG9sZHZhbCB8ICgweDIgPDwgKGJsb2NrICYgMHgwNikpOworCQkJdGhpcy0+YmJ0WyhibG9jayA+PiAzKV0gPSBuZXd2YWw7CisJCQlpZiAoKG9sZHZhbCAhPSBuZXd2YWwpICYmIHRkLT5yZXNlcnZlZF9ibG9ja19jb2RlKQorCQkJCW5hbmRfdXBkYXRlX2JidChtdGQsIGJsb2NrIDw8ICh0aGlzLT5iYnRfZXJhc2Vfc2hpZnQgLSAxKSk7CisJCQljb250aW51ZTsKKwkJfQorCQl1cGRhdGUgPSAwOworCQlpZiAodGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9MQVNUQkxPQ0spCisJCQlibG9jayA9ICgoaSArIDEpICogbnJibG9ja3MpIC0gdGQtPm1heGJsb2NrczsKKwkJZWxzZQorCQkJYmxvY2sgPSBpICogbnJibG9ja3M7CisJCWJsb2NrIDw8PSAxOworCQlmb3IgKGogPSAwOyBqIDwgdGQtPm1heGJsb2NrczsgaisrKSB7CisJCQlvbGR2YWwgPSB0aGlzLT5iYnRbKGJsb2NrID4+IDMpXTsKKwkJCW5ld3ZhbCA9IG9sZHZhbCB8ICgweDIgPDwgKGJsb2NrICYgMHgwNikpOworCQkJdGhpcy0+YmJ0WyhibG9jayA+PiAzKV0gPSBuZXd2YWw7CisJCQlpZiAob2xkdmFsICE9IG5ld3ZhbCkgdXBkYXRlID0gMTsKKwkJCWJsb2NrICs9IDI7CisJCX0KKwkJLyogSWYgd2Ugd2FudCByZXNlcnZlZCBibG9ja3MgdG8gYmUgcmVjb3JkZWQgdG8gZmxhc2gsIGFuZCBzb21lCisJCSAgIG5ldyBvbmVzIGhhdmUgYmVlbiBtYXJrZWQsIHRoZW4gd2UgbmVlZCB0byB1cGRhdGUgdGhlIHN0b3JlZAorCQkgICBiYnRzLiAgVGhpcyBzaG91bGQgb25seSBoYXBwZW4gb25jZS4gKi8KKwkJaWYgKHVwZGF0ZSAmJiB0ZC0+cmVzZXJ2ZWRfYmxvY2tfY29kZSkKKwkJCW5hbmRfdXBkYXRlX2JidChtdGQsIChibG9jayAtIDIpIDw8ICh0aGlzLT5iYnRfZXJhc2Vfc2hpZnQgLSAxKSk7CisJfQorfQorCisvKioKKyAqIG5hbmRfc2Nhbl9iYnQgLSBbTkFORCBJbnRlcmZhY2VdIHNjYW4sIGZpbmQsIHJlYWQgYW5kIG1heWJlIGNyZWF0ZSBiYWQgYmxvY2sgdGFibGUocykKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAYmQ6CQlkZXNjcmlwdG9yIGZvciB0aGUgZ29vZC9iYWQgYmxvY2sgc2VhcmNoIHBhdHRlcm4KKyAqCisgKiBUaGUgZnVuY3Rpb24gY2hlY2tzLCBpZiBhIGJhZCBibG9jayB0YWJsZShzKSBpcy9hcmUgYWxyZWFkeQorICogYXZhaWxhYmxlLiBJZiBub3QgaXQgc2NhbnMgdGhlIGRldmljZSBmb3IgbWFudWZhY3R1cmVyCisgKiBtYXJrZWQgZ29vZCAvIGJhZCBibG9ja3MgYW5kIHdyaXRlcyB0aGUgYmFkIGJsb2NrIHRhYmxlKHMpIHRvCisgKiB0aGUgc2VsZWN0ZWQgcGxhY2UuCisgKgorICogVGhlIGJhZCBibG9jayB0YWJsZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGhlcmUuIEl0IG11c3QgYmUgZnJlZWQKKyAqIGJ5IGNhbGxpbmcgdGhlIG5hbmRfZnJlZV9iYnQgZnVuY3Rpb24uCisgKgorKi8KK2ludCBuYW5kX3NjYW5fYmJ0IChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICpiZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzID0gbXRkLT5wcml2OworCWludCBsZW4sIHJlcyA9IDA7CisJdWludDhfdCAqYnVmOworCXN0cnVjdCBuYW5kX2JidF9kZXNjciAqdGQgPSB0aGlzLT5iYnRfdGQ7CisJc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICptZCA9IHRoaXMtPmJidF9tZDsKKworCWxlbiA9IG10ZC0+c2l6ZSA+PiAodGhpcy0+YmJ0X2VyYXNlX3NoaWZ0ICsgMik7CisJLyogQWxsb2NhdGUgbWVtb3J5ICgyYml0IHBlciBibG9jaykgKi8KKwl0aGlzLT5iYnQgPSBrbWFsbG9jIChsZW4sIEdGUF9LRVJORUwpOworCWlmICghdGhpcy0+YmJ0KSB7CisJCXByaW50ayAoS0VSTl9FUlIgIm5hbmRfc2Nhbl9iYnQ6IE91dCBvZiBtZW1vcnlcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJLyogQ2xlYXIgdGhlIG1lbW9yeSBiYWQgYmxvY2sgdGFibGUgKi8KKwltZW1zZXQgKHRoaXMtPmJidCwgMHgwMCwgbGVuKTsKKworCS8qIElmIG5vIHByaW1hcnkgdGFibGUgZGVjcmlwdG9yIGlzIGdpdmVuLCBzY2FuIHRoZSBkZXZpY2UKKwkgKiB0byBidWlsZCBhIG1lbW9yeSBiYXNlZCBiYWQgYmxvY2sgdGFibGUKKwkgKi8KKwlpZiAoIXRkKQorCQlyZXR1cm4gbmFuZF9tZW1vcnlfYmJ0KG10ZCwgYmQpOworCisJLyogQWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIGZvciBvbmUgZXJhc2VibG9jayBpbmNsLiBvb2IgKi8KKwlsZW4gPSAoMSA8PCB0aGlzLT5iYnRfZXJhc2Vfc2hpZnQpOworCWxlbiArPSAobGVuID4+IHRoaXMtPnBhZ2Vfc2hpZnQpICogbXRkLT5vb2JzaXplOworCWJ1ZiA9IGttYWxsb2MgKGxlbiwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWYpIHsKKwkJcHJpbnRrIChLRVJOX0VSUiAibmFuZF9iYnQ6IE91dCBvZiBtZW1vcnlcbiIpOworCQlrZnJlZSAodGhpcy0+YmJ0KTsKKwkJdGhpcy0+YmJ0ID0gTlVMTDsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJLyogSXMgdGhlIGJidCBhdCBhIGdpdmVuIHBhZ2UgPyAqLworCWlmICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX0FCU1BBR0UpIHsKKwkJcmVzID0gcmVhZF9hYnNfYmJ0cyAobXRkLCBidWYsIHRkLCBtZCk7CisJfSBlbHNlIHsKKwkJLyogU2VhcmNoIHRoZSBiYWQgYmxvY2sgdGFibGUgdXNpbmcgYSBwYXR0ZXJuIGluIG9vYiAqLworCQlyZXMgPSBzZWFyY2hfcmVhZF9iYnRzIChtdGQsIGJ1ZiwgdGQsIG1kKTsKKwl9CisKKwlpZiAocmVzKQorCQlyZXMgPSBjaGVja19jcmVhdGUgKG10ZCwgYnVmLCBiZCk7CisKKwkvKiBQcmV2ZW50IHRoZSBiYnQgcmVnaW9ucyBmcm9tIGVyYXNpbmcgLyB3cml0aW5nICovCisJbWFya19iYnRfcmVnaW9uIChtdGQsIHRkKTsKKwlpZiAobWQpCisJCW1hcmtfYmJ0X3JlZ2lvbiAobXRkLCBtZCk7CisKKwlrZnJlZSAoYnVmKTsKKwlyZXR1cm4gcmVzOworfQorCisKKy8qKgorICogbmFuZF91cGRhdGVfYmJ0IC0gW05BTkQgSW50ZXJmYWNlXSB1cGRhdGUgYmFkIGJsb2NrIHRhYmxlKHMpCisgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQorICogQG9mZnM6CXRoZSBvZmZzZXQgb2YgdGhlIG5ld2x5IG1hcmtlZCBibG9jaworICoKKyAqIFRoZSBmdW5jdGlvbiB1cGRhdGVzIHRoZSBiYWQgYmxvY2sgdGFibGUocykKKyovCitpbnQgbmFuZF91cGRhdGVfYmJ0IChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mZnMpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlpbnQgbGVuLCByZXMgPSAwLCB3cml0ZW9wcyA9IDA7CisJaW50IGNoaXAsIGNoaXBzZWw7CisJdWludDhfdCAqYnVmOworCXN0cnVjdCBuYW5kX2JidF9kZXNjciAqdGQgPSB0aGlzLT5iYnRfdGQ7CisJc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICptZCA9IHRoaXMtPmJidF9tZDsKKworCWlmICghdGhpcy0+YmJ0IHx8ICF0ZCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlsZW4gPSBtdGQtPnNpemUgPj4gKHRoaXMtPmJidF9lcmFzZV9zaGlmdCArIDIpOworCS8qIEFsbG9jYXRlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBmb3Igb25lIGVyYXNlYmxvY2sgaW5jbC4gb29iICovCisJbGVuID0gKDEgPDwgdGhpcy0+YmJ0X2VyYXNlX3NoaWZ0KTsKKwlsZW4gKz0gKGxlbiA+PiB0aGlzLT5wYWdlX3NoaWZ0KSAqIG10ZC0+b29ic2l6ZTsKKwlidWYgPSBrbWFsbG9jIChsZW4sIEdGUF9LRVJORUwpOworCWlmICghYnVmKSB7CisJCXByaW50ayAoS0VSTl9FUlIgIm5hbmRfdXBkYXRlX2JidDogT3V0IG9mIG1lbW9yeVxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCXdyaXRlb3BzID0gbWQgIT0gTlVMTCA/IDB4MDMgOiAweDAxOworCisJLyogRG8gd2UgaGF2ZSBhIGJidCBwZXIgY2hpcCA/ICovCisJaWYgKHRkLT5vcHRpb25zICYgTkFORF9CQlRfUEVSQ0hJUCkgeworCQljaGlwID0gKGludCkgKG9mZnMgPj4gdGhpcy0+Y2hpcF9zaGlmdCk7CisJCWNoaXBzZWwgPSBjaGlwOworCX0gZWxzZSB7CisJCWNoaXAgPSAwOworCQljaGlwc2VsID0gLTE7CisJfQorCisJdGQtPnZlcnNpb25bY2hpcF0rKzsKKwlpZiAobWQpCisJCW1kLT52ZXJzaW9uW2NoaXBdKys7CisKKwkvKiBXcml0ZSB0aGUgYmFkIGJsb2NrIHRhYmxlIHRvIHRoZSBkZXZpY2UgPyAqLworCWlmICgod3JpdGVvcHMgJiAweDAxKSAmJiAodGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9XUklURSkpIHsKKwkJcmVzID0gd3JpdGVfYmJ0IChtdGQsIGJ1ZiwgdGQsIG1kLCBjaGlwc2VsKTsKKwkJaWYgKHJlcyA8IDApCisJCQlnb3RvIG91dDsKKwl9CisJLyogV3JpdGUgdGhlIG1pcnJvciBiYWQgYmxvY2sgdGFibGUgdG8gdGhlIGRldmljZSA/ICovCisJaWYgKCh3cml0ZW9wcyAmIDB4MDIpICYmIG1kICYmIChtZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1dSSVRFKSkgeworCQlyZXMgPSB3cml0ZV9iYnQgKG10ZCwgYnVmLCBtZCwgdGQsIGNoaXBzZWwpOworCX0KKworb3V0OgorCWtmcmVlIChidWYpOworCXJldHVybiByZXM7Cit9CisKKy8qIERlZmluZSBzb21lIGdlbmVyaWMgYmFkIC8gZ29vZCBibG9jayBzY2FuIHBhdHRlcm4gd2hpY2ggYXJlIHVzZWQKKyAqIHdoaWxlIHNjYW5uaW5nIGEgZGV2aWNlIGZvciBmYWN0b3J5IG1hcmtlZCBnb29kIC8gYmFkIGJsb2NrcworICoKKyAqIFRoZSBtZW1vcnkgYmFzZWQgcGF0dGVybnMganVzdAorICovCitzdGF0aWMgdWludDhfdCBzY2FuX2ZmX3BhdHRlcm5bXSA9IHsgMHhmZiwgMHhmZiB9OworCitzdGF0aWMgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyIHNtYWxscGFnZV9tZW1vcnliYXNlZCA9IHsKKwkub3B0aW9ucyA9IDAsCisJLm9mZnMgPSA1LAorCS5sZW4gPSAxLAorCS5wYXR0ZXJuID0gc2Nhbl9mZl9wYXR0ZXJuCit9OworCitzdGF0aWMgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyIGxhcmdlcGFnZV9tZW1vcnliYXNlZCA9IHsKKwkub3B0aW9ucyA9IDAsCisJLm9mZnMgPSAwLAorCS5sZW4gPSAyLAorCS5wYXR0ZXJuID0gc2Nhbl9mZl9wYXR0ZXJuCit9OworCitzdGF0aWMgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyIHNtYWxscGFnZV9mbGFzaGJhc2VkID0geworCS5vcHRpb25zID0gTkFORF9CQlRfU0NBTkVNUFRZIHwgTkFORF9CQlRfU0NBTkFMTFBBR0VTLAorCS5vZmZzID0gNSwKKwkubGVuID0gMSwKKwkucGF0dGVybiA9IHNjYW5fZmZfcGF0dGVybgorfTsKKworc3RhdGljIHN0cnVjdCBuYW5kX2JidF9kZXNjciBsYXJnZXBhZ2VfZmxhc2hiYXNlZCA9IHsKKwkub3B0aW9ucyA9IE5BTkRfQkJUX1NDQU5FTVBUWSB8IE5BTkRfQkJUX1NDQU5BTExQQUdFUywKKwkub2ZmcyA9IDAsCisJLmxlbiA9IDIsCisJLnBhdHRlcm4gPSBzY2FuX2ZmX3BhdHRlcm4KK307CisKK3N0YXRpYyB1aW50OF90IHNjYW5fYWdhbmRfcGF0dGVybltdID0geyAweDFDLCAweDcxLCAweEM3LCAweDFDLCAweDcxLCAweEM3IH07CisKK3N0YXRpYyBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgYWdhbmRfZmxhc2hiYXNlZCA9IHsKKwkub3B0aW9ucyA9IE5BTkRfQkJUX1NDQU5FTVBUWSB8IE5BTkRfQkJUX1NDQU5BTExQQUdFUywKKwkub2ZmcyA9IDB4MjAsCisJLmxlbiA9IDYsCisJLnBhdHRlcm4gPSBzY2FuX2FnYW5kX3BhdHRlcm4KK307CisKKy8qIEdlbmVyaWMgZmxhc2ggYmJ0IGRlY3JpcHRvcnMKKyovCitzdGF0aWMgdWludDhfdCBiYnRfcGF0dGVybltdID0geydCJywgJ2InLCAndCcsICcwJyB9Oworc3RhdGljIHVpbnQ4X3QgbWlycm9yX3BhdHRlcm5bXSA9IHsnMScsICd0JywgJ2InLCAnQicgfTsKKworc3RhdGljIHN0cnVjdCBuYW5kX2JidF9kZXNjciBiYnRfbWFpbl9kZXNjciA9IHsKKwkub3B0aW9ucyA9IE5BTkRfQkJUX0xBU1RCTE9DSyB8IE5BTkRfQkJUX0NSRUFURSB8IE5BTkRfQkJUX1dSSVRFCisJCXwgTkFORF9CQlRfMkJJVCB8IE5BTkRfQkJUX1ZFUlNJT04gfCBOQU5EX0JCVF9QRVJDSElQLAorCS5vZmZzID0JOCwKKwkubGVuID0gNCwKKwkudmVyb2ZmcyA9IDEyLAorCS5tYXhibG9ja3MgPSA0LAorCS5wYXR0ZXJuID0gYmJ0X3BhdHRlcm4KK307CisKK3N0YXRpYyBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgYmJ0X21pcnJvcl9kZXNjciA9IHsKKwkub3B0aW9ucyA9IE5BTkRfQkJUX0xBU1RCTE9DSyB8IE5BTkRfQkJUX0NSRUFURSB8IE5BTkRfQkJUX1dSSVRFCisJCXwgTkFORF9CQlRfMkJJVCB8IE5BTkRfQkJUX1ZFUlNJT04gfCBOQU5EX0JCVF9QRVJDSElQLAorCS5vZmZzID0JOCwKKwkubGVuID0gNCwKKwkudmVyb2ZmcyA9IDEyLAorCS5tYXhibG9ja3MgPSA0LAorCS5wYXR0ZXJuID0gbWlycm9yX3BhdHRlcm4KK307CisKKy8qKgorICogbmFuZF9kZWZhdWx0X2JidCAtIFtOQU5EIEludGVyZmFjZV0gU2VsZWN0IGEgZGVmYXVsdCBiYWQgYmxvY2sgdGFibGUgZm9yIHRoZSBkZXZpY2UKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKgorICogVGhpcyBmdW5jdGlvbiBzZWxlY3RzIHRoZSBkZWZhdWx0IGJhZCBibG9jayB0YWJsZQorICogc3VwcG9ydCBmb3IgdGhlIGRldmljZSBhbmQgY2FsbHMgdGhlIG5hbmRfc2Nhbl9iYnQgZnVuY3Rpb24KKyAqCisqLworaW50IG5hbmRfZGVmYXVsdF9iYnQgKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSBtdGQtPnByaXY7CisKKwkvKiBEZWZhdWx0IGZvciBBRy1BTkQuIFdlIG11c3QgdXNlIGEgZmxhc2ggYmFzZWQKKwkgKiBiYWQgYmxvY2sgdGFibGUgYXMgdGhlIGRldmljZXMgaGF2ZSBmYWN0b3J5IG1hcmtlZAorCSAqIF9nb29kXyBibG9ja3MuIEVyYXNpbmcgdGhvc2UgYmxvY2tzIGxlYWRzIHRvIGxvc3MKKwkgKiBvZiB0aGUgZ29vZCAvIGJhZCBpbmZvcm1hdGlvbiwgc28gd2UgX211c3RfIHN0b3JlCisJICogdGhpcyBpbmZvcm1hdGlvbiBpbiBhIGdvb2QgLyBiYWQgdGFibGUgZHVyaW5nCisJICogc3RhcnR1cAorCSovCisJaWYgKHRoaXMtPm9wdGlvbnMgJiBOQU5EX0lTX0FORCkgeworCQkvKiBVc2UgdGhlIGRlZmF1bHQgcGF0dGVybiBkZXNjcmlwdG9ycyAqLworCQlpZiAoIXRoaXMtPmJidF90ZCkgeworCQkJdGhpcy0+YmJ0X3RkID0gJmJidF9tYWluX2Rlc2NyOworCQkJdGhpcy0+YmJ0X21kID0gJmJidF9taXJyb3JfZGVzY3I7CisJCX0KKwkJdGhpcy0+b3B0aW9ucyB8PSBOQU5EX1VTRV9GTEFTSF9CQlQ7CisJCXJldHVybiBuYW5kX3NjYW5fYmJ0IChtdGQsICZhZ2FuZF9mbGFzaGJhc2VkKTsKKwl9CisKKworCS8qIElzIGEgZmxhc2ggYmFzZWQgYmFkIGJsb2NrIHRhYmxlIHJlcXVlc3RlZCA/ICovCisJaWYgKHRoaXMtPm9wdGlvbnMgJiBOQU5EX1VTRV9GTEFTSF9CQlQpIHsKKwkJLyogVXNlIHRoZSBkZWZhdWx0IHBhdHRlcm4gZGVzY3JpcHRvcnMgKi8KKwkJaWYgKCF0aGlzLT5iYnRfdGQpIHsKKwkJCXRoaXMtPmJidF90ZCA9ICZiYnRfbWFpbl9kZXNjcjsKKwkJCXRoaXMtPmJidF9tZCA9ICZiYnRfbWlycm9yX2Rlc2NyOworCQl9CisJCWlmICghdGhpcy0+YmFkYmxvY2tfcGF0dGVybikgeworCQkJdGhpcy0+YmFkYmxvY2tfcGF0dGVybiA9IChtdGQtPm9vYmJsb2NrID4gNTEyKSA/CisJCQkJJmxhcmdlcGFnZV9mbGFzaGJhc2VkIDogJnNtYWxscGFnZV9mbGFzaGJhc2VkOworCQl9CisJfSBlbHNlIHsKKwkJdGhpcy0+YmJ0X3RkID0gTlVMTDsKKwkJdGhpcy0+YmJ0X21kID0gTlVMTDsKKwkJaWYgKCF0aGlzLT5iYWRibG9ja19wYXR0ZXJuKSB7CisJCQl0aGlzLT5iYWRibG9ja19wYXR0ZXJuID0gKG10ZC0+b29iYmxvY2sgPiA1MTIpID8KKwkJCQkmbGFyZ2VwYWdlX21lbW9yeWJhc2VkIDogJnNtYWxscGFnZV9tZW1vcnliYXNlZDsKKwkJfQorCX0KKwlyZXR1cm4gbmFuZF9zY2FuX2JidCAobXRkLCB0aGlzLT5iYWRibG9ja19wYXR0ZXJuKTsKK30KKworLyoqCisgKiBuYW5kX2lzYmFkX2JidCAtIFtOQU5EIEludGVyZmFjZV0gQ2hlY2sgaWYgYSBibG9jayBpcyBiYWQKKyAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCisgKiBAb2ZmczoJb2Zmc2V0IGluIHRoZSBkZXZpY2UKKyAqIEBhbGxvd2JidDoJYWxsb3cgYWNjZXNzIHRvIGJhZCBibG9jayB0YWJsZSByZWdpb24KKyAqCisgKi8KK2ludCBuYW5kX2lzYmFkX2JidCAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZmZzLCBpbnQgYWxsb3diYnQpCit7CisJc3RydWN0IG5hbmRfY2hpcCAqdGhpcyA9IG10ZC0+cHJpdjsKKwlpbnQgYmxvY2s7CisJdWludDhfdAlyZXM7CisKKwkvKiBHZXQgYmxvY2sgbnVtYmVyICogMiAqLworCWJsb2NrID0gKGludCkgKG9mZnMgPj4gKHRoaXMtPmJidF9lcmFzZV9zaGlmdCAtIDEpKTsKKwlyZXMgPSAodGhpcy0+YmJ0W2Jsb2NrID4+IDNdID4+IChibG9jayAmIDB4MDYpKSAmIDB4MDM7CisKKwlERUJVRyAoTVREX0RFQlVHX0xFVkVMMiwgIm5hbmRfaXNiYWRfYmJ0KCk6IGJidCBpbmZvIGZvciBvZmZzIDB4JTA4eDogKGJsb2NrICVkKSAweCUwMnhcbiIsCisJCSh1bnNpZ25lZCBpbnQpb2ZmcywgcmVzLCBibG9jayA+PiAxKTsKKworCXN3aXRjaCAoKGludClyZXMpIHsKKwljYXNlIDB4MDA6CXJldHVybiAwOworCWNhc2UgMHgwMToJcmV0dXJuIDE7CisJY2FzZSAweDAyOglyZXR1cm4gYWxsb3diYnQgPyAwIDogMTsKKwl9CisJcmV0dXJuIDE7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uYW5kL25hbmRfZWNjLmMgYi9kcml2ZXJzL25hbmQvbmFuZF9lY2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGQwZThiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uYW5kL25hbmRfZWNjLmMKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiBUaGlzIGZpbGUgY29udGFpbnMgYW4gRUNDIGFsZ29yaXRobSBmcm9tIFRvc2hpYmEgdGhhdCBkZXRlY3RzIGFuZAorICogY29ycmVjdHMgMSBiaXQgZXJyb3JzIGluIGEgMjU2IGJ5dGUgYmxvY2sgb2YgZGF0YS4KKyAqCisgKiBkcml2ZXJzL210ZC9uYW5kL25hbmRfZWNjLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCBTdGV2ZW4gSi4gSGlsbCAoc2poaWxsQHJlYWxpdHlkaWx1dGVkLmNvbSkKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFRvc2hpYmEgQW1lcmljYSBFbGVjdHJvbmljcyBDb21wb25lbnRzLCBJbmMuCisgKgorICogJElkOiBuYW5kX2VjYy5jLHYgMS4xNCAyMDA0LzA2LzE2IDE1OjM0OjM3IGdsZWl4bmVyIEV4cCAkCisgKgorICogVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9yIChhdCB5b3VyIG9wdGlvbikgYW55CisgKiBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBmaWxlOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQS4KKyAqCisgKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSB0ZW1wbGF0ZXMgb3IgdXNlCisgKiBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoZXNlIGZpbGVzLCBvciB5b3UgY29tcGlsZSB0aGVzZQorICogZmlsZXMgYW5kIGxpbmsgdGhlbSB3aXRoIG90aGVyIHdvcmtzIHRvIHByb2R1Y2UgYSB3b3JrIGJhc2VkIG9uIHRoZXNlCisgKiBmaWxlcywgdGhlc2UgZmlsZXMgZG8gbm90IGJ5IHRoZW1zZWx2ZXMgY2F1c2UgdGhlIHJlc3VsdGluZyB3b3JrIHRvIGJlCisgKiBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gSG93ZXZlciB0aGUgc291cmNlIGNvZGUgZm9yCisgKiB0aGVzZSBmaWxlcyBtdXN0IHN0aWxsIGJlIG1hZGUgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCBzZWN0aW9uICgzKQorICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICoKKyAqIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IGEgd29yayBiYXNlZCBvbgorICogdGhpcyBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2lmZGVmIENGR19OQU5EX0xFR0FDWQorI2Vycm9yIENGR19OQU5EX0xFR0FDWSBkZWZpbmVkIGluIGEgZmlsZSBub3QgdXNpbmcgdGhlIGxlZ2FjeSBOQU5EIHN1cHBvcnQhCisjZW5kaWYKKworI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCisKKyNpbmNsdWRlPGxpbnV4L210ZC9tdGQuaD4KKy8qCisgKiBQcmUtY2FsY3VsYXRlZCAyNTYtd2F5IDEgYnl0ZSBjb2x1bW4gcGFyaXR5CisgKi8KK3N0YXRpYyBjb25zdCB1X2NoYXIgbmFuZF9lY2NfcHJlY2FsY190YWJsZVtdID0geworCTB4MDAsIDB4NTUsIDB4NTYsIDB4MDMsIDB4NTksIDB4MGMsIDB4MGYsIDB4NWEsIDB4NWEsIDB4MGYsIDB4MGMsIDB4NTksIDB4MDMsIDB4NTYsIDB4NTUsIDB4MDAsCisJMHg2NSwgMHgzMCwgMHgzMywgMHg2NiwgMHgzYywgMHg2OSwgMHg2YSwgMHgzZiwgMHgzZiwgMHg2YSwgMHg2OSwgMHgzYywgMHg2NiwgMHgzMywgMHgzMCwgMHg2NSwKKwkweDY2LCAweDMzLCAweDMwLCAweDY1LCAweDNmLCAweDZhLCAweDY5LCAweDNjLCAweDNjLCAweDY5LCAweDZhLCAweDNmLCAweDY1LCAweDMwLCAweDMzLCAweDY2LAorCTB4MDMsIDB4NTYsIDB4NTUsIDB4MDAsIDB4NWEsIDB4MGYsIDB4MGMsIDB4NTksIDB4NTksIDB4MGMsIDB4MGYsIDB4NWEsIDB4MDAsIDB4NTUsIDB4NTYsIDB4MDMsCisJMHg2OSwgMHgzYywgMHgzZiwgMHg2YSwgMHgzMCwgMHg2NSwgMHg2NiwgMHgzMywgMHgzMywgMHg2NiwgMHg2NSwgMHgzMCwgMHg2YSwgMHgzZiwgMHgzYywgMHg2OSwKKwkweDBjLCAweDU5LCAweDVhLCAweDBmLCAweDU1LCAweDAwLCAweDAzLCAweDU2LCAweDU2LCAweDAzLCAweDAwLCAweDU1LCAweDBmLCAweDVhLCAweDU5LCAweDBjLAorCTB4MGYsIDB4NWEsIDB4NTksIDB4MGMsIDB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsIDB4NTUsIDB4MDAsIDB4MDMsIDB4NTYsIDB4MGMsIDB4NTksIDB4NWEsIDB4MGYsCisJMHg2YSwgMHgzZiwgMHgzYywgMHg2OSwgMHgzMywgMHg2NiwgMHg2NSwgMHgzMCwgMHgzMCwgMHg2NSwgMHg2NiwgMHgzMywgMHg2OSwgMHgzYywgMHgzZiwgMHg2YSwKKwkweDZhLCAweDNmLCAweDNjLCAweDY5LCAweDMzLCAweDY2LCAweDY1LCAweDMwLCAweDMwLCAweDY1LCAweDY2LCAweDMzLCAweDY5LCAweDNjLCAweDNmLCAweDZhLAorCTB4MGYsIDB4NWEsIDB4NTksIDB4MGMsIDB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsIDB4NTUsIDB4MDAsIDB4MDMsIDB4NTYsIDB4MGMsIDB4NTksIDB4NWEsIDB4MGYsCisJMHgwYywgMHg1OSwgMHg1YSwgMHgwZiwgMHg1NSwgMHgwMCwgMHgwMywgMHg1NiwgMHg1NiwgMHgwMywgMHgwMCwgMHg1NSwgMHgwZiwgMHg1YSwgMHg1OSwgMHgwYywKKwkweDY5LCAweDNjLCAweDNmLCAweDZhLCAweDMwLCAweDY1LCAweDY2LCAweDMzLCAweDMzLCAweDY2LCAweDY1LCAweDMwLCAweDZhLCAweDNmLCAweDNjLCAweDY5LAorCTB4MDMsIDB4NTYsIDB4NTUsIDB4MDAsIDB4NWEsIDB4MGYsIDB4MGMsIDB4NTksIDB4NTksIDB4MGMsIDB4MGYsIDB4NWEsIDB4MDAsIDB4NTUsIDB4NTYsIDB4MDMsCisJMHg2NiwgMHgzMywgMHgzMCwgMHg2NSwgMHgzZiwgMHg2YSwgMHg2OSwgMHgzYywgMHgzYywgMHg2OSwgMHg2YSwgMHgzZiwgMHg2NSwgMHgzMCwgMHgzMywgMHg2NiwKKwkweDY1LCAweDMwLCAweDMzLCAweDY2LCAweDNjLCAweDY5LCAweDZhLCAweDNmLCAweDNmLCAweDZhLCAweDY5LCAweDNjLCAweDY2LCAweDMzLCAweDMwLCAweDY1LAorCTB4MDAsIDB4NTUsIDB4NTYsIDB4MDMsIDB4NTksIDB4MGMsIDB4MGYsIDB4NWEsIDB4NWEsIDB4MGYsIDB4MGMsIDB4NTksIDB4MDMsIDB4NTYsIDB4NTUsIDB4MDAKK307CisKKworLyoqCisgKiBuYW5kX3RyYW5zX3Jlc3VsdCAtIFtHRU5FUklDXSBjcmVhdGUgbm9uLWludmVydGVkIEVDQworICogQHJlZzI6CWxpbmUgcGFyaXR5IHJlZyAyCisgKiBAcmVnMzoJbGluZSBwYXJpdHkgcmVnIDMKKyAqIEBlY2NfY29kZToJZWNjCisgKgorICogQ3JlYXRlcyBub24taW52ZXJ0ZWQgRUNDIGNvZGUgZnJvbSBsaW5lIHBhcml0eQorICovCitzdGF0aWMgdm9pZCBuYW5kX3RyYW5zX3Jlc3VsdCh1X2NoYXIgcmVnMiwgdV9jaGFyIHJlZzMsCisJdV9jaGFyICplY2NfY29kZSkKK3sKKwl1X2NoYXIgYSwgYiwgaSwgdG1wMSwgdG1wMjsKKworCS8qIEluaXRpYWxpemUgdmFyaWFibGVzICovCisJYSA9IGIgPSAweDgwOworCXRtcDEgPSB0bXAyID0gMDsKKworCS8qIENhbGN1bGF0ZSBmaXJzdCBFQ0MgYnl0ZSAqLworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJaWYgKHJlZzMgJiBhKQkJLyogTFAxNSwxMywxMSw5IC0tPiBlY2NfY29kZVswXSAqLworCQkJdG1wMSB8PSBiOworCQliID4+PSAxOworCQlpZiAocmVnMiAmIGEpCQkvKiBMUDE0LDEyLDEwLDggLS0+IGVjY19jb2RlWzBdICovCisJCQl0bXAxIHw9IGI7CisJCWIgPj49IDE7CisJCWEgPj49IDE7CisJfQorCisJLyogQ2FsY3VsYXRlIHNlY29uZCBFQ0MgYnl0ZSAqLworCWIgPSAweDgwOworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJaWYgKHJlZzMgJiBhKQkJLyogTFA3LDUsMywxIC0tPiBlY2NfY29kZVsxXSAqLworCQkJdG1wMiB8PSBiOworCQliID4+PSAxOworCQlpZiAocmVnMiAmIGEpCQkvKiBMUDYsNCwyLDAgLS0+IGVjY19jb2RlWzFdICovCisJCQl0bXAyIHw9IGI7CisJCWIgPj49IDE7CisJCWEgPj49IDE7CisJfQorCisJLyogU3RvcmUgdHdvIG9mIHRoZSBFQ0MgYnl0ZXMgKi8KKwllY2NfY29kZVswXSA9IHRtcDE7CisJZWNjX2NvZGVbMV0gPSB0bXAyOworfQorCisvKioKKyAqIG5hbmRfY2FsY3VsYXRlX2VjYyAtIFtOQU5EIEludGVyZmFjZV0gQ2FsY3VsYXRlIDMgYnl0ZSBFQ0MgY29kZSBmb3IgMjU2IGJ5dGUgYmxvY2sKKyAqIEBtdGQ6CU1URCBibG9jayBzdHJ1Y3R1cmUKKyAqIEBkYXQ6CXJhdyBkYXRhCisgKiBAZWNjX2NvZGU6CWJ1ZmZlciBmb3IgRUNDCisgKi8KK2ludCBuYW5kX2NhbGN1bGF0ZV9lY2Moc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHVfY2hhciAqZGF0LCB1X2NoYXIgKmVjY19jb2RlKQoreworCXVfY2hhciBpZHgsIHJlZzEsIHJlZzIsIHJlZzM7CisJaW50IGo7CisKKwkvKiBJbml0aWFsaXplIHZhcmlhYmxlcyAqLworCXJlZzEgPSByZWcyID0gcmVnMyA9IDA7CisJZWNjX2NvZGVbMF0gPSBlY2NfY29kZVsxXSA9IGVjY19jb2RlWzJdID0gMDsKKworCS8qIEJ1aWxkIHVwIGNvbHVtbiBwYXJpdHkgKi8KKwlmb3IoaiA9IDA7IGogPCAyNTY7IGorKykgeworCisJCS8qIEdldCBDUDAgLSBDUDUgZnJvbSB0YWJsZSAqLworCQlpZHggPSBuYW5kX2VjY19wcmVjYWxjX3RhYmxlW2RhdFtqXV07CisJCXJlZzEgXj0gKGlkeCAmIDB4M2YpOworCisJCS8qIEFsbCBiaXQgWE9SID0gMSA/ICovCisJCWlmIChpZHggJiAweDQwKSB7CisJCQlyZWczIF49ICh1X2NoYXIpIGo7CisJCQlyZWcyIF49IH4oKHVfY2hhcikgaik7CisJCX0KKwl9CisKKwkvKiBDcmVhdGUgbm9uLWludmVydGVkIEVDQyBjb2RlIGZyb20gbGluZSBwYXJpdHkgKi8KKwluYW5kX3RyYW5zX3Jlc3VsdChyZWcyLCByZWczLCBlY2NfY29kZSk7CisKKwkvKiBDYWxjdWxhdGUgZmluYWwgRUNDIGNvZGUgKi8KKwllY2NfY29kZVswXSA9IH5lY2NfY29kZVswXTsKKwllY2NfY29kZVsxXSA9IH5lY2NfY29kZVsxXTsKKwllY2NfY29kZVsyXSA9ICgofnJlZzEpIDw8IDIpIHwgMHgwMzsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBuYW5kX2NvcnJlY3RfZGF0YSAtIFtOQU5EIEludGVyZmFjZV0gRGV0ZWN0IGFuZCBjb3JyZWN0IGJpdCBlcnJvcihzKQorICogQG10ZDoJTVREIGJsb2NrIHN0cnVjdHVyZQorICogQGRhdDoJcmF3IGRhdGEgcmVhZCBmcm9tIHRoZSBjaGlwCisgKiBAcmVhZF9lY2M6CUVDQyBmcm9tIHRoZSBjaGlwCisgKiBAY2FsY19lY2M6CXRoZSBFQ0MgY2FsY3VsYXRlZCBmcm9tIHJhdyBkYXRhCisgKgorICogRGV0ZWN0IGFuZCBjb3JyZWN0IGEgMSBiaXQgZXJyb3IgZm9yIDI1NiBieXRlIGJsb2NrCisgKi8KK2ludCBuYW5kX2NvcnJlY3RfZGF0YShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyICpkYXQsIHVfY2hhciAqcmVhZF9lY2MsIHVfY2hhciAqY2FsY19lY2MpCit7CisJdV9jaGFyIGEsIGIsIGMsIGQxLCBkMiwgZDMsIGFkZCwgYml0LCBpOworCisJLyogRG8gZXJyb3IgZGV0ZWN0aW9uICovCisJZDEgPSBjYWxjX2VjY1swXSBeIHJlYWRfZWNjWzBdOworCWQyID0gY2FsY19lY2NbMV0gXiByZWFkX2VjY1sxXTsKKwlkMyA9IGNhbGNfZWNjWzJdIF4gcmVhZF9lY2NbMl07CisKKwlpZiAoKGQxIHwgZDIgfCBkMykgPT0gMCkgeworCQkvKiBObyBlcnJvcnMgKi8KKwkJcmV0dXJuIDA7CisJfQorCWVsc2UgeworCQlhID0gKGQxIF4gKGQxID4+IDEpKSAmIDB4NTU7CisJCWIgPSAoZDIgXiAoZDIgPj4gMSkpICYgMHg1NTsKKwkJYyA9IChkMyBeIChkMyA+PiAxKSkgJiAweDU0OworCisJCS8qIEZvdW5kIGFuZCB3aWxsIGNvcnJlY3Qgc2luZ2xlIGJpdCBlcnJvciBpbiB0aGUgZGF0YSAqLworCQlpZiAoKGEgPT0gMHg1NSkgJiYgKGIgPT0gMHg1NSkgJiYgKGMgPT0gMHg1NCkpIHsKKwkJCWMgPSAweDgwOworCQkJYWRkID0gMDsKKwkJCWEgPSAweDgwOworCQkJZm9yIChpPTA7IGk8NDsgaSsrKSB7CisJCQkJaWYgKGQxICYgYykKKwkJCQkJYWRkIHw9IGE7CisJCQkJYyA+Pj0gMjsKKwkJCQlhID4+PSAxOworCQkJfQorCQkJYyA9IDB4ODA7CisJCQlmb3IgKGk9MDsgaTw0OyBpKyspIHsKKwkJCQlpZiAoZDIgJiBjKQorCQkJCQlhZGQgfD0gYTsKKwkJCQljID4+PSAyOworCQkJCWEgPj49IDE7CisJCQl9CisJCQliaXQgPSAwOworCQkJYiA9IDB4MDQ7CisJCQljID0gMHg4MDsKKwkJCWZvciAoaT0wOyBpPDM7IGkrKykgeworCQkJCWlmIChkMyAmIGMpCisJCQkJCWJpdCB8PSBiOworCQkJCWMgPj49IDI7CisJCQkJYiA+Pj0gMTsKKwkJCX0KKwkJCWIgPSAweDAxOworCQkJYSA9IGRhdFthZGRdOworCQkJYSBePSAoYiA8PCBiaXQpOworCQkJZGF0W2FkZF0gPSBhOworCQkJcmV0dXJuIDE7CisJCX0gZWxzZSB7CisJCQlpID0gMDsKKwkJCXdoaWxlIChkMSkgeworCQkJCWlmIChkMSAmIDB4MDEpCisJCQkJCSsraTsKKwkJCQlkMSA+Pj0gMTsKKwkJCX0KKwkJCXdoaWxlIChkMikgeworCQkJCWlmIChkMiAmIDB4MDEpCisJCQkJCSsraTsKKwkJCQlkMiA+Pj0gMTsKKwkJCX0KKwkJCXdoaWxlIChkMykgeworCQkJCWlmIChkMyAmIDB4MDEpCisJCQkJCSsraTsKKwkJCQlkMyA+Pj0gMTsKKwkJCX0KKwkJCWlmIChpID09IDEpIHsKKwkJCQkvKiBFQ0MgQ29kZSBFcnJvciBDb3JyZWN0aW9uICovCisJCQkJcmVhZF9lY2NbMF0gPSBjYWxjX2VjY1swXTsKKwkJCQlyZWFkX2VjY1sxXSA9IGNhbGNfZWNjWzFdOworCQkJCXJlYWRfZWNjWzJdID0gY2FsY19lY2NbMl07CisJCQkJcmV0dXJuIDI7CisJCQl9CisJCQllbHNlIHsKKwkJCQkvKiBVbmNvcnJlY3RhYmxlIEVycm9yICovCisJCQkJcmV0dXJuIC0xOworCQkJfQorCQl9CisJfQorCisJLyogU2hvdWxkIG5ldmVyIGhhcHBlbiAqLworCXJldHVybiAtMTsKK30KKworI2VuZGlmCS8qIENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uYW5kL25hbmRfaWRzLmMgYi9kcml2ZXJzL25hbmQvbmFuZF9pZHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDRkMzcyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uYW5kL25hbmRfaWRzLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiAgZHJpdmVycy9tdGQvbmFuZGlkcy5jCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMiBUaG9tYXMgR2xlaXhuZXIgKHRnbHhAbGludXRyb25peC5kZSkKKyAgKgorICogJElkOiBuYW5kX2lkcy5jLHYgMS4xMCAyMDA0LzA1LzI2IDEzOjQwOjEyIGdsZWl4bmVyIEV4cCAkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorCisjaWZkZWYgQ0ZHX05BTkRfTEVHQUNZCisjZXJyb3IgQ0ZHX05BTkRfTEVHQUNZIGRlZmluZWQgaW4gYSBmaWxlIG5vdCB1c2luZyB0aGUgbGVnYWN5IE5BTkQgc3VwcG9ydCEKKyNlbmRpZgorCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKKworI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CisKKy8qCisqCUNoaXAgSUQgbGlzdAorKgorKglOYW1lLiBJRCBjb2RlLCBwYWdlc2l6ZSwgY2hpcHNpemUgaW4gTWVnYUJ5dGUsIGVyYXNlYmxvY2sgc2l6ZSwKKyoJb3B0aW9ucworKgorKiAJUGFnZXNpemU7IDAsIDI1NiwgNTEyCisqCTAgCWdldCB0aGlzIGluZm9ybWF0aW9uIGZyb20gdGhlIGV4dGVuZGVkIGNoaXAgSUQKKysJMjU2CTI1NiBCeXRlIHBhZ2Ugc2l6ZQorKgk1MTIJNTEyIEJ5dGUgcGFnZSBzaXplCisqLworc3RydWN0IG5hbmRfZmxhc2hfZGV2IG5hbmRfZmxhc2hfaWRzW10gPSB7CisJeyJOQU5EIDFNaUIgNVYgOC1iaXQiLCAJCTB4NmUsIDI1NiwgMSwgMHgxMDAwLCAwfSwKKwl7Ik5BTkQgMk1pQiA1ViA4LWJpdCIsIAkJMHg2NCwgMjU2LCAyLCAweDEwMDAsIDB9LAorCXsiTkFORCA0TWlCIDVWIDgtYml0IiwgCQkweDZiLCA1MTIsIDQsIDB4MjAwMCwgMH0sCisJeyJOQU5EIDFNaUIgMywzViA4LWJpdCIsIAkweGU4LCAyNTYsIDEsIDB4MTAwMCwgMH0sCisJeyJOQU5EIDFNaUIgMywzViA4LWJpdCIsIAkweGVjLCAyNTYsIDEsIDB4MTAwMCwgMH0sCisJeyJOQU5EIDJNaUIgMywzViA4LWJpdCIsIAkweGVhLCAyNTYsIDIsIDB4MTAwMCwgMH0sCisJeyJOQU5EIDRNaUIgMywzViA4LWJpdCIsIAkweGQ1LCA1MTIsIDQsIDB4MjAwMCwgMH0sCisJeyJOQU5EIDRNaUIgMywzViA4LWJpdCIsIAkweGUzLCA1MTIsIDQsIDB4MjAwMCwgMH0sCisJeyJOQU5EIDRNaUIgMywzViA4LWJpdCIsIAkweGU1LCA1MTIsIDQsIDB4MjAwMCwgMH0sCisJeyJOQU5EIDhNaUIgMywzViA4LWJpdCIsIAkweGQ2LCA1MTIsIDgsIDB4MjAwMCwgMH0sCisKKwl7Ik5BTkQgOE1pQiAxLDhWIDgtYml0IiwgCTB4MzksIDUxMiwgOCwgMHgyMDAwLCAwfSwKKwl7Ik5BTkQgOE1pQiAzLDNWIDgtYml0IiwgCTB4ZTYsIDUxMiwgOCwgMHgyMDAwLCAwfSwKKwl7Ik5BTkQgOE1pQiAxLDhWIDE2LWJpdCIsIAkweDQ5LCA1MTIsIDgsIDB4MjAwMCwgTkFORF9CVVNXSURUSF8xNn0sCisJeyJOQU5EIDhNaUIgMywzViAxNi1iaXQiLCAJMHg1OSwgNTEyLCA4LCAweDIwMDAsIE5BTkRfQlVTV0lEVEhfMTZ9LAorCisJeyJOQU5EIDE2TWlCIDEsOFYgOC1iaXQiLCAJMHgzMywgNTEyLCAxNiwgMHg0MDAwLCAwfSwKKwl7Ik5BTkQgMTZNaUIgMywzViA4LWJpdCIsIAkweDczLCA1MTIsIDE2LCAweDQwMDAsIDB9LAorCXsiTkFORCAxNk1pQiAxLDhWIDE2LWJpdCIsIAkweDQzLCA1MTIsIDE2LCAweDQwMDAsIE5BTkRfQlVTV0lEVEhfMTZ9LAorCXsiTkFORCAxNk1pQiAzLDNWIDE2LWJpdCIsIAkweDUzLCA1MTIsIDE2LCAweDQwMDAsIE5BTkRfQlVTV0lEVEhfMTZ9LAorCisJeyJOQU5EIDMyTWlCIDEsOFYgOC1iaXQiLCAJMHgzNSwgNTEyLCAzMiwgMHg0MDAwLCAwfSwKKwl7Ik5BTkQgMzJNaUIgMywzViA4LWJpdCIsIAkweDc1LCA1MTIsIDMyLCAweDQwMDAsIDB9LAorCXsiTkFORCAzMk1pQiAxLDhWIDE2LWJpdCIsIAkweDQ1LCA1MTIsIDMyLCAweDQwMDAsIE5BTkRfQlVTV0lEVEhfMTZ9LAorCXsiTkFORCAzMk1pQiAzLDNWIDE2LWJpdCIsIAkweDU1LCA1MTIsIDMyLCAweDQwMDAsIE5BTkRfQlVTV0lEVEhfMTZ9LAorCisJeyJOQU5EIDY0TWlCIDEsOFYgOC1iaXQiLCAJMHgzNiwgNTEyLCA2NCwgMHg0MDAwLCAwfSwKKwl7Ik5BTkQgNjRNaUIgMywzViA4LWJpdCIsIAkweDc2LCA1MTIsIDY0LCAweDQwMDAsIDB9LAorCXsiTkFORCA2NE1pQiAxLDhWIDE2LWJpdCIsIAkweDQ2LCA1MTIsIDY0LCAweDQwMDAsIE5BTkRfQlVTV0lEVEhfMTZ9LAorCXsiTkFORCA2NE1pQiAzLDNWIDE2LWJpdCIsIAkweDU2LCA1MTIsIDY0LCAweDQwMDAsIE5BTkRfQlVTV0lEVEhfMTZ9LAorCisJeyJOQU5EIDEyOE1pQiAxLDhWIDgtYml0IiwgCTB4NzgsIDUxMiwgMTI4LCAweDQwMDAsIDB9LAorCXsiTkFORCAxMjhNaUIgMywzViA4LWJpdCIsIAkweDc5LCA1MTIsIDEyOCwgMHg0MDAwLCAwfSwKKwl7Ik5BTkQgMTI4TWlCIDEsOFYgMTYtYml0IiwgCTB4NzIsIDUxMiwgMTI4LCAweDQwMDAsIE5BTkRfQlVTV0lEVEhfMTZ9LAorCXsiTkFORCAxMjhNaUIgMywzViAxNi1iaXQiLCAJMHg3NCwgNTEyLCAxMjgsIDB4NDAwMCwgTkFORF9CVVNXSURUSF8xNn0sCisKKwl7Ik5BTkQgMjU2TWlCIDMsM1YgOC1iaXQiLCAJMHg3MSwgNTEyLCAyNTYsIDB4NDAwMCwgMH0sCisKKwl7Ik5BTkQgNTEyTWlCIDMsM1YgOC1iaXQiLCAJMHhEQywgNTEyLCA1MTIsIDB4NDAwMCwgMH0sCisKKwkvKiBUaGVzZSBhcmUgdGhlIG5ldyBjaGlwcyB3aXRoIGxhcmdlIHBhZ2Ugc2l6ZS4gVGhlIHBhZ2VzaXplCisJKiBhbmQgdGhlIGVyYXNlc2l6ZSBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIGV4dGVuZGVkIGlkIGJ5dGVzCisJKi8KKwkvKiAxIEdpZ2FiaXQgKi8KKwl7Ik5BTkQgMTI4TWlCIDEsOFYgOC1iaXQiLCAJMHhBMSwgMCwgMTI4LCAwLCBOQU5EX1NBTVNVTkdfTFBfT1BUSU9OUyB8IE5BTkRfTk9fQVVUT0lOQ1J9LAorCXsiTkFORCAxMjhNaUIgMywzViA4LWJpdCIsIAkweEYxLCAwLCAxMjgsIDAsIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIHwgTkFORF9OT19BVVRPSU5DUn0sCisJeyJOQU5EIDEyOE1pQiAxLDhWIDE2LWJpdCIsIAkweEIxLCAwLCAxMjgsIDAsIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIHwgTkFORF9CVVNXSURUSF8xNiB8IE5BTkRfTk9fQVVUT0lOQ1J9LAorCXsiTkFORCAxMjhNaUIgMywzViAxNi1iaXQiLCAJMHhDMSwgMCwgMTI4LCAwLCBOQU5EX1NBTVNVTkdfTFBfT1BUSU9OUyB8IE5BTkRfQlVTV0lEVEhfMTYgfCBOQU5EX05PX0FVVE9JTkNSfSwKKworCS8qIDIgR2lnYWJpdCAqLworCXsiTkFORCAyNTZNaUIgMSw4ViA4LWJpdCIsIAkweEFBLCAwLCAyNTYsIDAsIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIHwgTkFORF9OT19BVVRPSU5DUn0sCisJeyJOQU5EIDI1Nk1pQiAzLDNWIDgtYml0IiwgCTB4REEsIDAsIDI1NiwgMCwgTkFORF9TQU1TVU5HX0xQX09QVElPTlMgfCBOQU5EX05PX0FVVE9JTkNSfSwKKwl7Ik5BTkQgMjU2TWlCIDEsOFYgMTYtYml0IiwgCTB4QkEsIDAsIDI1NiwgMCwgTkFORF9TQU1TVU5HX0xQX09QVElPTlMgfCBOQU5EX0JVU1dJRFRIXzE2IHwgTkFORF9OT19BVVRPSU5DUn0sCisJeyJOQU5EIDI1Nk1pQiAzLDNWIDE2LWJpdCIsIAkweENBLCAwLCAyNTYsIDAsIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIHwgTkFORF9CVVNXSURUSF8xNiB8IE5BTkRfTk9fQVVUT0lOQ1J9LAorCisJLyogNCBHaWdhYml0ICovCisJeyJOQU5EIDUxMk1pQiAxLDhWIDgtYml0IiwgCTB4QUMsIDAsIDUxMiwgMCwgTkFORF9TQU1TVU5HX0xQX09QVElPTlMgfCBOQU5EX05PX0FVVE9JTkNSfSwKKwl7Ik5BTkQgNTEyTWlCIDMsM1YgOC1iaXQiLCAJMHhEQywgMCwgNTEyLCAwLCBOQU5EX1NBTVNVTkdfTFBfT1BUSU9OUyB8IE5BTkRfTk9fQVVUT0lOQ1J9LAorCXsiTkFORCA1MTJNaUIgMSw4ViAxNi1iaXQiLCAJMHhCQywgMCwgNTEyLCAwLCBOQU5EX1NBTVNVTkdfTFBfT1BUSU9OUyB8IE5BTkRfQlVTV0lEVEhfMTYgfCBOQU5EX05PX0FVVE9JTkNSfSwKKwl7Ik5BTkQgNTEyTWlCIDMsM1YgMTYtYml0IiwgCTB4Q0MsIDAsIDUxMiwgMCwgTkFORF9TQU1TVU5HX0xQX09QVElPTlMgfCBOQU5EX0JVU1dJRFRIXzE2IHwgTkFORF9OT19BVVRPSU5DUn0sCisKKwkvKiA4IEdpZ2FiaXQgKi8KKwl7Ik5BTkQgMUdpQiAxLDhWIDgtYml0IiwgCTB4QTMsIDAsIDEwMjQsIDAsIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIHwgTkFORF9OT19BVVRPSU5DUn0sCisJeyJOQU5EIDFHaUIgMywzViA4LWJpdCIsIAkweEQzLCAwLCAxMDI0LCAwLCBOQU5EX1NBTVNVTkdfTFBfT1BUSU9OUyB8IE5BTkRfTk9fQVVUT0lOQ1J9LAorCXsiTkFORCAxR2lCIDEsOFYgMTYtYml0IiwgCTB4QjMsIDAsIDEwMjQsIDAsIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIHwgTkFORF9CVVNXSURUSF8xNiB8IE5BTkRfTk9fQVVUT0lOQ1J9LAorCXsiTkFORCAxR2lCIDMsM1YgMTYtYml0IiwgCTB4QzMsIDAsIDEwMjQsIDAsIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIHwgTkFORF9CVVNXSURUSF8xNiB8IE5BTkRfTk9fQVVUT0lOQ1J9LAorCisJLyogMTYgR2lnYWJpdCAqLworCXsiTkFORCAyR2lCIDEsOFYgOC1iaXQiLCAJMHhBNSwgMCwgMjA0OCwgMCwgTkFORF9TQU1TVU5HX0xQX09QVElPTlMgfCBOQU5EX05PX0FVVE9JTkNSfSwKKwl7Ik5BTkQgMkdpQiAzLDNWIDgtYml0IiwgCTB4RDUsIDAsIDIwNDgsIDAsIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIHwgTkFORF9OT19BVVRPSU5DUn0sCisJeyJOQU5EIDJHaUIgMSw4ViAxNi1iaXQiLCAJMHhCNSwgMCwgMjA0OCwgMCwgTkFORF9TQU1TVU5HX0xQX09QVElPTlMgfCBOQU5EX0JVU1dJRFRIXzE2IHwgTkFORF9OT19BVVRPSU5DUn0sCisJeyJOQU5EIDJHaUIgMywzViAxNi1iaXQiLCAJMHhDNSwgMCwgMjA0OCwgMCwgTkFORF9TQU1TVU5HX0xQX09QVElPTlMgfCBOQU5EX0JVU1dJRFRIXzE2IHwgTkFORF9OT19BVVRPSU5DUn0sCisKKwkvKiBSZW5lc2FzIEFORCAxIEdpZ2FiaXQuIFRob3NlIGNoaXBzIGRvIG5vdCBzdXBwb3J0IGV4dGVuZGVkIGlkIGFuZCBoYXZlIGEgc3RyYW5nZSBwYWdlL2Jsb2NrIGxheW91dCAhCisJICogVGhlIGNob3NlbiBtaW5pbXVtIGVyYXNlc2l6ZSBpcyA0ICogMiAqIDIwNDggPSAxNjM4NCBCeXRlLCBhcyB0aG9zZSBjaGlwcyBoYXZlIGFuIGFycmF5IG9mIDQgcGFnZSBwbGFuZXMKKwkgKiAxIGJsb2NrID0gMiBwYWdlcywgYnV0IGR1ZSB0byBwbGFuZSBhcnJhbmdlbWVudCB0aGUgYmxvY2tzIDAtMyBjb25zaXN0cyBvZiBwYWdlIDAgKyA0LDEgKyA1LCAyICsgNiwgMyArIDcKKwkgKiBBbnl3YXkgSkZGUzIgd291bGQgaW5jcmVhc2UgdGhlIGVyYXNlYmxvY2sgc2l6ZSBzbyB3ZSBjaG9zZSBhIGNvbWJpbmVkIG9uZSB3aGljaCBjYW4gYmUgZXJhc2VkIGluIG9uZSBnbworCSAqIFRoZXJlIGFyZSBtb3JlIHNwZWVkIGltcHJvdmVtZW50cyBmb3IgcmVhZHMgYW5kIHdyaXRlcyBwb3NzaWJsZSwgYnV0IG5vdCBpbXBsZW1lbnRlZCBub3cKKwkgKi8KKwl7IkFORCAxMjhNaUIgMywzViA4LWJpdCIsCTB4MDEsIDIwNDgsIDEyOCwgMHg0MDAwLCBOQU5EX0lTX0FORCB8IE5BTkRfTk9fQVVUT0lOQ1IgfCBOQU5EXzRQQUdFX0FSUkFZfSwKKworCXtOVUxMLH0KK307CisKKy8qCisqCU1hbnVmYWN0dXJlciBJRCBsaXN0CisqLworc3RydWN0IG5hbmRfbWFudWZhY3R1cmVycyBuYW5kX21hbnVmX2lkc1tdID0geworCXtOQU5EX01GUl9UT1NISUJBLCAiVG9zaGliYSJ9LAorCXtOQU5EX01GUl9TQU1TVU5HLCAiU2Ftc3VuZyJ9LAorCXtOQU5EX01GUl9GVUpJVFNVLCAiRnVqaXRzdSJ9LAorCXtOQU5EX01GUl9OQVRJT05BTCwgIk5hdGlvbmFsIn0sCisJe05BTkRfTUZSX1JFTkVTQVMsICJSZW5lc2FzIn0sCisJe05BTkRfTUZSX1NUTUlDUk8sICJTVCBNaWNybyJ9LAorCXsweDAsICJVbmtub3duIn0KK307CisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmFuZF9sZWdhY3kvTWFrZWZpbGUgYi9kcml2ZXJzL25hbmRfbGVnYWN5L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMmNmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25hbmRfbGVnYWN5L01ha2VmaWxlCkBAIC0wLDAgKzEsMTYgQEAKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIgOj0gbGlibmFuZF9sZWdhY3kuYQorCitPQkpTIDo9IG5hbmRfbGVnYWN5Lm8KK2FsbDoJJChMSUIpCisKKyQoTElCKToJJChPQkpTKQorCSQoQVIpIGNydiAkQCAkKE9CSlMpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworLmRlcGVuZDoJTWFrZWZpbGUgJChPQkpTOi5vPS5jKQorCQkkKENDKSAtTSAkKENGTEFHUykgJChPQkpTOi5vPS5jKSA+ICRACisKK3NpbmNsdWRlIC5kZXBlbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmFuZF9sZWdhY3kvbmFuZF9sZWdhY3kuYyBiL2RyaXZlcnMvbmFuZF9sZWdhY3kvbmFuZF9sZWdhY3kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTg5Y2EyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uYW5kX2xlZ2FjeS9uYW5kX2xlZ2FjeS5jCkBAIC0wLDAgKzEsMTYxNSBAQAorLyoKKyAqIChDKSAyMDA2IERlbngKKyAqIERyaXZlciBmb3IgTkFORCBzdXBwb3J0LCBSaWNrIEJyb25zb24KKyAqIGJvcnJvd2VkIGhlYXZpbHkgZnJvbToKKyAqIChjKSAxOTk5IE1hY2hpbmUgVmlzaW9uIEhvbGRpbmdzLCBJbmMuCisgKiAoYykgMTk5OSwgMjAwMCBEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+CisgKgorICogQWRkZWQgMTYtYml0IG5hbmQgc3VwcG9ydAorICogKEMpIDIwMDQgVGV4YXMgSW5zdHJ1bWVudHMKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisKKyNpZm5kZWYgQ0ZHX05BTkRfTEVHQUNZCisjZXJyb3IgQ0ZHX05BTkRfTEVHQUNZIG5vdCBkZWZpbmVkIGluIGEgZmlsZSB1c2luZyB0aGUgbGVnYWN5IE5BTkQgc3VwcG9ydCEKKyNlbmRpZgorCisjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPHdhdGNoZG9nLmg+CisKKyNpZmRlZiBDT05GSUdfU0hPV19CT09UX1BST0dSRVNTCisjIGluY2x1ZGUgPHN0YXR1c19sZWQuaD4KKyMgZGVmaW5lIFNIT1dfQk9PVF9QUk9HUkVTUyhhcmcpCXNob3dfYm9vdF9wcm9ncmVzcyhhcmcpCisjZWxzZQorIyBkZWZpbmUgU0hPV19CT09UX1BST0dSRVNTKGFyZykKKyNlbmRpZgorCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKKworI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2xlZ2FjeS5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kX2lkcy5oPgorI2luY2x1ZGUgPGpmZnMyL2pmZnMyLmg+CisKKyNpZmRlZiBDT05GSUdfT01BUDE1MTAKK3ZvaWQgYXJjaGZsYXNod3Aodm9pZCAqYXJjaGRhdGEsIGludCB3cCk7CisjZW5kaWYKKworI2RlZmluZSBST1VORF9ET1dOKHZhbHVlLGJvdW5kYXJ5KSAgICAgICgodmFsdWUpICYgKH4oKGJvdW5kYXJ5KS0xKSkpCisKKyN1bmRlZglQU1lDSE9fREVCVUcKKyN1bmRlZglOQU5EX0RFQlVHCisKKy8qICoqKioqKioqKioqKioqKioqKiBXQVJOSU5HICoqKioqKioqKioqKioqKioqKioqKgorICogV2hlbiBBTExPV19FUkFTRV9CQURfREVCVUcgaXMgbm9uLXplcm8gdGhlIGVyYXNlIGNvbW1hbmQgd2lsbAorICogZXJhc2UgKG9yIGF0IGxlYXN0IGF0dGVtcHQgdG8gZXJhc2UpIGJsb2NrcyB0aGF0IGFyZSBtYXJrZWQKKyAqIGJhZC4gVGhpcyBjYW4gYmUgdmVyeSBoYW5keSBpZiB5b3UgYXJlIF9zdXJlXyB0aGF0IHRoZSBibG9jaworICogaXMgT0ssIHNheSBiZWNhdXNlIHlvdSBtYXJrZWQgYSBnb29kIGJsb2NrIGJhZCB0byB0ZXN0IGJhZAorICogYmxvY2sgaGFuZGxpbmcgYW5kIHlvdSBhcmUgZG9uZSB0ZXN0aW5nLCBvciBpZiB5b3UgaGF2ZQorICogYWNjaWRlbnRhbGx5IG1hcmtlZCBibG9ja3MgYmFkLgorICoKKyAqIEVyYXNpbmcgZmFjdG9yeSBtYXJrZWQgYmFkIGJsb2NrcyBpcyBhIF9iYWRfIGlkZWEuIElmIHRoZQorICogZXJhc2Ugc3VjY2VlZHMgdGhlcmUgaXMgbm8gcmVsaWFibGUgd2F5IHRvIGZpbmQgdGhlbSBhZ2FpbiwKKyAqIGFuZCBhdHRlbXB0aW5nIHRvIHByb2dyYW0gb3IgZXJhc2UgYmFkIGJsb2NrcyBjYW4gYWZmZWN0CisgKiB0aGUgZGF0YSBpbiBfb3RoZXJfIChnb29kKSBibG9ja3MuCisgKi8KKyNkZWZpbmUJIEFMTE9XX0VSQVNFX0JBRF9ERUJVRyAwCisKKyNkZWZpbmUgQ09ORklHX01URF9OQU5EX0VDQyAgLyogZW5hYmxlIEVDQyAqLworI2RlZmluZSBDT05GSUdfTVREX05BTkRfRUNDX0pGRlMyCisKKy8qIGJpdHMgZm9yIG5hbmRfbGVnYWN5X3J3KCkgYGNtZCc7IG9yIHRvZ2V0aGVyIGFzIG5lZWRlZCAqLworI2RlZmluZSBOQU5EUldfUkVBRAkweDAxCisjZGVmaW5lIE5BTkRSV19XUklURQkweDAwCisjZGVmaW5lIE5BTkRSV19KRkZTMgkweDAyCisjZGVmaW5lIE5BTkRSV19KRkZTMl9TS0lQCTB4MDQKKworCisvKgorICogRXhwb3J0ZWQgdmFyaWFibGVzIGV0Yy4KKyAqLworCisvKiBEZWZpbml0aW9uIG9mIHRoZSBvdXQgb2YgYmFuZCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSAqLworc3RydWN0IG5hbmRfb29iX2NvbmZpZyB7CisJLyogcG9zaXRpb24gb2YgRUNDIGJ5dGVzIGluc2lkZSBvb2IgKi8KKwlpbnQgZWNjX3Bvc1s2XTsKKwkvKiBwb3NpdGlvbiBvZiAgYmFkIGJsayBmbGFnIGluc2lkZSBvb2IgLTEgPSBpbmFjdGl2ZSAqLworCWludCBiYWRibG9ja19wb3M7CisJLyogcG9zaXRpb24gb2YgRUNDIHZhbGlkIGZsYWcgaW5zaWRlIG9vYiAtMSA9IGluYWN0aXZlICovCisJaW50IGVjY3ZhbGlkX3BvczsKK30gb29iX2NvbmZpZyA9IHsgezB9LCAwLCAwfTsKKworc3RydWN0IG5hbmRfY2hpcCBuYW5kX2Rldl9kZXNjW0NGR19NQVhfTkFORF9ERVZJQ0VdID0ge3swfX07CisKK2ludCBjdXJyX2RldmljZSA9IC0xOyAvKiBDdXJyZW50IE5BTkQgRGV2aWNlICovCisKKworLyoKKyAqIEV4cG9ydGVkIGZ1bmN0aW9uc3MKKyAqLworaW50IG5hbmRfbGVnYWN5X2VyYXNlKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIHNpemVfdCBvZnMsCisJCSAgICAgc2l6ZV90IGxlbiwgaW50IGNsZWFuKTsKK2ludCBuYW5kX2xlZ2FjeV9ydyhzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBpbnQgY21kLAorCQkgIHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbiwKKwkJICBzaXplX3QgKiByZXRsZW4sIHVfY2hhciAqIGJ1Zik7Cit2b2lkIG5hbmRfcHJpbnQoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCk7Cit2b2lkIG5hbmRfcHJpbnRfYmFkKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpOworaW50IG5hbmRfcmVhZF9vb2Ioc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgc2l6ZV90IG9mcywgc2l6ZV90IGxlbiwKKwkJIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmKTsKK2ludCBuYW5kX3dyaXRlX29vYihzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBzaXplX3Qgb2ZzLCBzaXplX3QgbGVuLAorCQkgc2l6ZV90ICogcmV0bGVuLCBjb25zdCB1X2NoYXIgKiBidWYpOworCisvKgorICogSW50ZXJuYWxzCisgKi8KK3N0YXRpYyBpbnQgTmFuRF9XYWl0UmVhZHkoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IGFsZV93YWl0KTsKK3N0YXRpYyBpbnQgbmFuZF9yZWFkX2VjYyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW4sCisJCSBzaXplX3QgKiByZXRsZW4sIHVfY2hhciAqYnVmLCB1X2NoYXIgKmVjY19jb2RlKTsKK3N0YXRpYyBpbnQgbmFuZF93cml0ZV9lY2MgKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIHNpemVfdCB0bywgc2l6ZV90IGxlbiwKKwkJCSAgIHNpemVfdCAqIHJldGxlbiwgY29uc3QgdV9jaGFyICogYnVmLAorCQkJICAgdV9jaGFyICogZWNjX2NvZGUpOworI2lmZGVmIENPTkZJR19NVERfTkFORF9FQ0MKK3N0YXRpYyBpbnQgbmFuZF9jb3JyZWN0X2RhdGEgKHVfY2hhciAqZGF0LCB1X2NoYXIgKnJlYWRfZWNjLCB1X2NoYXIgKmNhbGNfZWNjKTsKK3N0YXRpYyB2b2lkIG5hbmRfY2FsY3VsYXRlX2VjYyAoY29uc3QgdV9jaGFyICpkYXQsIHVfY2hhciAqZWNjX2NvZGUpOworI2VuZGlmCisKKworLyoKKyAqCisgKiBGdW5jdGlvbiBkZWZpbml0aW9ucworICoKKyAqLworCisvKiByZXR1cm5zIDAgaWYgYmxvY2sgY29udGFpbmluZyBwb3MgaXMgT0s6CisgKgkJdmFsaWQgZXJhc2UgYmxvY2sgYW5kCisgKgkJbm90IG1hcmtlZCBiYWQsIG9yIG5vIGJhZCBtYXJrIHBvc2l0aW9uIGlzIHNwZWNpZmllZAorICogcmV0dXJucyAxIGlmIG1hcmtlZCBiYWQgb3Igb3RoZXJ3aXNlIGludmFsaWQKKyAqLworc3RhdGljIGludCBjaGVja19ibG9jayAoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgdW5zaWduZWQgbG9uZyBwb3MpCit7CisJc2l6ZV90IHJldGxlbjsKKwl1aW50OF90IG9vYl9kYXRhOworCXVpbnQxNl90IG9vYl9kYXRhMTZbNl07CisJaW50IHBhZ2UwID0gcG9zICYgKC1uYW5kLT5lcmFzZXNpemUpOworCWludCBwYWdlMSA9IHBhZ2UwICsgbmFuZC0+b29iYmxvY2s7CisJaW50IGJhZHBvcyA9IG9vYl9jb25maWcuYmFkYmxvY2tfcG9zOworCisJaWYgKHBvcyA+PSBuYW5kLT50b3RsZW4pCisJCXJldHVybiAxOworCisJaWYgKGJhZHBvcyA8IDApCisJCXJldHVybiAwOwkvKiBubyB3YXkgdG8gY2hlY2ssIGFzc3VtZSBPSyAqLworCisJaWYgKG5hbmQtPmJ1czE2KSB7CisJCWlmIChuYW5kX3JlYWRfb29iKG5hbmQsIChwYWdlMCArIDApLCAxMiwgJnJldGxlbiwgKHVpbnQ4X3QgKilvb2JfZGF0YTE2KQorCQkgICAgfHwgKG9vYl9kYXRhMTZbMl0gJiAweGZmMDApICE9IDB4ZmYwMCkKKwkJCXJldHVybiAxOworCQlpZiAobmFuZF9yZWFkX29vYihuYW5kLCAocGFnZTEgKyAwKSwgMTIsICZyZXRsZW4sICh1aW50OF90ICopb29iX2RhdGExNikKKwkJICAgIHx8IChvb2JfZGF0YTE2WzJdICYgMHhmZjAwKSAhPSAweGZmMDApCisJCQlyZXR1cm4gMTsKKwl9IGVsc2UgeworCQkvKiBOb3RlIC0gYmFkIGJsb2NrIG1hcmtlciBjYW4gYmUgb24gZmlyc3Qgb3Igc2Vjb25kIHBhZ2UgKi8KKwkJaWYgKG5hbmRfcmVhZF9vb2IobmFuZCwgcGFnZTAgKyBiYWRwb3MsIDEsICZyZXRsZW4sICh1bnNpZ25lZCBjaGFyICopJm9vYl9kYXRhKQorCQkgICAgfHwgb29iX2RhdGEgIT0gMHhmZgorCQkgICAgfHwgbmFuZF9yZWFkX29vYiAobmFuZCwgcGFnZTEgKyBiYWRwb3MsIDEsICZyZXRsZW4sICh1bnNpZ25lZCBjaGFyICopJm9vYl9kYXRhKQorCQkgICAgfHwgb29iX2RhdGEgIT0gMHhmZikKKwkJCXJldHVybiAxOworCX0KKworCXJldHVybiAwOworfQorCisvKiBwcmludCBiYWQgYmxvY2tzIGluIE5BTkQgZmxhc2ggKi8KK3ZvaWQgbmFuZF9wcmludF9iYWQoc3RydWN0IG5hbmRfY2hpcCogbmFuZCkKK3sKKwl1bnNpZ25lZCBsb25nIHBvczsKKworCWZvciAocG9zID0gMDsgcG9zIDwgbmFuZC0+dG90bGVuOyBwb3MgKz0gbmFuZC0+ZXJhc2VzaXplKSB7CisJCWlmIChjaGVja19ibG9jayhuYW5kLCBwb3MpKQorCQkJcHJpbnRmKCIgMHglOC44bHhcbiIsIHBvcyk7CisJfQorCXB1dHMoIlxuIik7Cit9CisKKy8qIGNtZDogMDogTkFORFJXX1dSSVRFCQkJd3JpdGUsIGZhaWwgb24gYmFkIGJsb2NrCisgKgkxOiBOQU5EUldfUkVBRAkJCXJlYWQsIGZhaWwgb24gYmFkIGJsb2NrCisgKgkyOiBOQU5EUldfV1JJVEUgfCBOQU5EUldfSkZGUzIJd3JpdGUsIHNraXAgYmFkIGJsb2NrcworICoJMzogTkFORFJXX1JFQUQgfCBOQU5EUldfSkZGUzIJcmVhZCwgZGF0YSBhbGwgMHhmZiBmb3IgYmFkIGJsb2NrcworICogICAgICA3OiBOQU5EUldfUkVBRCB8IE5BTkRSV19KRkZTMiB8IE5BTkRSV19KRkZTMl9TS0lQIHJlYWQsIHNraXAgYmFkIGJsb2NrcworICovCitpbnQgbmFuZF9sZWdhY3lfcncgKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIGludCBjbWQsCisJCSAgIHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbiwKKwkJICAgc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKiBidWYpCit7CisJaW50IHJldCA9IDAsIG4sIHRvdGFsID0gMDsKKwljaGFyIGVjY2J1Zls2XTsKKwkvKiBlYmxrIChvbmNlIHNldCkgaXMgdGhlIHN0YXJ0IG9mIHRoZSBlcmFzZSBibG9jayBjb250YWluaW5nIHRoZQorCSAqIGRhdGEgYmVpbmcgcHJvY2Vzc2VkLgorCSAqLworCXVuc2lnbmVkIGxvbmcgZWJsayA9IH4wOwkvKiBmb3JjZSBtaXNtYXRjaCBvbiBmaXJzdCBwYXNzICovCisJdW5zaWduZWQgbG9uZyBlcmFzZXNpemUgPSBuYW5kLT5lcmFzZXNpemU7CisKKwl3aGlsZSAobGVuKSB7CisJCWlmICgoc3RhcnQgJiAoLWVyYXNlc2l6ZSkpICE9IGVibGspIHsKKwkJCS8qIGhhdmUgY3Jvc3NlZCBpbnRvIG5ldyBlcmFzZSBibG9jaywgZGVhbCB3aXRoCisJCQkgKiBpdCBpZiBpdCBpcyBzdXJlIG1hcmtlZCBiYWQuCisJCQkgKi8KKwkJCWVibGsgPSBzdGFydCAmICgtZXJhc2VzaXplKTsgLyogc3RhcnQgb2YgYmxvY2sgKi8KKwkJCWlmIChjaGVja19ibG9jayhuYW5kLCBlYmxrKSkgeworCQkJCWlmIChjbWQgPT0gKE5BTkRSV19SRUFEIHwgTkFORFJXX0pGRlMyKSkgeworCQkJCQl3aGlsZSAobGVuID4gMCAmJgorCQkJCQkgICAgICAgc3RhcnQgLSBlYmxrIDwgZXJhc2VzaXplKSB7CisJCQkJCQkqKGJ1ZisrKSA9IDB4ZmY7CisJCQkJCQkrK3N0YXJ0OworCQkJCQkJKyt0b3RhbDsKKwkJCQkJCS0tbGVuOworCQkJCQl9CisJCQkJCWNvbnRpbnVlOworCQkJCX0gZWxzZSBpZiAoY21kID09IChOQU5EUldfUkVBRCB8IE5BTkRSV19KRkZTMiB8IE5BTkRSV19KRkZTMl9TS0lQKSkgeworCQkJCQlzdGFydCArPSBlcmFzZXNpemU7CisJCQkJCWNvbnRpbnVlOworCQkJCX0gZWxzZSBpZiAoY21kID09IChOQU5EUldfV1JJVEUgfCBOQU5EUldfSkZGUzIpKSB7CisJCQkJCS8qIHNraXAgYmFkIGJsb2NrICovCisJCQkJCXN0YXJ0ICs9IGVyYXNlc2l6ZTsKKwkJCQkJY29udGludWU7CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0ID0gMTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisJCS8qIFRoZSBFQ0Mgd2lsbCBub3QgYmUgY2FsY3VsYXRlZCBjb3JyZWN0bHkgaWYKKwkJICAgbGVzcyB0aGFuIDUxMiBpcyB3cml0dGVuIG9yIHJlYWQgKi8KKwkJLyogSXMgcmVxdWVzdCBhdCBsZWFzdCA1MTIgYnl0ZXMgQU5EIGl0IHN0YXJ0cyBvbiBhIHByb3BlciBib3VuZHJ5ICovCisJCWlmKChzdGFydCAhPSBST1VORF9ET1dOKHN0YXJ0LCAweDIwMCkpIHx8IChsZW4gPCAweDIwMCkpCisJCQlwcmludGYoIldhcm5pbmcgYmxvY2sgd3JpdGVzIHNob3VsZCBiZSBhdCBsZWFzdCA1MTIgYnl0ZXMgYW5kIHN0YXJ0IG9uIGEgNTEyIGJ5dGUgYm91bmRyeVxuIik7CisKKwkJaWYgKGNtZCAmIE5BTkRSV19SRUFEKSB7CisJCQlyZXQgPSBuYW5kX3JlYWRfZWNjKG5hbmQsIHN0YXJ0LAorCQkJCQkgICBtaW4obGVuLCBlYmxrICsgZXJhc2VzaXplIC0gc3RhcnQpLAorCQkJCQkgICAoc2l6ZV90ICopJm4sICh1X2NoYXIqKWJ1ZiwgKHVfY2hhciAqKWVjY2J1Zik7CisJCX0gZWxzZSB7CisJCQlyZXQgPSBuYW5kX3dyaXRlX2VjYyhuYW5kLCBzdGFydCwKKwkJCQkJICAgIG1pbihsZW4sIGVibGsgKyBlcmFzZXNpemUgLSBzdGFydCksCisJCQkJCSAgICAoc2l6ZV90ICopJm4sICh1X2NoYXIqKWJ1ZiwgKHVfY2hhciAqKWVjY2J1Zik7CisJCX0KKworCQlpZiAocmV0KQorCQkJYnJlYWs7CisKKwkJc3RhcnQgICs9IG47CisJCWJ1ZiAgICs9IG47CisJCXRvdGFsICs9IG47CisJCWxlbiAgIC09IG47CisJfQorCWlmIChyZXRsZW4pCisJCSpyZXRsZW4gPSB0b3RhbDsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgbmFuZF9wcmludChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kKQoreworCWlmIChuYW5kLT5udW1jaGlwcyA+IDEpIHsKKwkJcHJpbnRmKCIlcyBhdCAweCVseCxcbiIKKwkJICAgICAgICJcdCAgJWQgY2hpcHMgJXMsIHNpemUgJWQgTUIsIFxuIgorCQkgICAgICAgIlx0ICB0b3RhbCBzaXplICVsZCBNQiwgc2VjdG9yIHNpemUgJWxkIGtCXG4iLAorCQkgICAgICAgbmFuZC0+bmFtZSwgbmFuZC0+SU9fQUREUiwgbmFuZC0+bnVtY2hpcHMsCisJCSAgICAgICBuYW5kLT5jaGlwc19uYW1lLCAxIDw8IChuYW5kLT5jaGlwc2hpZnQgLSAyMCksCisJCSAgICAgICBuYW5kLT50b3RsZW4gPj4gMjAsIG5hbmQtPmVyYXNlc2l6ZSA+PiAxMCk7CisJfQorCWVsc2UgeworCQlwcmludGYoIiVzIGF0IDB4JWx4ICgiLCBuYW5kLT5jaGlwc19uYW1lLCBuYW5kLT5JT19BRERSKTsKKwkJcHJpbnRfc2l6ZShuYW5kLT50b3RsZW4sICIsICIpOworCQlwcmludF9zaXplKG5hbmQtPmVyYXNlc2l6ZSwgIiBzZWN0b3IpXG4iKTsKKwl9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIGludCBOYW5EX1dhaXRSZWFkeShzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgYWxlX3dhaXQpCit7CisJLyogVGhpcyBpcyBpbmxpbmUsIHRvIG9wdGltaXNlIHRoZSBjb21tb24gY2FzZSwgd2hlcmUgaXQncyByZWFkeSBpbnN0YW50bHkgKi8KKwlpbnQgcmV0ID0gMDsKKworI2lmZGVmIE5BTkRfTk9fUkIJLyogaW4gY29uZmlnIGZpbGUsIHNob3J0ZXIgZGVsYXlzIGN1cnJlbnRseSB3cmFwIGFjY2Vzc2VzICovCisJaWYoYWxlX3dhaXQpCisJCU5BTkRfV0FJVF9SRUFEWShuYW5kKTsJLyogZG8gdGhlIHdvcnN0IGNhc2UgMjV1cyB3YWl0ICovCisJZWxzZQorCQl1ZGVsYXkoMTApOworI2Vsc2UJLyogaGFzIGZ1bmN0aW9uYWwgci9iIHNpZ25hbCAqLworCU5BTkRfV0FJVF9SRUFEWShuYW5kKTsKKyNlbmRpZgorCXJldHVybiByZXQ7Cit9CisKKy8qIE5hbkRfQ29tbWFuZDogU2VuZCBhIGZsYXNoIGNvbW1hbmQgdG8gdGhlIGZsYXNoIGNoaXAgKi8KKworc3RhdGljIGlubGluZSBpbnQgTmFuRF9Db21tYW5kKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHVuc2lnbmVkIGNoYXIgY29tbWFuZCkKK3sKKwl1bnNpZ25lZCBsb25nIG5hbmRwdHIgPSBuYW5kLT5JT19BRERSOworCisJLyogQXNzZXJ0IHRoZSBDTEUgKENvbW1hbmQgTGF0Y2ggRW5hYmxlKSBsaW5lIHRvIHRoZSBmbGFzaCBjaGlwICovCisJTkFORF9DVExfU0VUQ0xFKG5hbmRwdHIpOworCisJLyogU2VuZCB0aGUgY29tbWFuZCAqLworCVdSSVRFX05BTkRfQ09NTUFORChjb21tYW5kLCBuYW5kcHRyKTsKKworCS8qIExvd2VyIHRoZSBDTEUgbGluZSAqLworCU5BTkRfQ1RMX0NMUkNMRShuYW5kcHRyKTsKKworI2lmZGVmIE5BTkRfTk9fUkIKKwlpZihjb21tYW5kID09IE5BTkRfQ01EX1JFU0VUKXsKKwkJdV9jaGFyIHJldF92YWw7CisJCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9TVEFUVVMpOworCQlkbyB7CisJCQlyZXRfdmFsID0gUkVBRF9OQU5EKG5hbmRwdHIpOy8qIHdhaXQgdGlsbCByZWFkeSAqLworCQl9IHdoaWxlKChyZXRfdmFsICYgMHg0MCkgIT0gMHg0MCk7CisJfQorI2VuZGlmCisJcmV0dXJuIE5hbkRfV2FpdFJlYWR5KG5hbmQsIDApOworfQorCisvKiBOYW5EX0FkZHJlc3M6IFNldCB0aGUgY3VycmVudCBhZGRyZXNzIGZvciB0aGUgZmxhc2ggY2hpcCAqLworCitzdGF0aWMgaW50IE5hbkRfQWRkcmVzcyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgbnVtYnl0ZXMsIHVuc2lnbmVkIGxvbmcgb2ZzKQoreworCXVuc2lnbmVkIGxvbmcgbmFuZHB0cjsKKwlpbnQgaTsKKworCW5hbmRwdHIgPSBuYW5kLT5JT19BRERSOworCisJLyogQXNzZXJ0IHRoZSBBTEUgKEFkZHJlc3MgTGF0Y2ggRW5hYmxlKSBsaW5lIHRvIHRoZSBmbGFzaCBjaGlwICovCisJTkFORF9DVExfU0VUQUxFKG5hbmRwdHIpOworCisJLyogU2VuZCB0aGUgYWRkcmVzcyAqLworCS8qIERldmljZXMgd2l0aCAyNTYtYnl0ZSBwYWdlIGFyZSBhZGRyZXNzZWQgYXM6CisJICogQ29sdW1uIChiaXRzIDAtNyksIFBhZ2UgKGJpdHMgOC0xNSwgMTYtMjMsIDI0LTMxKQorCSAqIHRoZXJlIGlzIG5vIGRldmljZSBvbiB0aGUgbWFya2V0IHdpdGggcGFnZTI1NgorCSAqIGFuZCBtb3JlIHRoYW4gMjQgYml0cy4KKwkgKiBEZXZpY2VzIHdpdGggNTEyLWJ5dGUgcGFnZSBhcmUgYWRkcmVzc2VkIGFzOgorCSAqIENvbHVtbiAoYml0cyAwLTcpLCBQYWdlIChiaXRzIDktMTYsIDE3LTI0LCAyNS0zMSkKKwkgKiAyNS0zMSBpcyBzZW50IG9ubHkgaWYgdGhlIGNoaXAgc3VwcG9ydCBpdC4KKwkgKiBiaXQgOCBjaGFuZ2VzIHRoZSByZWFkIGNvbW1hbmQgdG8gYmUgc2VudAorCSAqIChOQU5EX0NNRF9SRUFEMCBvciBOQU5EX0NNRF9SRUFEMSkuCisJICovCisKKwlpZiAobnVtYnl0ZXMgPT0gQUREUl9DT0xVTU4gfHwgbnVtYnl0ZXMgPT0gQUREUl9DT0xVTU5fUEFHRSkKKwkJV1JJVEVfTkFORF9BRERSRVNTKG9mcywgbmFuZHB0cik7CisKKwlvZnMgPSBvZnMgPj4gbmFuZC0+cGFnZV9zaGlmdDsKKworCWlmIChudW1ieXRlcyA9PSBBRERSX1BBR0UgfHwgbnVtYnl0ZXMgPT0gQUREUl9DT0xVTU5fUEFHRSkgeworCQlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+cGFnZWFkcmxlbjsgaSsrLCBvZnMgPSBvZnMgPj4gOCkgeworCQkJV1JJVEVfTkFORF9BRERSRVNTKG9mcywgbmFuZHB0cik7CisJCX0KKwl9CisKKwkvKiBMb3dlciB0aGUgQUxFIGxpbmUgKi8KKwlOQU5EX0NUTF9DTFJBTEUobmFuZHB0cik7CisKKwkvKiBXYWl0IGZvciB0aGUgY2hpcCB0byByZXNwb25kICovCisJcmV0dXJuIE5hbkRfV2FpdFJlYWR5KG5hbmQsIDEpOworfQorCisvKiBOYW5EX1NlbGVjdENoaXA6IFNlbGVjdCBhIGdpdmVuIGZsYXNoIGNoaXAgd2l0aGluIHRoZSBjdXJyZW50IGZsb29yICovCisKK3N0YXRpYyBpbmxpbmUgaW50IE5hbkRfU2VsZWN0Q2hpcChzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgY2hpcCkKK3sKKwkvKiBXYWl0IGZvciBpdCB0byBiZSByZWFkeSAqLworCXJldHVybiBOYW5EX1dhaXRSZWFkeShuYW5kLCAwKTsKK30KKworLyogTmFuRF9JZGVudENoaXA6IElkZW50aWZ5IGEgZ2l2ZW4gTkFORCBjaGlwIGdpdmVuIHtmbG9vcixjaGlwfSAqLworCitzdGF0aWMgaW50IE5hbkRfSWRlbnRDaGlwKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBmbG9vciwgaW50IGNoaXApCit7CisJaW50IG1mciwgaWQsIGk7CisKKwlOQU5EX0VOQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gbG93ICovCisJLyogUmVzZXQgdGhlIGNoaXAgKi8KKwlpZiAoTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1JFU0VUKSkgeworI2lmZGVmIE5BTkRfREVCVUcKKwkJcHJpbnRmKCJOYW5EX0NvbW1hbmQgKHJlc2V0KSBmb3IgJWQsJWQgcmV0dXJuZWQgdHJ1ZVxuIiwKKwkJICAgICAgIGZsb29yLCBjaGlwKTsKKyNlbmRpZgorCQlOQU5EX0RJU0FCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGhpZ2ggKi8KKwkJcmV0dXJuIDA7CisJfQorCisJLyogUmVhZCB0aGUgTkFORCBjaGlwIElEOiAxLiBTZW5kIFJlYWRJRCBjb21tYW5kICovCisJaWYgKE5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9SRUFESUQpKSB7CisjaWZkZWYgTkFORF9ERUJVRworCQlwcmludGYoIk5hbkRfQ29tbWFuZCAoUmVhZElEKSBmb3IgJWQsJWQgcmV0dXJuZWQgdHJ1ZVxuIiwKKwkJICAgICAgIGZsb29yLCBjaGlwKTsKKyNlbmRpZgorCQlOQU5EX0RJU0FCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGhpZ2ggKi8KKwkJcmV0dXJuIDA7CisJfQorCisJLyogUmVhZCB0aGUgTkFORCBjaGlwIElEOiAyLiBTZW5kIGFkZHJlc3MgYnl0ZSB6ZXJvICovCisJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OLCAwKTsKKworCS8qIFJlYWQgdGhlIG1hbnVmYWN0dXJlciBhbmQgZGV2aWNlIGlkIGNvZGVzIGZyb20gdGhlIGRldmljZSAqLworCisJbWZyID0gUkVBRF9OQU5EKG5hbmQtPklPX0FERFIpOworCisJaWQgPSBSRUFEX05BTkQobmFuZC0+SU9fQUREUik7CisKKwlOQU5EX0RJU0FCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGhpZ2ggKi8KKworI2lmZGVmIE5BTkRfREVCVUcKKwlwcmludGYoIk5hbkRfQ29tbWFuZCAoUmVhZElEKSBnb3QgJXggJXhcbiIsIG1mciwgaWQpOworI2VuZGlmCisJaWYgKG1mciA9PSAweGZmIHx8IG1mciA9PSAwKSB7CisJCS8qIE5vIHJlc3BvbnNlIC0gcmV0dXJuIGZhaWx1cmUgKi8KKwkJcmV0dXJuIDA7CisJfQorCisJLyogQ2hlY2sgaXQncyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgY2hpcCB3ZSBpZGVudGlmaWVkLgorCSAqIE0tU3lzdGVtcyBzYXkgdGhhdCBhbnkgZ2l2ZW4gbmFuZF9jaGlwIGRldmljZSBzaG91bGQgb25seQorCSAqIGNvbnRhaW4gX29uZV8gdHlwZSBvZiBmbGFzaCBwYXJ0LCBhbHRob3VnaCB0aGF0J3Mgbm90IGEKKwkgKiBoYXJkd2FyZSByZXN0cmljdGlvbi4gKi8KKwlpZiAobmFuZC0+bWZyKSB7CisJCWlmIChuYW5kLT5tZnIgPT0gbWZyICYmIG5hbmQtPmlkID09IGlkKSB7CisJCQlyZXR1cm4gMTsJLyogVGhpcyBpcyBhbm90aGVyIHRoZSBzYW1lIHRoZSBmaXJzdCAqLworCQl9IGVsc2UgeworCQkJcHJpbnRmKCJGbGFzaCBjaGlwIGF0IGZsb29yICVkLCBjaGlwICVkIGlzIGRpZmZlcmVudDpcbiIsCisJCQkgICAgICAgZmxvb3IsIGNoaXApOworCQl9CisJfQorCisJLyogUHJpbnQgYW5kIHN0b3JlIHRoZSBtYW51ZmFjdHVyZXIgYW5kIElEIGNvZGVzLiAqLworCWZvciAoaSA9IDA7IG5hbmRfZmxhc2hfaWRzW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7CisJCWlmIChtZnIgPT0gbmFuZF9mbGFzaF9pZHNbaV0ubWFudWZhY3R1cmVfaWQgJiYKKwkJICAgIGlkID09IG5hbmRfZmxhc2hfaWRzW2ldLm1vZGVsX2lkKSB7CisjaWZkZWYgTkFORF9ERUJVRworCQkJcHJpbnRmKCJGbGFzaCBjaGlwIGZvdW5kOlxuXHQgTWFudWZhY3R1cmVyIElEOiAweCUyLjJYLCAiCisJCQkgICAgICAgIkNoaXAgSUQ6IDB4JTIuMlggKCVzKVxuIiwgbWZyLCBpZCwKKwkJCSAgICAgICBuYW5kX2ZsYXNoX2lkc1tpXS5uYW1lKTsKKyNlbmRpZgorCQkJaWYgKCFuYW5kLT5tZnIpIHsKKwkJCQluYW5kLT5tZnIgPSBtZnI7CisJCQkJbmFuZC0+aWQgPSBpZDsKKwkJCQluYW5kLT5jaGlwc2hpZnQgPQorCQkJCSAgICBuYW5kX2ZsYXNoX2lkc1tpXS5jaGlwc2hpZnQ7CisJCQkJbmFuZC0+cGFnZTI1NiA9IG5hbmRfZmxhc2hfaWRzW2ldLnBhZ2UyNTY7CisJCQkJbmFuZC0+ZWNjc2l6ZSA9IDI1NjsKKwkJCQlpZiAobmFuZC0+cGFnZTI1NikgeworCQkJCQluYW5kLT5vb2JibG9jayA9IDI1NjsKKwkJCQkJbmFuZC0+b29ic2l6ZSA9IDg7CisJCQkJCW5hbmQtPnBhZ2Vfc2hpZnQgPSA4OworCQkJCX0gZWxzZSB7CisJCQkJCW5hbmQtPm9vYmJsb2NrID0gNTEyOworCQkJCQluYW5kLT5vb2JzaXplID0gMTY7CisJCQkJCW5hbmQtPnBhZ2Vfc2hpZnQgPSA5OworCQkJCX0KKwkJCQluYW5kLT5wYWdlYWRybGVuID0gbmFuZF9mbGFzaF9pZHNbaV0ucGFnZWFkcmxlbjsKKwkJCQluYW5kLT5lcmFzZXNpemUgID0gbmFuZF9mbGFzaF9pZHNbaV0uZXJhc2VzaXplOworCQkJCW5hbmQtPmNoaXBzX25hbWUgPSBuYW5kX2ZsYXNoX2lkc1tpXS5uYW1lOworCQkJCW5hbmQtPmJ1czE2CSA9IG5hbmRfZmxhc2hfaWRzW2ldLmJ1czE2OworIAkJCQlyZXR1cm4gMTsKKwkJCX0KKwkJCXJldHVybiAwOworCQl9CisJfQorCisKKyNpZmRlZiBOQU5EX0RFQlVHCisJLyogV2UgaGF2ZW4ndCBmdWxseSBpZGVudGlmaWVkIHRoZSBjaGlwLiBQcmludCBhcyBtdWNoIGFzIHdlIGtub3cuICovCisJcHJpbnRmKCJVbmtub3duIGZsYXNoIGNoaXAgZm91bmQ6ICUyLjJYICUyLjJYXG4iLAorCSAgICAgICBpZCwgbWZyKTsKKyNlbmRpZgorCisJcmV0dXJuIDA7Cit9CisKKy8qIE5hbkRfU2NhbkNoaXBzOiBGaW5kIGFsbCBOQU5EIGNoaXBzIHByZXNlbnQgaW4gYSBuYW5kX2NoaXAsIGFuZCBpZGVudGlmeSB0aGVtICovCisKK3N0YXRpYyB2b2lkIE5hbkRfU2NhbkNoaXBzKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCit7CisJaW50IGZsb29yLCBjaGlwOworCWludCBudW1jaGlwc1tOQU5EX01BWF9GTE9PUlNdOworCWludCBtYXhjaGlwcyA9IE5BTkRfTUFYX0NISVBTOworCWludCByZXQgPSAxOworCisJbmFuZC0+bnVtY2hpcHMgPSAwOworCW5hbmQtPm1mciA9IDA7CisJbmFuZC0+aWQgPSAwOworCisKKwkvKiBGb3IgZWFjaCBmbG9vciwgZmluZCB0aGUgbnVtYmVyIG9mIHZhbGlkIGNoaXBzIGl0IGNvbnRhaW5zICovCisJZm9yIChmbG9vciA9IDA7IGZsb29yIDwgTkFORF9NQVhfRkxPT1JTOyBmbG9vcisrKSB7CisJCXJldCA9IDE7CisJCW51bWNoaXBzW2Zsb29yXSA9IDA7CisJCWZvciAoY2hpcCA9IDA7IGNoaXAgPCBtYXhjaGlwcyAmJiByZXQgIT0gMDsgY2hpcCsrKSB7CisKKwkJCXJldCA9IE5hbkRfSWRlbnRDaGlwKG5hbmQsIGZsb29yLCBjaGlwKTsKKwkJCWlmIChyZXQpIHsKKwkJCQludW1jaGlwc1tmbG9vcl0rKzsKKwkJCQluYW5kLT5udW1jaGlwcysrOworCQkJfQorCQl9CisJfQorCisJLyogSWYgdGhlcmUgYXJlIG5vbmUgYXQgYWxsIHRoYXQgd2UgcmVjb2duaXNlLCBiYWlsICovCisJaWYgKCFuYW5kLT5udW1jaGlwcykgeworI2lmZGVmIE5BTkRfREVCVUcKKwkJcHV0cyAoIk5vIE5BTkQgZmxhc2ggY2hpcHMgcmVjb2duaXNlZC5cbiIpOworI2VuZGlmCisJCXJldHVybjsKKwl9CisKKwkvKiBBbGxvY2F0ZSBhbiBhcnJheSB0byBob2xkIHRoZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBjaGlwICovCisJbmFuZC0+Y2hpcHMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBOYW5kKSAqIG5hbmQtPm51bWNoaXBzKTsKKwlpZiAoIW5hbmQtPmNoaXBzKSB7CisJCXB1dHMgKCJObyBtZW1vcnkgZm9yIGFsbG9jYXRpbmcgY2hpcCBpbmZvIHN0cnVjdHVyZXNcbiIpOworCQlyZXR1cm47CisJfQorCisJcmV0ID0gMDsKKworCS8qIEZpbGwgb3V0IHRoZSBjaGlwIGFycmF5IHdpdGgge2Zsb29yLCBjaGlwbm99IGZvciBlYWNoCisJICogZGV0ZWN0ZWQgY2hpcCBpbiB0aGUgZGV2aWNlLiAqLworCWZvciAoZmxvb3IgPSAwOyBmbG9vciA8IE5BTkRfTUFYX0ZMT09SUzsgZmxvb3IrKykgeworCQlmb3IgKGNoaXAgPSAwOyBjaGlwIDwgbnVtY2hpcHNbZmxvb3JdOyBjaGlwKyspIHsKKwkJCW5hbmQtPmNoaXBzW3JldF0uZmxvb3IgPSBmbG9vcjsKKwkJCW5hbmQtPmNoaXBzW3JldF0uY2hpcCA9IGNoaXA7CisJCQluYW5kLT5jaGlwc1tyZXRdLmN1cmFkciA9IDA7CisJCQluYW5kLT5jaGlwc1tyZXRdLmN1cm1vZGUgPSAweDUwOworCQkJcmV0Kys7CisJCX0KKwl9CisKKwkvKiBDYWxjdWxhdGUgYW5kIHByaW50IHRoZSB0b3RhbCBzaXplIG9mIHRoZSBkZXZpY2UgKi8KKwluYW5kLT50b3RsZW4gPSBuYW5kLT5udW1jaGlwcyAqICgxIDw8IG5hbmQtPmNoaXBzaGlmdCk7CisKKyNpZmRlZiBOQU5EX0RFQlVHCisJcHJpbnRmKCIlZCBmbGFzaCBjaGlwcyBmb3VuZC4gVG90YWwgbmFuZF9jaGlwIHNpemU6ICVsZCBNQlxuIiwKKwkgICAgICAgbmFuZC0+bnVtY2hpcHMsIG5hbmQtPnRvdGxlbiA+PiAyMCk7CisjZW5kaWYKK30KKworLyogd2UgbmVlZCB0byBiZSBmYXN0IGhlcmUsIDEgdXMgcGVyIHJlYWQgdHJhbnNsYXRlcyB0byAxIHNlY29uZCBwZXIgbWVnICovCitzdGF0aWMgdm9pZCBOYW5EX1JlYWRCdWYgKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIHVfY2hhciAqIGRhdGFfYnVmLCBpbnQgY250cikKK3sKKwl1bnNpZ25lZCBsb25nIG5hbmRwdHIgPSBuYW5kLT5JT19BRERSOworCisJTmFuRF9Db21tYW5kIChuYW5kLCBOQU5EX0NNRF9SRUFEMCk7CisKKwlpZiAobmFuZC0+YnVzMTYpIHsKKwkJdTE2IHZhbDsKKworCQl3aGlsZSAoY250ciA+PSAxNikgeworCQkJdmFsID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gdmFsICYgMHhmZjsKKwkJCSpkYXRhX2J1ZisrID0gdmFsID4+IDg7CisJCQl2YWwgPSBSRUFEX05BTkQgKG5hbmRwdHIpOworCQkJKmRhdGFfYnVmKysgPSB2YWwgJiAweGZmOworCQkJKmRhdGFfYnVmKysgPSB2YWwgPj4gODsKKwkJCXZhbCA9IFJFQURfTkFORCAobmFuZHB0cik7CisJCQkqZGF0YV9idWYrKyA9IHZhbCAmIDB4ZmY7CisJCQkqZGF0YV9idWYrKyA9IHZhbCA+PiA4OworCQkJdmFsID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gdmFsICYgMHhmZjsKKwkJCSpkYXRhX2J1ZisrID0gdmFsID4+IDg7CisJCQl2YWwgPSBSRUFEX05BTkQgKG5hbmRwdHIpOworCQkJKmRhdGFfYnVmKysgPSB2YWwgJiAweGZmOworCQkJKmRhdGFfYnVmKysgPSB2YWwgPj4gODsKKwkJCXZhbCA9IFJFQURfTkFORCAobmFuZHB0cik7CisJCQkqZGF0YV9idWYrKyA9IHZhbCAmIDB4ZmY7CisJCQkqZGF0YV9idWYrKyA9IHZhbCA+PiA4OworCQkJdmFsID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gdmFsICYgMHhmZjsKKwkJCSpkYXRhX2J1ZisrID0gdmFsID4+IDg7CisJCQl2YWwgPSBSRUFEX05BTkQgKG5hbmRwdHIpOworCQkJKmRhdGFfYnVmKysgPSB2YWwgJiAweGZmOworCQkJKmRhdGFfYnVmKysgPSB2YWwgPj4gODsKKwkJCWNudHIgLT0gMTY7CisJCX0KKworCQl3aGlsZSAoY250ciA+IDApIHsKKwkJCXZhbCA9IFJFQURfTkFORCAobmFuZHB0cik7CisJCQkqZGF0YV9idWYrKyA9IHZhbCAmIDB4ZmY7CisJCQkqZGF0YV9idWYrKyA9IHZhbCA+PiA4OworCQkJY250ciAtPSAyOworCQl9CisJfSBlbHNlIHsKKwkJd2hpbGUgKGNudHIgPj0gMTYpIHsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCWNudHIgLT0gMTY7CisJCX0KKworCQl3aGlsZSAoY250ciA+IDApIHsKKwkJCSpkYXRhX2J1ZisrID0gUkVBRF9OQU5EIChuYW5kcHRyKTsKKwkJCWNudHItLTsKKwkJfQorCX0KK30KKworLyoKKyAqIE5BTkQgcmVhZCB3aXRoIEVDQworICovCitzdGF0aWMgaW50IG5hbmRfcmVhZF9lY2Moc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuLAorCQkgc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKmJ1ZiwgdV9jaGFyICplY2NfY29kZSkKK3sKKwlpbnQgY29sLCBwYWdlOworCWludCBlY2Nfc3RhdHVzID0gMDsKKyNpZmRlZiBDT05GSUdfTVREX05BTkRfRUNDCisJaW50IGo7CisJaW50IGVjY19mYWlsZWQgPSAwOworCXVfY2hhciAqZGF0YV9wb2k7CisJdV9jaGFyIGVjY19jYWxjWzZdOworI2VuZGlmCisKKwkvKiBEbyBub3QgYWxsb3cgcmVhZHMgcGFzdCBlbmQgb2YgZGV2aWNlICovCisJaWYgKChzdGFydCArIGxlbikgPiBuYW5kLT50b3RsZW4pIHsKKwkJcHJpbnRmICgiJXM6IEF0dGVtcHQgcmVhZCBiZXlvbmQgZW5kIG9mIGRldmljZSAleCAleCAleFxuIiwKKwkJCV9fRlVOQ1RJT05fXywgKHVpbnQpIHN0YXJ0LCAodWludCkgbGVuLCAodWludCkgbmFuZC0+dG90bGVuKTsKKwkJKnJldGxlbiA9IDA7CisJCXJldHVybiAtMTsKKwl9CisKKwkvKiBGaXJzdCB3ZSBjYWxjdWxhdGUgdGhlIHN0YXJ0aW5nIHBhZ2UgKi8KKwkvKnBhZ2UgPSBzaHIoc3RhcnQsIG5hbmQtPnBhZ2Vfc2hpZnQpOyovCisJcGFnZSA9IHN0YXJ0ID4+IG5hbmQtPnBhZ2Vfc2hpZnQ7CisKKwkvKiBHZXQgcmF3IHN0YXJ0aW5nIGNvbHVtbiAqLworCWNvbCA9IHN0YXJ0ICYgKG5hbmQtPm9vYmJsb2NrIC0gMSk7CisKKwkvKiBJbml0aWFsaXplIHJldHVybiB2YWx1ZSAqLworCSpyZXRsZW4gPSAwOworCisJLyogU2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLworCU5BTkRfRU5BQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBsb3cgKi8KKworCS8qIExvb3AgdW50aWwgYWxsIGRhdGEgcmVhZCAqLworCXdoaWxlICgqcmV0bGVuIDwgbGVuKSB7CisKKyNpZmRlZiBDT05GSUdfTVREX05BTkRfRUNDCisJCS8qIERvIHdlIGhhdmUgdGhpcyBwYWdlIGluIGNhY2hlID8gKi8KKwkJaWYgKG5hbmQtPmNhY2hlX3BhZ2UgPT0gcGFnZSkKKwkJCWdvdG8gcmVhZGRhdGE7CisJCS8qIFNlbmQgdGhlIHJlYWQgY29tbWFuZCAqLworCQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfUkVBRDApOworCQlpZiAobmFuZC0+YnVzMTYpIHsKKyAJCQlOYW5EX0FkZHJlc3MobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwKKwkJCQkgICAgIChwYWdlIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsgKGNvbCA+PiAxKSk7CisJCX0gZWxzZSB7CisgCQkJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCisJCQkJICAgICAocGFnZSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArIGNvbCk7CisJCX0KKworCQkvKiBSZWFkIGluIGEgcGFnZSArIG9vYiBkYXRhICovCisJCU5hbkRfUmVhZEJ1ZihuYW5kLCBuYW5kLT5kYXRhX2J1ZiwgbmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplKTsKKworCQkvKiBjb3B5IGRhdGEgaW50byBjYWNoZSwgZm9yIHJlYWQgb3V0IG9mIGNhY2hlIGFuZCBpZiBlY2MgZmFpbHMgKi8KKwkJaWYgKG5hbmQtPmRhdGFfY2FjaGUpIHsKKwkJCW1lbWNweSAobmFuZC0+ZGF0YV9jYWNoZSwgbmFuZC0+ZGF0YV9idWYsCisJCQkJbmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplKTsKKwkJfQorCisJCS8qIFBpY2sgdGhlIEVDQyBieXRlcyBvdXQgb2YgdGhlIG9vYiBkYXRhICovCisJCWZvciAoaiA9IDA7IGogPCA2OyBqKyspIHsKKwkJCWVjY19jb2RlW2pdID0gbmFuZC0+ZGF0YV9idWZbKG5hbmQtPm9vYmJsb2NrICsgb29iX2NvbmZpZy5lY2NfcG9zW2pdKV07CisJCX0KKworCQkvKiBDYWxjdWxhdGUgdGhlIEVDQyBhbmQgdmVyaWZ5IGl0ICovCisJCS8qIElmIGJsb2NrIHdhcyBub3Qgd3JpdHRlbiB3aXRoIEVDQywgc2tpcCBFQ0MgKi8KKwkJaWYgKG9vYl9jb25maWcuZWNjdmFsaWRfcG9zICE9IC0xICYmCisJCSAgICAobmFuZC0+ZGF0YV9idWZbbmFuZC0+b29iYmxvY2sgKyBvb2JfY29uZmlnLmVjY3ZhbGlkX3Bvc10gJiAweDBmKSAhPSAweDBmKSB7CisKKwkJCW5hbmRfY2FsY3VsYXRlX2VjYyAoJm5hbmQtPmRhdGFfYnVmWzBdLCAmZWNjX2NhbGNbMF0pOworCQkJc3dpdGNoIChuYW5kX2NvcnJlY3RfZGF0YSAoJm5hbmQtPmRhdGFfYnVmWzBdLCAmZWNjX2NvZGVbMF0sICZlY2NfY2FsY1swXSkpIHsKKwkJCWNhc2UgLTE6CisJCQkJcHJpbnRmICgiJXM6IEZhaWxlZCBFQ0MgcmVhZCwgcGFnZSAweCUwOHhcbiIsIF9fRlVOQ1RJT05fXywgcGFnZSk7CisJCQkJZWNjX2ZhaWxlZCsrOworCQkJCWJyZWFrOworCQkJY2FzZSAxOgorCQkJY2FzZSAyOgkvKiB0cmFuc2ZlciBFQ0MgY29ycmVjdGVkIGRhdGEgdG8gY2FjaGUgKi8KKwkJCQlpZiAobmFuZC0+ZGF0YV9jYWNoZSkKKwkJCQkJbWVtY3B5IChuYW5kLT5kYXRhX2NhY2hlLCBuYW5kLT5kYXRhX2J1ZiwgMjU2KTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChvb2JfY29uZmlnLmVjY3ZhbGlkX3BvcyAhPSAtMSAmJgorCQkgICAgbmFuZC0+b29iYmxvY2sgPT0gNTEyICYmIChuYW5kLT5kYXRhX2J1ZltuYW5kLT5vb2JibG9jayArIG9vYl9jb25maWcuZWNjdmFsaWRfcG9zXSAmIDB4ZjApICE9IDB4ZjApIHsKKworCQkJbmFuZF9jYWxjdWxhdGVfZWNjICgmbmFuZC0+ZGF0YV9idWZbMjU2XSwgJmVjY19jYWxjWzNdKTsKKwkJCXN3aXRjaCAobmFuZF9jb3JyZWN0X2RhdGEgKCZuYW5kLT5kYXRhX2J1ZlsyNTZdLCAmZWNjX2NvZGVbM10sICZlY2NfY2FsY1szXSkpIHsKKwkJCWNhc2UgLTE6CisJCQkJcHJpbnRmICgiJXM6IEZhaWxlZCBFQ0MgcmVhZCwgcGFnZSAweCUwOHhcbiIsIF9fRlVOQ1RJT05fXywgcGFnZSk7CisJCQkJZWNjX2ZhaWxlZCsrOworCQkJCWJyZWFrOworCQkJY2FzZSAxOgorCQkJY2FzZSAyOgkvKiB0cmFuc2ZlciBFQ0MgY29ycmVjdGVkIGRhdGEgdG8gY2FjaGUgKi8KKwkJCQlpZiAobmFuZC0+ZGF0YV9jYWNoZSkKKwkJCQkJbWVtY3B5ICgmbmFuZC0+ZGF0YV9jYWNoZVsyNTZdLCAmbmFuZC0+ZGF0YV9idWZbMjU2XSwgMjU2KTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorcmVhZGRhdGE6CisJCS8qIFJlYWQgdGhlIGRhdGEgZnJvbSBFQ0MgZGF0YSBidWZmZXIgaW50byByZXR1cm4gYnVmZmVyICovCisJCWRhdGFfcG9pID0gKG5hbmQtPmRhdGFfY2FjaGUpID8gbmFuZC0+ZGF0YV9jYWNoZSA6IG5hbmQtPmRhdGFfYnVmOworCQlkYXRhX3BvaSArPSBjb2w7CisJCWlmICgoKnJldGxlbiArIChuYW5kLT5vb2JibG9jayAtIGNvbCkpID49IGxlbikgeworCQkJbWVtY3B5IChidWYgKyAqcmV0bGVuLCBkYXRhX3BvaSwgbGVuIC0gKnJldGxlbik7CisJCQkqcmV0bGVuID0gbGVuOworCQl9IGVsc2UgeworCQkJbWVtY3B5IChidWYgKyAqcmV0bGVuLCBkYXRhX3BvaSwgIG5hbmQtPm9vYmJsb2NrIC0gY29sKTsKKwkJCSpyZXRsZW4gKz0gbmFuZC0+b29iYmxvY2sgLSBjb2w7CisJCX0KKwkJLyogU2V0IGNhY2hlIHBhZ2UgYWRkcmVzcywgaW52YWxpZGF0ZSwgaWYgZWNjX2ZhaWxlZCAqLworCQluYW5kLT5jYWNoZV9wYWdlID0gKG5hbmQtPmRhdGFfY2FjaGUgJiYgIWVjY19mYWlsZWQpID8gcGFnZSA6IC0xOworCisJCWVjY19zdGF0dXMgKz0gZWNjX2ZhaWxlZDsKKwkJZWNjX2ZhaWxlZCA9IDA7CisKKyNlbHNlCisJCS8qIFNlbmQgdGhlIHJlYWQgY29tbWFuZCAqLworCQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfUkVBRDApOworCQlpZiAobmFuZC0+YnVzMTYpIHsKKwkJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAorCQkJCSAgICAgKHBhZ2UgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKyAoY29sID4+IDEpKTsKKwkJfSBlbHNlIHsKKwkJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAorCQkJCSAgICAgKHBhZ2UgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKyBjb2wpOworCQl9CisKKwkJLyogUmVhZCB0aGUgZGF0YSBkaXJlY3RseSBpbnRvIHRoZSByZXR1cm4gYnVmZmVyICovCisJCWlmICgoKnJldGxlbiArIChuYW5kLT5vb2JibG9jayAtIGNvbCkpID49IGxlbikgeworCQkJTmFuRF9SZWFkQnVmKG5hbmQsIGJ1ZiArICpyZXRsZW4sIGxlbiAtICpyZXRsZW4pOworCQkJKnJldGxlbiA9IGxlbjsKKwkJCS8qIFdlJ3JlIGRvbmUgKi8KKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgeworCQkJTmFuRF9SZWFkQnVmKG5hbmQsIGJ1ZiArICpyZXRsZW4sIG5hbmQtPm9vYmJsb2NrIC0gY29sKTsKKwkJCSpyZXRsZW4gKz0gbmFuZC0+b29iYmxvY2sgLSBjb2w7CisJCQl9CisjZW5kaWYKKwkJLyogRm9yIHN1YnNlcXVlbnQgcmVhZHMgYWxpZ24gdG8gcGFnZSBib3VuZGFyeS4gKi8KKwkJY29sID0gMDsKKwkJLyogSW5jcmVtZW50IHBhZ2UgYWRkcmVzcyAqLworCQlwYWdlKys7CisJfQorCisJLyogRGUtc2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLworCU5BTkRfRElTQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gaGlnaCAqLworCisJLyoKKwkgKiBSZXR1cm4gc3VjY2VzcywgaWYgbm8gRUNDIGZhaWx1cmVzLCBlbHNlIC1FSU8KKwkgKiBmcyBkcml2ZXIgd2lsbCB0YWtlIGNhcmUgb2YgdGhhdCwgYmVjYXVzZQorCSAqIHJldGxlbiA9PSBkZXNpcmVkIGxlbiBhbmQgcmVzdWx0ID09IC1FSU8KKwkgKi8KKwlyZXR1cm4gZWNjX3N0YXR1cyA/IC0xIDogMDsKK30KKworLyoKKyAqCU5hbmRfcGFnZV9wcm9ncmFtIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHdyaXRlIGFuZCB3cml0ZXYgIQorICovCitzdGF0aWMgaW50IG5hbmRfd3JpdGVfcGFnZSAoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKKwkJCSAgICBpbnQgcGFnZSwgaW50IGNvbCwgaW50IGxhc3QsIHVfY2hhciAqIGVjY19jb2RlKQoreworCisJaW50IGk7CisJdW5zaWduZWQgbG9uZyBuYW5kcHRyID0gbmFuZC0+SU9fQUREUjsKKworI2lmZGVmIENPTkZJR19NVERfTkFORF9FQ0MKKyNpZmRlZiBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCisJaW50IGVjY19ieXRlcyA9IChuYW5kLT5vb2JibG9jayA9PSA1MTIpID8gNiA6IDM7CisjZW5kaWYKKyNlbmRpZgorCS8qIHBhZCBvb2IgYXJlYSAqLworCWZvciAoaSA9IG5hbmQtPm9vYmJsb2NrOyBpIDwgbmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplOyBpKyspCisJCW5hbmQtPmRhdGFfYnVmW2ldID0gMHhmZjsKKworI2lmZGVmIENPTkZJR19NVERfTkFORF9FQ0MKKwkvKiBaZXJvIG91dCB0aGUgRUNDIGFycmF5ICovCisJZm9yIChpID0gMDsgaSA8IDY7IGkrKykKKwkJZWNjX2NvZGVbaV0gPSAweDAwOworCisJLyogUmVhZCBiYWNrIHByZXZpb3VzIHdyaXR0ZW4gZGF0YSwgaWYgY29sID4gMCAqLworCWlmIChjb2wpIHsKKwkJTmFuRF9Db21tYW5kIChuYW5kLCBOQU5EX0NNRF9SRUFEMCk7CisJCWlmIChuYW5kLT5idXMxNikgeworCQkJTmFuRF9BZGRyZXNzIChuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAorCQkJCSAgICAgIChwYWdlIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsgKGNvbCA+PiAxKSk7CisJCX0gZWxzZSB7CisJCQlOYW5EX0FkZHJlc3MgKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCisJCQkJICAgICAgKHBhZ2UgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKyBjb2wpOworCQl9CisKKwkJaWYgKG5hbmQtPmJ1czE2KSB7CisJCQl1MTYgdmFsOworCisJCQlmb3IgKGkgPSAwOyBpIDwgY29sOyBpICs9IDIpIHsKKwkJCQl2YWwgPSBSRUFEX05BTkQgKG5hbmRwdHIpOworCQkJCW5hbmQtPmRhdGFfYnVmW2ldID0gdmFsICYgMHhmZjsKKwkJCQluYW5kLT5kYXRhX2J1ZltpICsgMV0gPSB2YWwgPj4gODsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWZvciAoaSA9IDA7IGkgPCBjb2w7IGkrKykKKwkJCQluYW5kLT5kYXRhX2J1ZltpXSA9IFJFQURfTkFORCAobmFuZHB0cik7CisJCX0KKwl9CisKKwkvKiBDYWxjdWxhdGUgYW5kIHdyaXRlIHRoZSBFQ0MgaWYgd2UgaGF2ZSBlbm91Z2ggZGF0YSAqLworCWlmICgoY29sIDwgbmFuZC0+ZWNjc2l6ZSkgJiYgKGxhc3QgPj0gbmFuZC0+ZWNjc2l6ZSkpIHsKKwkJbmFuZF9jYWxjdWxhdGVfZWNjICgmbmFuZC0+ZGF0YV9idWZbMF0sICYoZWNjX2NvZGVbMF0pKTsKKwkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQkJbmFuZC0+ZGF0YV9idWZbKG5hbmQtPm9vYmJsb2NrICsKKwkJCQkJb29iX2NvbmZpZy5lY2NfcG9zW2ldKV0gPSBlY2NfY29kZVtpXTsKKwkJfQorCQlpZiAob29iX2NvbmZpZy5lY2N2YWxpZF9wb3MgIT0gLTEpIHsKKwkJCW5hbmQtPmRhdGFfYnVmW25hbmQtPm9vYmJsb2NrICsKKwkJCQkgICAgICAgb29iX2NvbmZpZy5lY2N2YWxpZF9wb3NdID0gMHhmMDsKKwkJfQorCX0KKworCS8qIENhbGN1bGF0ZSBhbmQgd3JpdGUgdGhlIHNlY29uZCBFQ0MgaWYgd2UgaGF2ZSBlbm91Z2ggZGF0YSAqLworCWlmICgobmFuZC0+b29iYmxvY2sgPT0gNTEyKSAmJiAobGFzdCA9PSBuYW5kLT5vb2JibG9jaykpIHsKKwkJbmFuZF9jYWxjdWxhdGVfZWNjICgmbmFuZC0+ZGF0YV9idWZbMjU2XSwgJihlY2NfY29kZVszXSkpOworCQlmb3IgKGkgPSAzOyBpIDwgNjsgaSsrKSB7CisJCQluYW5kLT5kYXRhX2J1ZlsobmFuZC0+b29iYmxvY2sgKworCQkJCQlvb2JfY29uZmlnLmVjY19wb3NbaV0pXSA9IGVjY19jb2RlW2ldOworCQl9CisJCWlmIChvb2JfY29uZmlnLmVjY3ZhbGlkX3BvcyAhPSAtMSkgeworCQkJbmFuZC0+ZGF0YV9idWZbbmFuZC0+b29iYmxvY2sgKworCQkJCSAgICAgICBvb2JfY29uZmlnLmVjY3ZhbGlkX3Bvc10gJj0gMHgwZjsKKwkJfQorCX0KKyNlbmRpZgorCS8qIFByZXBhZCBmb3IgcGFydGlhbCBwYWdlIHByb2dyYW1taW5nICEhISAqLworCWZvciAoaSA9IDA7IGkgPCBjb2w7IGkrKykKKwkJbmFuZC0+ZGF0YV9idWZbaV0gPSAweGZmOworCisJLyogUG9zdHBhZCBmb3IgcGFydGlhbCBwYWdlIHByb2dyYW1taW5nICEhISBvb2IgaXMgYWxyZWFkeSBwYWRkZWQgKi8KKwlmb3IgKGkgPSBsYXN0OyBpIDwgbmFuZC0+b29iYmxvY2s7IGkrKykKKwkJbmFuZC0+ZGF0YV9idWZbaV0gPSAweGZmOworCisJLyogU2VuZCBjb21tYW5kIHRvIGJlZ2luIGF1dG8gcGFnZSBwcm9ncmFtbWluZyAqLworCU5hbkRfQ29tbWFuZCAobmFuZCwgTkFORF9DTURfUkVBRDApOworCU5hbkRfQ29tbWFuZCAobmFuZCwgTkFORF9DTURfU0VRSU4pOworCWlmIChuYW5kLT5idXMxNikgeworCQlOYW5EX0FkZHJlc3MgKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCisJCQkgICAgICAocGFnZSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArIChjb2wgPj4gMSkpOworCX0gZWxzZSB7CisJCU5hbkRfQWRkcmVzcyAobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwKKwkJCSAgICAgIChwYWdlIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsgY29sKTsKKwl9CisKKwkvKiBXcml0ZSBvdXQgY29tcGxldGUgcGFnZSBvZiBkYXRhICovCisJaWYgKG5hbmQtPmJ1czE2KSB7CisJCWZvciAoaSA9IDA7IGkgPCAobmFuZC0+b29iYmxvY2sgKyBuYW5kLT5vb2JzaXplKTsgaSArPSAyKSB7CisJCQlXUklURV9OQU5EIChuYW5kLT5kYXRhX2J1ZltpXSArCisJCQkJICAgIChuYW5kLT5kYXRhX2J1ZltpICsgMV0gPDwgOCksCisJCQkJICAgIG5hbmQtPklPX0FERFIpOworCQl9CisJfSBlbHNlIHsKKwkJZm9yIChpID0gMDsgaSA8IChuYW5kLT5vb2JibG9jayArIG5hbmQtPm9vYnNpemUpOyBpKyspCisJCQlXUklURV9OQU5EIChuYW5kLT5kYXRhX2J1ZltpXSwgbmFuZC0+SU9fQUREUik7CisJfQorCisJLyogU2VuZCBjb21tYW5kIHRvIGFjdHVhbGx5IHByb2dyYW0gdGhlIGRhdGEgKi8KKwlOYW5EX0NvbW1hbmQgKG5hbmQsIE5BTkRfQ01EX1BBR0VQUk9HKTsKKwlOYW5EX0NvbW1hbmQgKG5hbmQsIE5BTkRfQ01EX1NUQVRVUyk7CisjaWZkZWYgTkFORF9OT19SQgorCXsKKwkJdV9jaGFyIHJldF92YWw7CisKKwkJZG8geworCQkJcmV0X3ZhbCA9IFJFQURfTkFORCAobmFuZHB0cik7CS8qIHdhaXQgdGlsbCByZWFkeSAqLworCQl9IHdoaWxlICgocmV0X3ZhbCAmIDB4NDApICE9IDB4NDApOworCX0KKyNlbmRpZgorCS8qIFNlZSBpZiBkZXZpY2UgdGhpbmtzIGl0IHN1Y2NlZWRlZCAqLworCWlmIChSRUFEX05BTkQgKG5hbmQtPklPX0FERFIpICYgMHgwMSkgeworCQlwcmludGYgKCIlczogRmFpbGVkIHdyaXRlLCBwYWdlIDB4JTA4eCwgIiwgX19GVU5DVElPTl9fLAorCQkJcGFnZSk7CisJCXJldHVybiAtMTsKKwl9CisjaWZkZWYgQ09ORklHX01URF9OQU5EX1ZFUklGWV9XUklURQorCS8qCisJICogVGhlIE5BTkQgZGV2aWNlIGFzc3VtZXMgdGhhdCBpdCBpcyBhbHdheXMgd3JpdGluZyB0bworCSAqIGEgY2xlYW5seSBlcmFzZWQgcGFnZS4gSGVuY2UsIGl0IHBlcmZvcm1zIGl0cyBpbnRlcm5hbAorCSAqIHdyaXRlIHZlcmlmaWNhdGlvbiBvbmx5IG9uIGJpdHMgdGhhdCB0cmFuc2l0aW9uZWQgZnJvbQorCSAqIDEgdG8gMC4gVGhlIGRldmljZSBkb2VzIE5PVCB2ZXJpZnkgdGhlIHdob2xlIHBhZ2Ugb24gYQorCSAqIGJ5dGUgYnkgYnl0ZSBiYXNpcy4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgcGFnZSB3YXMKKwkgKiBub3QgY29tcGxldGVseSBlcmFzZWQgb3IgdGhlIHBhZ2UgaXMgYmVjb21pbmcgdW51c2FibGUKKwkgKiBkdWUgdG8gd2Vhci4gVGhlIHJlYWQgd2l0aCBFQ0Mgd291bGQgY2F0Y2ggdGhlIGVycm9yCisJICogbGF0ZXIgd2hlbiB0aGUgRUNDIHBhZ2UgY2hlY2sgZmFpbHMsIGJ1dCB3ZSB3b3VsZCByYXRoZXIKKwkgKiBjYXRjaCBpdCBlYXJseSBpbiB0aGUgcGFnZSB3cml0ZSBzdGFnZS4gQmV0dGVyIHRvIHdyaXRlCisJICogbm8gZGF0YSB0aGFuIGludmFsaWQgZGF0YS4KKwkgKi8KKworCS8qIFNlbmQgY29tbWFuZCB0byByZWFkIGJhY2sgdGhlIHBhZ2UgKi8KKwlpZiAoY29sIDwgbmFuZC0+ZWNjc2l6ZSkKKwkJTmFuRF9Db21tYW5kIChuYW5kLCBOQU5EX0NNRF9SRUFEMCk7CisJZWxzZQorCQlOYW5EX0NvbW1hbmQgKG5hbmQsIE5BTkRfQ01EX1JFQUQxKTsKKwlpZiAobmFuZC0+YnVzMTYpIHsKKwkJTmFuRF9BZGRyZXNzIChuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAorCQkJICAgICAgKHBhZ2UgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKyAoY29sID4+IDEpKTsKKwl9IGVsc2UgeworCQlOYW5EX0FkZHJlc3MgKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCisJCQkgICAgICAocGFnZSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArIGNvbCk7CisJfQorCisJLyogTG9vcCB0aHJvdWdoIGFuZCB2ZXJpZnkgdGhlIGRhdGEgKi8KKwlpZiAobmFuZC0+YnVzMTYpIHsKKwkJZm9yIChpID0gY29sOyBpIDwgbGFzdDsgaSA9ICsyKSB7CisJCQlpZiAoKG5hbmQtPmRhdGFfYnVmW2ldICsKKwkJCSAgICAgKG5hbmQtPmRhdGFfYnVmW2kgKyAxXSA8PCA4KSkgIT0gUkVBRF9OQU5EIChuYW5kLT5JT19BRERSKSkgeworCQkJCXByaW50ZiAoIiVzOiBGYWlsZWQgd3JpdGUgdmVyaWZ5LCBwYWdlIDB4JTA4eCAiLAorCQkJCQlfX0ZVTkNUSU9OX18sIHBhZ2UpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJfQorCX0gZWxzZSB7CisJCWZvciAoaSA9IGNvbDsgaSA8IGxhc3Q7IGkrKykgeworCQkJaWYgKG5hbmQtPmRhdGFfYnVmW2ldICE9IFJFQURfTkFORCAobmFuZC0+SU9fQUREUikpIHsKKwkJCQlwcmludGYgKCIlczogRmFpbGVkIHdyaXRlIHZlcmlmeSwgcGFnZSAweCUwOHggIiwKKwkJCQkJX19GVU5DVElPTl9fLCBwYWdlKTsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCX0KKwl9CisKKyNpZmRlZiBDT05GSUdfTVREX05BTkRfRUNDCisJLyoKKwkgKiBXZSBhbHNvIHdhbnQgdG8gY2hlY2sgdGhhdCB0aGUgRUNDIGJ5dGVzIHdyb3RlCisJICogY29ycmVjdGx5IGZvciB0aGUgc2FtZSByZWFzb25zIHN0YXRlZCBhYm92ZS4KKwkgKi8KKwlOYW5EX0NvbW1hbmQgKG5hbmQsIE5BTkRfQ01EX1JFQURPT0IpOworCWlmIChuYW5kLT5idXMxNikgeworCQlOYW5EX0FkZHJlc3MgKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCisJCQkgICAgICAocGFnZSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArIChjb2wgPj4gMSkpOworCX0gZWxzZSB7CisJCU5hbkRfQWRkcmVzcyAobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwKKwkJCSAgICAgIChwYWdlIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsgY29sKTsKKwl9CisJaWYgKG5hbmQtPmJ1czE2KSB7CisJCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5vb2JzaXplOyBpICs9IDIpIHsKKwkJCXUxNiB2YWw7CisKKwkJCXZhbCA9IFJFQURfTkFORCAobmFuZC0+SU9fQUREUik7CisJCQluYW5kLT5kYXRhX2J1ZltpXSA9IHZhbCAmIDB4ZmY7CisJCQluYW5kLT5kYXRhX2J1ZltpICsgMV0gPSB2YWwgPj4gODsKKwkJfQorCX0gZWxzZSB7CisJCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5vb2JzaXplOyBpKyspIHsKKwkJCW5hbmQtPmRhdGFfYnVmW2ldID0gUkVBRF9OQU5EIChuYW5kLT5JT19BRERSKTsKKwkJfQorCX0KKwlmb3IgKGkgPSAwOyBpIDwgZWNjX2J5dGVzOyBpKyspIHsKKwkJaWYgKChuYW5kLT5kYXRhX2J1Zlsob29iX2NvbmZpZy5lY2NfcG9zW2ldKV0gIT0gZWNjX2NvZGVbaV0pICYmIGVjY19jb2RlW2ldKSB7CisJCQlwcmludGYgKCIlczogRmFpbGVkIEVDQyB3cml0ZSAiCisJCQkJInZlcmlmeSwgcGFnZSAweCUwOHgsICIKKwkJCQkiJTZpIGJ5dGVzIHdlcmUgc3VjY2VzZnVsXG4iLAorCQkJCV9fRlVOQ1RJT05fXywgcGFnZSwgaSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisjZW5kaWYJLyogQ09ORklHX01URF9OQU5EX0VDQyAqLworI2VuZGlmCS8qIENPTkZJR19NVERfTkFORF9WRVJJRllfV1JJVEUgKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuYW5kX3dyaXRlX2VjYyAoc3RydWN0IG5hbmRfY2hpcCogbmFuZCwgc2l6ZV90IHRvLCBzaXplX3QgbGVuLAorCQkJICAgc2l6ZV90ICogcmV0bGVuLCBjb25zdCB1X2NoYXIgKiBidWYsIHVfY2hhciAqIGVjY19jb2RlKQoreworCWludCBpLCBwYWdlLCBjb2wsIGNudCwgcmV0ID0gMDsKKworCS8qIERvIG5vdCBhbGxvdyB3cml0ZSBwYXN0IGVuZCBvZiBkZXZpY2UgKi8KKwlpZiAoKHRvICsgbGVuKSA+IG5hbmQtPnRvdGxlbikgeworCQlwcmludGYgKCIlczogQXR0ZW1wdCB0byB3cml0ZSBwYXN0IGVuZCBvZiBwYWdlXG4iLCBfX0ZVTkNUSU9OX18pOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogU2hpZnQgdG8gZ2V0IHBhZ2UgKi8KKwlwYWdlID0gKChpbnQpIHRvKSA+PiBuYW5kLT5wYWdlX3NoaWZ0OworCisJLyogR2V0IHRoZSBzdGFydGluZyBjb2x1bW4gKi8KKwljb2wgPSB0byAmIChuYW5kLT5vb2JibG9jayAtIDEpOworCisJLyogSW5pdGlhbGl6ZSByZXR1cm4gbGVuZ3RoIHZhbHVlICovCisJKnJldGxlbiA9IDA7CisKKwkvKiBTZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisjaWZkZWYgQ09ORklHX09NQVAxNTEwCisJYXJjaGZsYXNod3AoMCwwKTsKKyNlbmRpZgorI2lmZGVmIENGR19OQU5EX1dQCisJTkFORF9XUF9PRkYoKTsKKyNlbmRpZgorCisgICAgCU5BTkRfRU5BQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBsb3cgKi8KKworCS8qIENoZWNrIHRoZSBXUCBiaXQgKi8KKwlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfU1RBVFVTKTsKKwlpZiAoIShSRUFEX05BTkQobmFuZC0+SU9fQUREUikgJiAweDgwKSkgeworCQlwcmludGYgKCIlczogRGV2aWNlIGlzIHdyaXRlIHByb3RlY3RlZCEhIVxuIiwgX19GVU5DVElPTl9fKTsKKwkJcmV0ID0gLTE7CisJCWdvdG8gb3V0OworCX0KKworCS8qIExvb3AgdW50aWwgYWxsIGRhdGEgaXMgd3JpdHRlbiAqLworCXdoaWxlICgqcmV0bGVuIDwgbGVuKSB7CisJCS8qIEludmFsaWRhdGUgY2FjaGUsIGlmIHdlIHdyaXRlIHRvIHRoaXMgcGFnZSAqLworCQlpZiAobmFuZC0+Y2FjaGVfcGFnZSA9PSBwYWdlKQorCQkJbmFuZC0+Y2FjaGVfcGFnZSA9IC0xOworCisJCS8qIFdyaXRlIGRhdGEgaW50byBidWZmZXIgKi8KKwkJaWYgKChjb2wgKyBsZW4pID49IG5hbmQtPm9vYmJsb2NrKSB7CisJCQlmb3IgKGkgPSBjb2wsIGNudCA9IDA7IGkgPCBuYW5kLT5vb2JibG9jazsgaSsrLCBjbnQrKykgeworCQkJCW5hbmQtPmRhdGFfYnVmW2ldID0gYnVmWygqcmV0bGVuICsgY250KV07CisJCQl9CisJCX0gZWxzZSB7CisJCQlmb3IgKGkgPSBjb2wsIGNudCA9IDA7IGNudCA8IChsZW4gLSAqcmV0bGVuKTsgaSsrLCBjbnQrKykgeworCQkJCW5hbmQtPmRhdGFfYnVmW2ldID0gYnVmWygqcmV0bGVuICsgY250KV07CisJCQl9CisJCX0KKwkJLyogV2UgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIGZvciB3cml0ZSBhbmQgd3JpdGV2ICEpICovCisJCXJldCA9IG5hbmRfd3JpdGVfcGFnZSAobmFuZCwgcGFnZSwgY29sLCBpLCBlY2NfY29kZSk7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsKKworCQkvKiBOZXh0IGRhdGEgc3RhcnQgYXQgcGFnZSBib3VuZGFyeSAqLworCQljb2wgPSAwOworCisJCS8qIFVwZGF0ZSB3cml0dGVuIGJ5dGVzIGNvdW50ICovCisJCSpyZXRsZW4gKz0gY250OworCisJCS8qIEluY3JlbWVudCBwYWdlIGFkZHJlc3MgKi8KKwkJcGFnZSsrOworCX0KKworCS8qIFJldHVybiBoYXBweSAqLworCSpyZXRsZW4gPSBsZW47CisKK291dDoKKwkvKiBEZS1zZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisJTkFORF9ESVNBQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBoaWdoICovCisjaWZkZWYgQ09ORklHX09NQVAxNTEwCisgICAgCWFyY2hmbGFzaHdwKDAsMSk7CisjZW5kaWYKKyNpZmRlZiBDRkdfTkFORF9XUAorCU5BTkRfV1BfT04oKTsKKyNlbmRpZgorCisJcmV0dXJuIHJldDsKK30KKworLyogcmVhZCBmcm9tIHRoZSAxNiBieXRlcyBvZiBvb2IgZGF0YSB0aGF0IGNvcnJlc3BvbmQgdG8gYSA1MTIgYnl0ZQorICogcGFnZSBvciAyIDI1Ni1ieXRlIHBhZ2VzLgorICovCitpbnQgbmFuZF9yZWFkX29vYihzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBzaXplX3Qgb2ZzLCBzaXplX3QgbGVuLAorCQkJIHNpemVfdCAqIHJldGxlbiwgdV9jaGFyICogYnVmKQoreworCWludCBsZW4yNTYgPSAwOworCXN0cnVjdCBOYW5kICpteWNoaXA7CisJaW50IHJldCA9IDA7CisKKwlteWNoaXAgPSAmbmFuZC0+Y2hpcHNbb2ZzID4+IG5hbmQtPmNoaXBzaGlmdF07CisKKwkvKiB1cGRhdGUgYWRkcmVzcyBmb3IgMk0geCA4Yml0IGRldmljZXMuIE9PQiBzdGFydHMgb24gdGhlIHNlY29uZCAqLworCS8qIHBhZ2UgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIG5hbmRfcmVhZF9lY2MuICovCisJaWYgKG5hbmQtPnBhZ2UyNTYpIHsKKwkJaWYgKCEob2ZzICYgMHg4KSkKKwkJCW9mcyArPSAweDEwMDsKKwkJZWxzZQorCQkJb2ZzIC09IDB4ODsKKwl9CisKKwlOQU5EX0VOQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gbG93ICovCisJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1JFQURPT0IpOworCWlmIChuYW5kLT5idXMxNikgeworIAkJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsCisJCQkgICAgICgob2ZzID4+IG5hbmQtPnBhZ2Vfc2hpZnQpIDw8IG5hbmQtPnBhZ2Vfc2hpZnQpICsKKyAJCQkJKChvZnMgJiAobmFuZC0+b29iYmxvY2sgLSAxKSkgPj4gMSkpOworCX0gZWxzZSB7CisJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLCBvZnMpOworCX0KKworCS8qIHRyZWF0IGNyb3NzaW5nIDgtYnl0ZSBPT0IgZGF0YSBmb3IgMk0geCA4Yml0IGRldmljZXMgKi8KKwkvKiBOb3RlOiBkYXRhc2hlZXQgc2F5cyBpdCBzaG91bGQgYXV0b21hdGljYWx5IHdyYXAgdG8gdGhlICovCisJLyogICAgICAgbmV4dCBPT0IgYmxvY2ssIGJ1dCBpdCBkaWRuJ3Qgd29yayBoZXJlLiBtZi4gICAgICAqLworCWlmIChuYW5kLT5wYWdlMjU2ICYmIG9mcyArIGxlbiA+IChvZnMgfCAweDcpICsgMSkgeworCQlsZW4yNTYgPSAob2ZzIHwgMHg3KSArIDEgLSBvZnM7CisJCU5hbkRfUmVhZEJ1ZihuYW5kLCBidWYsIGxlbjI1Nik7CisKKwkJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1JFQURPT0IpOworCQlOYW5EX0FkZHJlc3MobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwgb2ZzICYgKH4weDFmZikpOworCX0KKworCU5hbkRfUmVhZEJ1ZihuYW5kLCAmYnVmW2xlbjI1Nl0sIGxlbiAtIGxlbjI1Nik7CisKKwkqcmV0bGVuID0gbGVuOworCS8qIFJlYWRpbmcgdGhlIGZ1bGwgT09CIGRhdGEgZHJvcHMgdXMgb2ZmIG9mIHRoZSBlbmQgb2YgdGhlIHBhZ2UsCisJICogY2F1c2luZyB0aGUgZmxhc2ggZGV2aWNlIHRvIGdvIGludG8gYnVzeSBtb2RlLCBzbyB3ZSBuZWVkCisJICogdG8gd2FpdCB1bnRpbCByZWFkeSAxMS40LjEgYW5kIFRvc2hpYmEgVEM1ODI1NkZUIG5hbmRzICovCisKKwlyZXQgPSBOYW5EX1dhaXRSZWFkeShuYW5kLCAxKTsKKwlOQU5EX0RJU0FCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGhpZ2ggKi8KKworCXJldHVybiByZXQ7CisKK30KKworLyogd3JpdGUgdG8gdGhlIDE2IGJ5dGVzIG9mIG9vYiBkYXRhIHRoYXQgY29ycmVzcG9uZCB0byBhIDUxMiBieXRlCisgKiBwYWdlIG9yIDIgMjU2LWJ5dGUgcGFnZXMuCisgKi8KK2ludCBuYW5kX3dyaXRlX29vYihzdHJ1Y3QgbmFuZF9jaGlwKiBuYW5kLCBzaXplX3Qgb2ZzLCBzaXplX3QgbGVuLAorCQkgIHNpemVfdCAqIHJldGxlbiwgY29uc3QgdV9jaGFyICogYnVmKQoreworCWludCBsZW4yNTYgPSAwOworCWludCBpOworCXVuc2lnbmVkIGxvbmcgbmFuZHB0ciA9IG5hbmQtPklPX0FERFI7CisKKyNpZmRlZiBQU1lDSE9fREVCVUcKKwlwcmludGYoIm5hbmRfd3JpdGVfb29iKCVseCwgJWQpOiAlMi4yWCAlMi4yWCAlMi4yWCAlMi4yWCAuLi4gJTIuMlggJTIuMlggLi4gJTIuMlggJTIuMlhcbiIsCisJICAgICAgIChsb25nKW9mcywgbGVuLCBidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdLCBidWZbM10sCisJICAgICAgIGJ1Zls4XSwgYnVmWzldLCBidWZbMTRdLGJ1ZlsxNV0pOworI2VuZGlmCisKKwlOQU5EX0VOQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gbG93IHRvIGVuYWJsZSBjaGlwICovCisKKwkvKiBSZXNldCB0aGUgY2hpcCAqLworCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9SRVNFVCk7CisKKwkvKiBpc3N1ZSB0aGUgUmVhZDIgY29tbWFuZCB0byBzZXQgdGhlIHBvaW50ZXIgdG8gdGhlIFNwYXJlIERhdGEgQXJlYS4gKi8KKwlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfUkVBRE9PQik7CisJaWYgKG5hbmQtPmJ1czE2KSB7CisgCQlOYW5EX0FkZHJlc3MobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwKKwkJCSAgICAgKChvZnMgPj4gbmFuZC0+cGFnZV9zaGlmdCkgPDwgbmFuZC0+cGFnZV9zaGlmdCkgKworIAkJCQkoKG9mcyAmIChuYW5kLT5vb2JibG9jayAtIDEpKSA+PiAxKSk7CisJfSBlbHNlIHsKKyAJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLCBvZnMpOworCX0KKworCS8qIHVwZGF0ZSBhZGRyZXNzIGZvciAyTSB4IDhiaXQgZGV2aWNlcy4gT09CIHN0YXJ0cyBvbiB0aGUgc2Vjb25kICovCisJLyogcGFnZSB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggbmFuZF9yZWFkX2VjYy4gKi8KKwlpZiAobmFuZC0+cGFnZTI1NikgeworCQlpZiAoIShvZnMgJiAweDgpKQorCQkJb2ZzICs9IDB4MTAwOworCQllbHNlCisJCQlvZnMgLT0gMHg4OworCX0KKworCS8qIGlzc3VlIHRoZSBTZXJpYWwgRGF0YSBJbiBjb21tYW5kIHRvIGluaXRpYWwgdGhlIFBhZ2UgUHJvZ3JhbSBwcm9jZXNzICovCisJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1NFUUlOKTsKKwlpZiAobmFuZC0+YnVzMTYpIHsKKyAJCU5hbkRfQWRkcmVzcyhuYW5kLCBBRERSX0NPTFVNTl9QQUdFLAorCQkJICAgICAoKG9mcyA+PiBuYW5kLT5wYWdlX3NoaWZ0KSA8PCBuYW5kLT5wYWdlX3NoaWZ0KSArCisgCQkJCSgob2ZzICYgKG5hbmQtPm9vYmJsb2NrIC0gMSkpID4+IDEpKTsKKwl9IGVsc2UgeworIAkJTmFuRF9BZGRyZXNzKG5hbmQsIEFERFJfQ09MVU1OX1BBR0UsIG9mcyk7CisJfQorCisJLyogdHJlYXQgY3Jvc3NpbmcgOC1ieXRlIE9PQiBkYXRhIGZvciAyTSB4IDhiaXQgZGV2aWNlcyAqLworCS8qIE5vdGU6IGRhdGFzaGVldCBzYXlzIGl0IHNob3VsZCBhdXRvbWF0aWNhbHkgd3JhcCB0byB0aGUgKi8KKwkvKiAgICAgICBuZXh0IE9PQiBibG9jaywgYnV0IGl0IGRpZG4ndCB3b3JrIGhlcmUuIG1mLiAgICAgICovCisJaWYgKG5hbmQtPnBhZ2UyNTYgJiYgb2ZzICsgbGVuID4gKG9mcyB8IDB4NykgKyAxKSB7CisJCWxlbjI1NiA9IChvZnMgfCAweDcpICsgMSAtIG9mczsKKwkJZm9yIChpID0gMDsgaSA8IGxlbjI1NjsgaSsrKQorCQkJV1JJVEVfTkFORChidWZbaV0sIG5hbmRwdHIpOworCisJCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9QQUdFUFJPRyk7CisJCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9TVEFUVVMpOworI2lmZGVmIE5BTkRfTk9fUkIKKyAgIAkJeyB1X2NoYXIgcmV0X3ZhbDsKKwkJCWRvIHsKKwkJCQlyZXRfdmFsID0gUkVBRF9OQU5EKG5hbmRwdHIpOyAvKiB3YWl0IHRpbGwgcmVhZHkgKi8KKwkJCX0gd2hpbGUgKChyZXRfdmFsICYgMHg0MCkgIT0gMHg0MCk7CisJCX0KKyNlbmRpZgorCQlpZiAoUkVBRF9OQU5EKG5hbmRwdHIpICYgMSkgeworCQkJcHV0cyAoIkVycm9yIHByb2dyYW1taW5nIG9vYiBkYXRhXG4iKTsKKwkJCS8qIFRoZXJlIHdhcyBhbiBlcnJvciAqLworCQkJTkFORF9ESVNBQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBoaWdoICovCisJCQkqcmV0bGVuID0gMDsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfU0VRSU4pOworCQlOYW5EX0FkZHJlc3MobmFuZCwgQUREUl9DT0xVTU5fUEFHRSwgb2ZzICYgKH4weDFmZikpOworCX0KKworCWlmIChuYW5kLT5idXMxNikgeworCQlmb3IgKGkgPSBsZW4yNTY7IGkgPCBsZW47IGkgKz0gMikgeworCQkJV1JJVEVfTkFORChidWZbaV0gKyAoYnVmW2krMV0gPDwgOCksIG5hbmRwdHIpOworCQl9CisJfSBlbHNlIHsKKwkJZm9yIChpID0gbGVuMjU2OyBpIDwgbGVuOyBpKyspCisJCQlXUklURV9OQU5EKGJ1ZltpXSwgbmFuZHB0cik7CisJfQorCisJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1BBR0VQUk9HKTsKKwlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfU1RBVFVTKTsKKyNpZmRlZiBOQU5EX05PX1JCCisJewl1X2NoYXIgcmV0X3ZhbDsKKwkJZG8geworCQkJcmV0X3ZhbCA9IFJFQURfTkFORChuYW5kcHRyKTsgLyogd2FpdCB0aWxsIHJlYWR5ICovCisJCX0gd2hpbGUgKChyZXRfdmFsICYgMHg0MCkgIT0gMHg0MCk7CisJfQorI2VuZGlmCisJaWYgKFJFQURfTkFORChuYW5kcHRyKSAmIDEpIHsKKwkJcHV0cyAoIkVycm9yIHByb2dyYW1taW5nIG9vYiBkYXRhXG4iKTsKKwkJLyogVGhlcmUgd2FzIGFuIGVycm9yICovCisJCU5BTkRfRElTQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gaGlnaCAqLworCQkqcmV0bGVuID0gMDsKKwkJcmV0dXJuIC0xOworCX0KKworCU5BTkRfRElTQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gaGlnaCAqLworCSpyZXRsZW4gPSBsZW47CisJcmV0dXJuIDA7CisKK30KKworaW50IG5hbmRfbGVnYWN5X2VyYXNlKHN0cnVjdCBuYW5kX2NoaXAqIG5hbmQsIHNpemVfdCBvZnMsIHNpemVfdCBsZW4sIGludCBjbGVhbikKK3sKKwkvKiBUaGlzIGlzIGRlZmluZWQgYXMgYSBzdHJ1Y3R1cmUgc28gaXQgd2lsbCB3b3JrIG9uIGFueSBzeXN0ZW0KKwkgKiB1c2luZyBuYXRpdmUgZW5kaWFuIGpmZnMyICh0aGUgZGVmYXVsdCkuCisJICovCisJc3RhdGljIHN0cnVjdCBqZmZzMl91bmtub3duX25vZGUgY2xlYW5fbWFya2VyID0geworCQlKRkZTMl9NQUdJQ19CSVRNQVNLLAorCQlKRkZTMl9OT0RFVFlQRV9DTEVBTk1BUktFUiwKKwkJOAkJLyogOCBieXRlcyBpbiB0aGlzIG5vZGUgKi8KKwl9OworCXVuc2lnbmVkIGxvbmcgbmFuZHB0cjsKKwlzdHJ1Y3QgTmFuZCAqbXljaGlwOworCWludCByZXQgPSAwOworCisJaWYgKG9mcyAmIChuYW5kLT5lcmFzZXNpemUtMSkgfHwgbGVuICYgKG5hbmQtPmVyYXNlc2l6ZS0xKSkgeworCQlwcmludGYgKCJPZmZzZXQgYW5kIHNpemUgbXVzdCBiZSBzZWN0b3IgYWxpZ25lZCwgZXJhc2VzaXplID0gJWRcbiIsCisJCQkoaW50KSBuYW5kLT5lcmFzZXNpemUpOworCQlyZXR1cm4gLTE7CisJfQorCisJbmFuZHB0ciA9IG5hbmQtPklPX0FERFI7CisKKwkvKiBTZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisjaWZkZWYgQ09ORklHX09NQVAxNTEwCisJYXJjaGZsYXNod3AoMCwwKTsKKyNlbmRpZgorI2lmZGVmIENGR19OQU5EX1dQCisJTkFORF9XUF9PRkYoKTsKKyNlbmRpZgorICAgIE5BTkRfRU5BQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBsb3cgKi8KKworCS8qIENoZWNrIHRoZSBXUCBiaXQgKi8KKwlOYW5EX0NvbW1hbmQobmFuZCwgTkFORF9DTURfU1RBVFVTKTsKKwlpZiAoIShSRUFEX05BTkQobmFuZC0+SU9fQUREUikgJiAweDgwKSkgeworCQlwcmludGYgKCJuYW5kX3dyaXRlX2VjYzogRGV2aWNlIGlzIHdyaXRlIHByb3RlY3RlZCEhIVxuIik7CisJCXJldCA9IC0xOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBDaGVjayB0aGUgV1AgYml0ICovCisJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX1NUQVRVUyk7CisJaWYgKCEoUkVBRF9OQU5EKG5hbmQtPklPX0FERFIpICYgMHg4MCkpIHsKKwkJcHJpbnRmICgiJXM6IERldmljZSBpcyB3cml0ZSBwcm90ZWN0ZWQhISFcbiIsIF9fRlVOQ1RJT05fXyk7CisJCXJldCA9IC0xOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBGSVhNRTogRG8gbmFuZCBpbiB0aGUgYmFja2dyb3VuZC4gVXNlIHRpbWVycyBvciBzY2hlZHVsZV90YXNrKCkgKi8KKwl3aGlsZShsZW4pIHsKKwkJLypteWNoaXAgPSAmbmFuZC0+Y2hpcHNbc2hyKG9mcywgbmFuZC0+Y2hpcHNoaWZ0KV07Ki8KKwkJbXljaGlwID0gJm5hbmQtPmNoaXBzW29mcyA+PiBuYW5kLT5jaGlwc2hpZnRdOworCisJCS8qIGFsd2F5cyBjaGVjayBmb3IgYmFkIGJsb2NrIGZpcnN0LCBnZW51aW5lIGJhZCBibG9ja3MKKwkJICogc2hvdWxkIF9uZXZlcl8gIGJlIGVyYXNlZC4KKwkJICovCisJCWlmIChBTExPV19FUkFTRV9CQURfREVCVUcgfHwgIWNoZWNrX2Jsb2NrKG5hbmQsIG9mcykpIHsKKwkJCS8qIFNlbGVjdCB0aGUgTkFORCBkZXZpY2UgKi8KKwkJCU5BTkRfRU5BQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBsb3cgKi8KKworCQkJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX0VSQVNFMSk7CisJCQlOYW5EX0FkZHJlc3MobmFuZCwgQUREUl9QQUdFLCBvZnMpOworCQkJTmFuRF9Db21tYW5kKG5hbmQsIE5BTkRfQ01EX0VSQVNFMik7CisKKwkJCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9TVEFUVVMpOworCisjaWZkZWYgTkFORF9OT19SQgorCQkJewl1X2NoYXIgcmV0X3ZhbDsKKwkJCQlkbyB7CisJCQkJCXJldF92YWwgPSBSRUFEX05BTkQobmFuZHB0cik7IC8qIHdhaXQgdGlsbCByZWFkeSAqLworCQkJCX0gd2hpbGUgKChyZXRfdmFsICYgMHg0MCkgIT0gMHg0MCk7CisJCQl9CisjZW5kaWYKKwkJCWlmIChSRUFEX05BTkQobmFuZHB0cikgJiAxKSB7CisJCQkJcHJpbnRmICgiJXM6IEVycm9yIGVyYXNpbmcgYXQgMHglbHhcbiIsCisJCQkJCV9fRlVOQ1RJT05fXywgKGxvbmcpb2ZzKTsKKwkJCQkvKiBUaGVyZSB3YXMgYW4gZXJyb3IgKi8KKwkJCQlyZXQgPSAtMTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJCWlmIChjbGVhbikgeworCQkJCWludCBuOwkvKiByZXR1cm4gdmFsdWUgbm90IHVzZWQgKi8KKwkJCQlpbnQgcCwgbDsKKworCQkJCS8qIGNsZWFuIG1hcmtlciBwb3NpdGlvbiBhbmQgc2l6ZSBkZXBlbmQKKwkJCQkgKiBvbiB0aGUgcGFnZSBzaXplLCBzaW5jZSAyNTYgYnl0ZSBwYWdlcworCQkJCSAqIG9ubHkgaGF2ZSA4IGJ5dGVzIG9mIG9vYiBkYXRhCisJCQkJICovCisJCQkJaWYgKG5hbmQtPnBhZ2UyNTYpIHsKKwkJCQkJcCA9IE5BTkRfSkZGUzJfT09COF9GU0RBUE9TOworCQkJCQlsID0gTkFORF9KRkZTMl9PT0I4X0ZTREFMRU47CisJCQkJfSBlbHNlIHsKKwkJCQkJcCA9IE5BTkRfSkZGUzJfT09CMTZfRlNEQVBPUzsKKwkJCQkJbCA9IE5BTkRfSkZGUzJfT09CMTZfRlNEQUxFTjsKKwkJCQl9CisKKwkJCQlyZXQgPSBuYW5kX3dyaXRlX29vYihuYW5kLCBvZnMgKyBwLCBsLCAoc2l6ZV90ICopJm4sCisJCQkJCQkgICAgICh1X2NoYXIgKikmY2xlYW5fbWFya2VyKTsKKwkJCQkvKiBxdWl0IGhlcmUgaWYgd3JpdGUgZmFpbGVkICovCisJCQkJaWYgKHJldCkKKwkJCQkJZ290byBvdXQ7CisJCQl9CisJCX0KKwkJb2ZzICs9IG5hbmQtPmVyYXNlc2l6ZTsKKwkJbGVuIC09IG5hbmQtPmVyYXNlc2l6ZTsKKwl9CisKK291dDoKKwkvKiBEZS1zZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisJTkFORF9ESVNBQkxFX0NFKG5hbmQpOyAgLyogc2V0IHBpbiBoaWdoICovCisjaWZkZWYgQ09ORklHX09NQVAxNTEwCisgICAgCWFyY2hmbGFzaHdwKDAsMSk7CisjZW5kaWYKKyNpZmRlZiBDRkdfTkFORF9XUAorCU5BTkRfV1BfT04oKTsKKyNlbmRpZgorCisJcmV0dXJuIHJldDsKK30KKworCitzdGF0aWMgaW5saW5lIGludCBuYW5kY2hlY2sodW5zaWduZWQgbG9uZyBwb3RlbnRpYWwsIHVuc2lnbmVkIGxvbmcgcGh5c2FkcikKK3sKKwlyZXR1cm4gMDsKK30KKwordW5zaWduZWQgbG9uZyBuYW5kX3Byb2JlKHVuc2lnbmVkIGxvbmcgcGh5c2FkcikKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kID0gTlVMTDsKKwlpbnQgaSA9IDAsIENoaXBJRCA9IDE7CisKKyNpZmRlZiBDT05GSUdfTVREX05BTkRfRUNDX0pGRlMyCisJb29iX2NvbmZpZy5lY2NfcG9zWzBdID0gTkFORF9KRkZTMl9PT0JfRUNDUE9TMDsKKwlvb2JfY29uZmlnLmVjY19wb3NbMV0gPSBOQU5EX0pGRlMyX09PQl9FQ0NQT1MxOworCW9vYl9jb25maWcuZWNjX3Bvc1syXSA9IE5BTkRfSkZGUzJfT09CX0VDQ1BPUzI7CisJb29iX2NvbmZpZy5lY2NfcG9zWzNdID0gTkFORF9KRkZTMl9PT0JfRUNDUE9TMzsKKwlvb2JfY29uZmlnLmVjY19wb3NbNF0gPSBOQU5EX0pGRlMyX09PQl9FQ0NQT1M0OworCW9vYl9jb25maWcuZWNjX3Bvc1s1XSA9IE5BTkRfSkZGUzJfT09CX0VDQ1BPUzU7CisJb29iX2NvbmZpZy5lY2N2YWxpZF9wb3MgPSA0OworI2Vsc2UKKwlvb2JfY29uZmlnLmVjY19wb3NbMF0gPSBOQU5EX05PT0JfRUNDUE9TMDsKKwlvb2JfY29uZmlnLmVjY19wb3NbMV0gPSBOQU5EX05PT0JfRUNDUE9TMTsKKwlvb2JfY29uZmlnLmVjY19wb3NbMl0gPSBOQU5EX05PT0JfRUNDUE9TMjsKKwlvb2JfY29uZmlnLmVjY19wb3NbM10gPSBOQU5EX05PT0JfRUNDUE9TMzsKKwlvb2JfY29uZmlnLmVjY19wb3NbNF0gPSBOQU5EX05PT0JfRUNDUE9TNDsKKwlvb2JfY29uZmlnLmVjY19wb3NbNV0gPSBOQU5EX05PT0JfRUNDUE9TNTsKKwlvb2JfY29uZmlnLmVjY3ZhbGlkX3BvcyA9IE5BTkRfTk9PQl9FQ0NWUE9TOworI2VuZGlmCisJb29iX2NvbmZpZy5iYWRibG9ja19wb3MgPSA1OworCisJZm9yIChpPTA7IGk8Q0ZHX01BWF9OQU5EX0RFVklDRTsgaSsrKSB7CisJCWlmIChuYW5kX2Rldl9kZXNjW2ldLkNoaXBJRCA9PSBOQU5EX0NoaXBJRF9VTktOT1dOKSB7CisJCQluYW5kID0gJm5hbmRfZGV2X2Rlc2NbaV07CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoIW5hbmQpCisJCXJldHVybiAoMCk7CisKKwltZW1zZXQoKGNoYXIgKiluYW5kLCAwLCBzaXplb2Yoc3RydWN0IG5hbmRfY2hpcCkpOworCisJbmFuZC0+SU9fQUREUiA9IHBoeXNhZHI7CisJbmFuZC0+Y2FjaGVfcGFnZSA9IC0xOyAgLyogaW5pdCB0aGUgY2FjaGUgcGFnZSAqLworCU5hbkRfU2NhbkNoaXBzKG5hbmQpOworCisJaWYgKG5hbmQtPnRvdGxlbiA9PSAwKSB7CisJCS8qIG5vIGNoaXBzIGZvdW5kLCBjbGVhbiB1cCBhbmQgcXVpdCAqLworCQltZW1zZXQoKGNoYXIgKiluYW5kLCAwLCBzaXplb2Yoc3RydWN0IG5hbmRfY2hpcCkpOworCQluYW5kLT5DaGlwSUQgPSBOQU5EX0NoaXBJRF9VTktOT1dOOworCQlyZXR1cm4gKDApOworCX0KKworCW5hbmQtPkNoaXBJRCA9IENoaXBJRDsKKwlpZiAoY3Vycl9kZXZpY2UgPT0gLTEpCisJCWN1cnJfZGV2aWNlID0gaTsKKworCW5hbmQtPmRhdGFfYnVmID0gbWFsbG9jIChuYW5kLT5vb2JibG9jayArIG5hbmQtPm9vYnNpemUpOworCWlmICghbmFuZC0+ZGF0YV9idWYpIHsKKwkJcHV0cyAoIkNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGRhdGEgc3RydWN0dXJlcy5cbiIpOworCQlyZXR1cm4gKDApOworCX0KKworCXJldHVybiAobmFuZC0+dG90bGVuKTsKK30KKworI2lmZGVmIENPTkZJR19NVERfTkFORF9FQ0MKKy8qCisgKiBQcmUtY2FsY3VsYXRlZCAyNTYtd2F5IDEgYnl0ZSBjb2x1bW4gcGFyaXR5CisgKi8KK3N0YXRpYyBjb25zdCB1X2NoYXIgbmFuZF9lY2NfcHJlY2FsY190YWJsZVtdID0geworCTB4MDAsIDB4NTUsIDB4NTYsIDB4MDMsIDB4NTksIDB4MGMsIDB4MGYsIDB4NWEsCisJMHg1YSwgMHgwZiwgMHgwYywgMHg1OSwgMHgwMywgMHg1NiwgMHg1NSwgMHgwMCwKKwkweDY1LCAweDMwLCAweDMzLCAweDY2LCAweDNjLCAweDY5LCAweDZhLCAweDNmLAorCTB4M2YsIDB4NmEsIDB4NjksIDB4M2MsIDB4NjYsIDB4MzMsIDB4MzAsIDB4NjUsCisJMHg2NiwgMHgzMywgMHgzMCwgMHg2NSwgMHgzZiwgMHg2YSwgMHg2OSwgMHgzYywKKwkweDNjLCAweDY5LCAweDZhLCAweDNmLCAweDY1LCAweDMwLCAweDMzLCAweDY2LAorCTB4MDMsIDB4NTYsIDB4NTUsIDB4MDAsIDB4NWEsIDB4MGYsIDB4MGMsIDB4NTksCisJMHg1OSwgMHgwYywgMHgwZiwgMHg1YSwgMHgwMCwgMHg1NSwgMHg1NiwgMHgwMywKKwkweDY5LCAweDNjLCAweDNmLCAweDZhLCAweDMwLCAweDY1LCAweDY2LCAweDMzLAorCTB4MzMsIDB4NjYsIDB4NjUsIDB4MzAsIDB4NmEsIDB4M2YsIDB4M2MsIDB4NjksCisJMHgwYywgMHg1OSwgMHg1YSwgMHgwZiwgMHg1NSwgMHgwMCwgMHgwMywgMHg1NiwKKwkweDU2LCAweDAzLCAweDAwLCAweDU1LCAweDBmLCAweDVhLCAweDU5LCAweDBjLAorCTB4MGYsIDB4NWEsIDB4NTksIDB4MGMsIDB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsCisJMHg1NSwgMHgwMCwgMHgwMywgMHg1NiwgMHgwYywgMHg1OSwgMHg1YSwgMHgwZiwKKwkweDZhLCAweDNmLCAweDNjLCAweDY5LCAweDMzLCAweDY2LCAweDY1LCAweDMwLAorCTB4MzAsIDB4NjUsIDB4NjYsIDB4MzMsIDB4NjksIDB4M2MsIDB4M2YsIDB4NmEsCisJMHg2YSwgMHgzZiwgMHgzYywgMHg2OSwgMHgzMywgMHg2NiwgMHg2NSwgMHgzMCwKKwkweDMwLCAweDY1LCAweDY2LCAweDMzLCAweDY5LCAweDNjLCAweDNmLCAweDZhLAorCTB4MGYsIDB4NWEsIDB4NTksIDB4MGMsIDB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsCisJMHg1NSwgMHgwMCwgMHgwMywgMHg1NiwgMHgwYywgMHg1OSwgMHg1YSwgMHgwZiwKKwkweDBjLCAweDU5LCAweDVhLCAweDBmLCAweDU1LCAweDAwLCAweDAzLCAweDU2LAorCTB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsIDB4MGYsIDB4NWEsIDB4NTksIDB4MGMsCisJMHg2OSwgMHgzYywgMHgzZiwgMHg2YSwgMHgzMCwgMHg2NSwgMHg2NiwgMHgzMywKKwkweDMzLCAweDY2LCAweDY1LCAweDMwLCAweDZhLCAweDNmLCAweDNjLCAweDY5LAorCTB4MDMsIDB4NTYsIDB4NTUsIDB4MDAsIDB4NWEsIDB4MGYsIDB4MGMsIDB4NTksCisJMHg1OSwgMHgwYywgMHgwZiwgMHg1YSwgMHgwMCwgMHg1NSwgMHg1NiwgMHgwMywKKwkweDY2LCAweDMzLCAweDMwLCAweDY1LCAweDNmLCAweDZhLCAweDY5LCAweDNjLAorCTB4M2MsIDB4NjksIDB4NmEsIDB4M2YsIDB4NjUsIDB4MzAsIDB4MzMsIDB4NjYsCisJMHg2NSwgMHgzMCwgMHgzMywgMHg2NiwgMHgzYywgMHg2OSwgMHg2YSwgMHgzZiwKKwkweDNmLCAweDZhLCAweDY5LCAweDNjLCAweDY2LCAweDMzLCAweDMwLCAweDY1LAorCTB4MDAsIDB4NTUsIDB4NTYsIDB4MDMsIDB4NTksIDB4MGMsIDB4MGYsIDB4NWEsCisJMHg1YSwgMHgwZiwgMHgwYywgMHg1OSwgMHgwMywgMHg1NiwgMHg1NSwgMHgwMAorfTsKKworCisvKgorICogQ3JlYXRlcyBub24taW52ZXJ0ZWQgRUNDIGNvZGUgZnJvbSBsaW5lIHBhcml0eQorICovCitzdGF0aWMgdm9pZCBuYW5kX3RyYW5zX3Jlc3VsdCh1X2NoYXIgcmVnMiwgdV9jaGFyIHJlZzMsCisJdV9jaGFyICplY2NfY29kZSkKK3sKKwl1X2NoYXIgYSwgYiwgaSwgdG1wMSwgdG1wMjsKKworCS8qIEluaXRpYWxpemUgdmFyaWFibGVzICovCisJYSA9IGIgPSAweDgwOworCXRtcDEgPSB0bXAyID0gMDsKKworCS8qIENhbGN1bGF0ZSBmaXJzdCBFQ0MgYnl0ZSAqLworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJaWYgKHJlZzMgJiBhKQkJLyogTFAxNSwxMywxMSw5IC0tPiBlY2NfY29kZVswXSAqLworCQkJdG1wMSB8PSBiOworCQliID4+PSAxOworCQlpZiAocmVnMiAmIGEpCQkvKiBMUDE0LDEyLDEwLDggLS0+IGVjY19jb2RlWzBdICovCisJCQl0bXAxIHw9IGI7CisJCWIgPj49IDE7CisJCWEgPj49IDE7CisJfQorCisJLyogQ2FsY3VsYXRlIHNlY29uZCBFQ0MgYnl0ZSAqLworCWIgPSAweDgwOworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJaWYgKHJlZzMgJiBhKQkJLyogTFA3LDUsMywxIC0tPiBlY2NfY29kZVsxXSAqLworCQkJdG1wMiB8PSBiOworCQliID4+PSAxOworCQlpZiAocmVnMiAmIGEpCQkvKiBMUDYsNCwyLDAgLS0+IGVjY19jb2RlWzFdICovCisJCQl0bXAyIHw9IGI7CisJCWIgPj49IDE7CisJCWEgPj49IDE7CisJfQorCisJLyogU3RvcmUgdHdvIG9mIHRoZSBFQ0MgYnl0ZXMgKi8KKwllY2NfY29kZVswXSA9IHRtcDE7CisJZWNjX2NvZGVbMV0gPSB0bXAyOworfQorCisvKgorICogQ2FsY3VsYXRlIDMgYnl0ZSBFQ0MgY29kZSBmb3IgMjU2IGJ5dGUgYmxvY2sKKyAqLworc3RhdGljIHZvaWQgbmFuZF9jYWxjdWxhdGVfZWNjIChjb25zdCB1X2NoYXIgKmRhdCwgdV9jaGFyICplY2NfY29kZSkKK3sKKwl1X2NoYXIgaWR4LCByZWcxLCByZWczOworCWludCBqOworCisJLyogSW5pdGlhbGl6ZSB2YXJpYWJsZXMgKi8KKwlyZWcxID0gcmVnMyA9IDA7CisJZWNjX2NvZGVbMF0gPSBlY2NfY29kZVsxXSA9IGVjY19jb2RlWzJdID0gMDsKKworCS8qIEJ1aWxkIHVwIGNvbHVtbiBwYXJpdHkgKi8KKwlmb3IoaiA9IDA7IGogPCAyNTY7IGorKykgeworCisJCS8qIEdldCBDUDAgLSBDUDUgZnJvbSB0YWJsZSAqLworCQlpZHggPSBuYW5kX2VjY19wcmVjYWxjX3RhYmxlW2RhdFtqXV07CisJCXJlZzEgXj0gaWR4OworCisJCS8qIEFsbCBiaXQgWE9SID0gMSA/ICovCisJCWlmIChpZHggJiAweDQwKSB7CisJCQlyZWczIF49ICh1X2NoYXIpIGo7CisJCX0KKwl9CisKKwkvKiBDcmVhdGUgbm9uLWludmVydGVkIEVDQyBjb2RlIGZyb20gbGluZSBwYXJpdHkgKi8KKwluYW5kX3RyYW5zX3Jlc3VsdCgocmVnMSAmIDB4NDApID8gfnJlZzMgOiByZWczLCByZWczLCBlY2NfY29kZSk7CisKKwkvKiBDYWxjdWxhdGUgZmluYWwgRUNDIGNvZGUgKi8KKwllY2NfY29kZVswXSA9IH5lY2NfY29kZVswXTsKKwllY2NfY29kZVsxXSA9IH5lY2NfY29kZVsxXTsKKwllY2NfY29kZVsyXSA9ICgofnJlZzEpIDw8IDIpIHwgMHgwMzsKK30KKworLyoKKyAqIERldGVjdCBhbmQgY29ycmVjdCBhIDEgYml0IGVycm9yIGZvciAyNTYgYnl0ZSBibG9jaworICovCitzdGF0aWMgaW50IG5hbmRfY29ycmVjdF9kYXRhICh1X2NoYXIgKmRhdCwgdV9jaGFyICpyZWFkX2VjYywgdV9jaGFyICpjYWxjX2VjYykKK3sKKwl1X2NoYXIgYSwgYiwgYywgZDEsIGQyLCBkMywgYWRkLCBiaXQsIGk7CisKKwkvKiBEbyBlcnJvciBkZXRlY3Rpb24gKi8KKwlkMSA9IGNhbGNfZWNjWzBdIF4gcmVhZF9lY2NbMF07CisJZDIgPSBjYWxjX2VjY1sxXSBeIHJlYWRfZWNjWzFdOworCWQzID0gY2FsY19lY2NbMl0gXiByZWFkX2VjY1syXTsKKworCWlmICgoZDEgfCBkMiB8IGQzKSA9PSAwKSB7CisJCS8qIE5vIGVycm9ycyAqLworCQlyZXR1cm4gMDsKKwl9IGVsc2UgeworCQlhID0gKGQxIF4gKGQxID4+IDEpKSAmIDB4NTU7CisJCWIgPSAoZDIgXiAoZDIgPj4gMSkpICYgMHg1NTsKKwkJYyA9IChkMyBeIChkMyA+PiAxKSkgJiAweDU0OworCisJCS8qIEZvdW5kIGFuZCB3aWxsIGNvcnJlY3Qgc2luZ2xlIGJpdCBlcnJvciBpbiB0aGUgZGF0YSAqLworCQlpZiAoKGEgPT0gMHg1NSkgJiYgKGIgPT0gMHg1NSkgJiYgKGMgPT0gMHg1NCkpIHsKKwkJCWMgPSAweDgwOworCQkJYWRkID0gMDsKKwkJCWEgPSAweDgwOworCQkJZm9yIChpPTA7IGk8NDsgaSsrKSB7CisJCQkJaWYgKGQxICYgYykKKwkJCQkJYWRkIHw9IGE7CisJCQkJYyA+Pj0gMjsKKwkJCQlhID4+PSAxOworCQkJfQorCQkJYyA9IDB4ODA7CisJCQlmb3IgKGk9MDsgaTw0OyBpKyspIHsKKwkJCQlpZiAoZDIgJiBjKQorCQkJCQlhZGQgfD0gYTsKKwkJCQljID4+PSAyOworCQkJCWEgPj49IDE7CisJCQl9CisJCQliaXQgPSAwOworCQkJYiA9IDB4MDQ7CisJCQljID0gMHg4MDsKKwkJCWZvciAoaT0wOyBpPDM7IGkrKykgeworCQkJCWlmIChkMyAmIGMpCisJCQkJCWJpdCB8PSBiOworCQkJCWMgPj49IDI7CisJCQkJYiA+Pj0gMTsKKwkJCX0KKwkJCWIgPSAweDAxOworCQkJYSA9IGRhdFthZGRdOworCQkJYSBePSAoYiA8PCBiaXQpOworCQkJZGF0W2FkZF0gPSBhOworCQkJcmV0dXJuIDE7CisJCX0KKwkJZWxzZSB7CisJCQlpID0gMDsKKwkJCXdoaWxlIChkMSkgeworCQkJCWlmIChkMSAmIDB4MDEpCisJCQkJCSsraTsKKwkJCQlkMSA+Pj0gMTsKKwkJCX0KKwkJCXdoaWxlIChkMikgeworCQkJCWlmIChkMiAmIDB4MDEpCisJCQkJCSsraTsKKwkJCQlkMiA+Pj0gMTsKKwkJCX0KKwkJCXdoaWxlIChkMykgeworCQkJCWlmIChkMyAmIDB4MDEpCisJCQkJCSsraTsKKwkJCQlkMyA+Pj0gMTsKKwkJCX0KKwkJCWlmIChpID09IDEpIHsKKwkJCQkvKiBFQ0MgQ29kZSBFcnJvciBDb3JyZWN0aW9uICovCisJCQkJcmVhZF9lY2NbMF0gPSBjYWxjX2VjY1swXTsKKwkJCQlyZWFkX2VjY1sxXSA9IGNhbGNfZWNjWzFdOworCQkJCXJlYWRfZWNjWzJdID0gY2FsY19lY2NbMl07CisJCQkJcmV0dXJuIDI7CisJCQl9CisJCQllbHNlIHsKKwkJCQkvKiBVbmNvcnJlY3RhYmxlIEVycm9yICovCisJCQkJcmV0dXJuIC0xOworCQkJfQorCQl9CisJfQorCisJLyogU2hvdWxkIG5ldmVyIGhhcHBlbiAqLworCXJldHVybiAtMTsKK30KKworI2VuZGlmCisKKyNlbmRpZiAvKiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kuYyBiL2RyaXZlcnMvcGNpLmMKaW5kZXggNTM2MDAzMC4uM2MyNGI5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kuYworKysgYi9kcml2ZXJzL3BjaS5jCkBAIC00NTksNiArNDU5LDcgQEAKIAkJCQkJICAgICAgUENJX0JVUyhkZXYpLCBQQ0lfREVWKGRldiksIFBDSV9GVU5DKGRldikpOwogCQkJaWYgKGNmZykgewogCQkJCWNmZy0+Y29uZmlnX2RldmljZShob3NlLCBkZXYsIGNmZyk7CisJCQkJc3ViX2J1cyA9IG1heChzdWJfYnVzLCBob3NlLT5jdXJyZW50X2J1c25vKTsKICNpZmRlZiBDT05GSUdfUENJX1BOUAogCQkJfSBlbHNlIHsKIAkJCQlpbnQgbiA9IHBjaWF1dG9fY29uZmlnX2RldmljZShob3NlLCBkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2lfYXV0by5jIGIvZHJpdmVycy9wY2lfYXV0by5jCmluZGV4IDMzMDI0NTcuLjE1Zjc0MzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpX2F1dG8uYworKysgYi9kcml2ZXJzL3BjaV9hdXRvLmMKQEAgLTc3LDYgKzc3LDcgQEAKIHZvaWQgcGNpYXV0b19zZXR1cF9kZXZpY2Uoc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlLAogCQkJICBwY2lfZGV2X3QgZGV2LCBpbnQgYmFyc19udW0sCiAJCQkgIHN0cnVjdCBwY2lfcmVnaW9uICptZW0sCisJCQkgIHN0cnVjdCBwY2lfcmVnaW9uICpwcmVmZXRjaCwKIAkJCSAgc3RydWN0IHBjaV9yZWdpb24gKmlvKQogewogCXVuc2lnbmVkIGludCBiYXJfdmFsdWUsIGJhcl9yZXNwb25zZSwgYmFyX3NpemU7CkBAIC0xMTEsNyArMTEyLDEwIEBACiAJCQkJZm91bmRfbWVtNjQgPSAxOwogCiAJCQliYXJfc2l6ZSA9IH4oYmFyX3Jlc3BvbnNlICYgUENJX0JBU0VfQUREUkVTU19NRU1fTUFTSykgKyAxOwotCQkJYmFyX3JlcyA9IG1lbTsKKwkJCWlmIChwcmVmZXRjaCAmJiAoYmFyX3Jlc3BvbnNlICYgUENJX0JBU0VfQUREUkVTU19NRU1fUFJFRkVUQ0gpKQorCQkJCWJhcl9yZXMgPSBwcmVmZXRjaDsKKwkJCWVsc2UKKwkJCQliYXJfcmVzID0gbWVtOwogCiAJCQlERUJVR0YoIlBDSSBBdXRvY29uZmlnOiBCQVIgJWQsIE1lbSwgc2l6ZT0weCV4LCAiLCBiYXJfbnIsIGJhcl9zaXplKTsKIAkJfQpAQCAtMTQ4LDYgKzE1Miw3IEBACiAJCQkJCSBwY2lfZGV2X3QgZGV2LCBpbnQgc3ViX2J1cykKIHsKIAlzdHJ1Y3QgcGNpX3JlZ2lvbiAqcGNpX21lbSA9IGhvc2UtPnBjaV9tZW07CisJc3RydWN0IHBjaV9yZWdpb24gKnBjaV9wcmVmZXRjaCA9IGhvc2UtPnBjaV9wcmVmZXRjaDsKIAlzdHJ1Y3QgcGNpX3JlZ2lvbiAqcGNpX2lvID0gaG9zZS0+cGNpX2lvOwogCXVuc2lnbmVkIGludCBjbWRzdGF0OwogCkBAIC0xNjksNiArMTc0LDIxIEBACiAJCWNtZHN0YXQgfD0gUENJX0NPTU1BTkRfTUVNT1JZOwogCX0KIAorCWlmIChwY2lfcHJlZmV0Y2gpIHsKKwkJLyogUm91bmQgbWVtb3J5IGFsbG9jYXRvciB0byAxTUIgYm91bmRhcnkgKi8KKwkJcGNpYXV0b19yZWdpb25fYWxpZ24ocGNpX3ByZWZldGNoLCAweDEwMDAwMCk7CisKKwkJLyogU2V0IHVwIG1lbW9yeSBhbmQgSS9PIGZpbHRlciBsaW1pdHMsIGFzc3VtZSAzMi1iaXQgSS9PIHNwYWNlICovCisJCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ193b3JkKGhvc2UsIGRldiwgUENJX1BSRUZfTUVNT1JZX0JBU0UsCisJCQkJCShwY2lfcHJlZmV0Y2gtPmJ1c19sb3dlciAmIDB4ZmZmMDAwMDApID4+IDE2KTsKKworCQljbWRzdGF0IHw9IFBDSV9DT01NQU5EX01FTU9SWTsKKwl9IGVsc2UgeworCQkvKiBXZSBkb24ndCBzdXBwb3J0IHByZWZldGNoYWJsZSBtZW1vcnkgZm9yIG5vdywgc28gZGlzYWJsZSAqLworCQlwY2lfaG9zZV93cml0ZV9jb25maWdfd29yZChob3NlLCBkZXYsIFBDSV9QUkVGX01FTU9SWV9CQVNFLCAweDEwMDApOworCQlwY2lfaG9zZV93cml0ZV9jb25maWdfd29yZChob3NlLCBkZXYsIFBDSV9QUkVGX01FTU9SWV9MSU1JVCwgMHgxMDAwKTsKKwl9CisKIAlpZiAocGNpX2lvKSB7CiAJCS8qIFJvdW5kIEkvTyBhbGxvY2F0b3IgdG8gNEtCIGJvdW5kYXJ5ICovCiAJCXBjaWF1dG9fcmVnaW9uX2FsaWduKHBjaV9pbywgMHgxMDAwKTsKQEAgLTE4MSwxMCArMjAxLDYgQEAKIAkJY21kc3RhdCB8PSBQQ0lfQ09NTUFORF9JTzsKIAl9CiAKLQkvKiBXZSBkb24ndCBzdXBwb3J0IHByZWZldGNoYWJsZSBtZW1vcnkgZm9yIG5vdywgc28gZGlzYWJsZSAqLwotCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ193b3JkKGhvc2UsIGRldiwgUENJX1BSRUZfTUVNT1JZX0JBU0UsIDB4MTAwMCk7Ci0JcGNpX2hvc2Vfd3JpdGVfY29uZmlnX3dvcmQoaG9zZSwgZGV2LCBQQ0lfUFJFRl9NRU1PUllfTElNSVQsIDB4MTAwMCk7Ci0KIAkvKiBFbmFibGUgbWVtb3J5IGFuZCBJL08gYWNjZXNzZXMsIGVuYWJsZSBidXMgbWFzdGVyICovCiAJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX2R3b3JkKGhvc2UsIGRldiwgUENJX0NPTU1BTkQsIGNtZHN0YXQgfCBQQ0lfQ09NTUFORF9NQVNURVIpOwogfQpAQCAtMTkzLDYgKzIwOSw3IEBACiAJCQkJCSAgcGNpX2Rldl90IGRldiwgaW50IHN1Yl9idXMpCiB7CiAJc3RydWN0IHBjaV9yZWdpb24gKnBjaV9tZW0gPSBob3NlLT5wY2lfbWVtOworCXN0cnVjdCBwY2lfcmVnaW9uICpwY2lfcHJlZmV0Y2ggPSBob3NlLT5wY2lfcHJlZmV0Y2g7CiAJc3RydWN0IHBjaV9yZWdpb24gKnBjaV9pbyA9IGhvc2UtPnBjaV9pbzsKIAogCS8qIENvbmZpZ3VyZSBidXMgbnVtYmVyIHJlZ2lzdGVycyAqLwpAQCAtMjA2LDYgKzIyMywxNCBAQAogCQkJCQkocGNpX21lbS0+YnVzX2xvd2VyLTEpID4+IDE2KTsKIAl9CiAKKwlpZiAocGNpX3ByZWZldGNoKSB7CisJCS8qIFJvdW5kIG1lbW9yeSBhbGxvY2F0b3IgdG8gMU1CIGJvdW5kYXJ5ICovCisJCXBjaWF1dG9fcmVnaW9uX2FsaWduKHBjaV9wcmVmZXRjaCwgMHgxMDAwMDApOworCisJCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ193b3JkKGhvc2UsIGRldiwgUENJX1BSRUZfTUVNT1JZX0xJTUlULAorCQkJCQkocGNpX3ByZWZldGNoLT5idXNfbG93ZXItMSkgPj4gMTYpOworCX0KKwogCWlmIChwY2lfaW8pIHsKIAkJLyogUm91bmQgSS9PIGFsbG9jYXRvciB0byA0S0IgYm91bmRhcnkgKi8KIAkJcGNpYXV0b19yZWdpb25fYWxpZ24ocGNpX2lvLCAweDEwMDApOwpAQCAtMjM5LDYgKzI2NCwxMSBAQAogCQkJICAgIGhvc2UtPnBjaV9tZW0tPnNpemUgPCBob3NlLT5yZWdpb25zW2ldLnNpemUpCiAJCQkJaG9zZS0+cGNpX21lbSA9IGhvc2UtPnJlZ2lvbnMgKyBpOwogCQkJYnJlYWs7CisJCWNhc2UgKFBDSV9SRUdJT05fTUVNIHwgUENJX1JFR0lPTl9QUkVGRVRDSCk6CisJCQlpZiAoIWhvc2UtPnBjaV9wcmVmZXRjaCB8fAorCQkJICAgIGhvc2UtPnBjaV9wcmVmZXRjaC0+c2l6ZSA8IGhvc2UtPnJlZ2lvbnNbaV0uc2l6ZSkKKwkJCQlob3NlLT5wY2lfcHJlZmV0Y2ggPSBob3NlLT5yZWdpb25zICsgaTsKKwkJCWJyZWFrOwogCQl9CiAJfQogCkBAIC0yNTEsNiArMjgxLDE0IEBACiAJCSAgICBob3NlLT5wY2lfbWVtLT5idXNfc3RhcnQgKyBob3NlLT5wY2lfbWVtLT5zaXplIC0gMSk7CiAJfQogCisJaWYgKGhvc2UtPnBjaV9wcmVmZXRjaCkgeworCQlwY2lhdXRvX3JlZ2lvbl9pbml0KGhvc2UtPnBjaV9wcmVmZXRjaCk7CisKKwkJREVCVUdGKCJQQ0kgQXV0b2NvbmZpZzogUHJlZmV0Y2hhYmxlIE1lbW9yeSByZWdpb246IFslbHgtJWx4XVxuIiwKKwkJICAgIGhvc2UtPnBjaV9wcmVmZXRjaC0+YnVzX3N0YXJ0LAorCQkgICAgaG9zZS0+cGNpX3ByZWZldGNoLT5idXNfc3RhcnQgKyBob3NlLT5wY2lfcHJlZmV0Y2gtPnNpemUgLSAxKTsKKwl9CisKIAlpZiAoaG9zZS0+cGNpX2lvKSB7CiAJCXBjaWF1dG9fcmVnaW9uX2luaXQoaG9zZS0+cGNpX2lvKTsKIApAQCAtMjc1LDcgKzMxMyw3IEBACiAJc3dpdGNoKGNsYXNzKSB7CiAJY2FzZSBQQ0lfQ0xBU1NfQlJJREdFX1BDSToKIAkJaG9zZS0+Y3VycmVudF9idXNubysrOwotCQlwY2lhdXRvX3NldHVwX2RldmljZShob3NlLCBkZXYsIDIsIGhvc2UtPnBjaV9tZW0sIGhvc2UtPnBjaV9pbyk7CisJCXBjaWF1dG9fc2V0dXBfZGV2aWNlKGhvc2UsIGRldiwgMiwgaG9zZS0+cGNpX21lbSwgaG9zZS0+cGNpX3ByZWZldGNoLCBob3NlLT5wY2lfaW8pOwogCiAJCURFQlVHRigiUENJIEF1dG9jb25maWc6IEZvdW5kIFAyUCBicmlkZ2UsIGRldmljZSAlZFxuIiwgUENJX0RFVihkZXYpKTsKIApAQCAtMzAxLDEyICszMzksMTIgQEAKIAkJCXJldHVybiBzdWJfYnVzOwogCQl9CiAKLQkJcGNpYXV0b19zZXR1cF9kZXZpY2UoaG9zZSwgZGV2LCA2LCBob3NlLT5wY2lfbWVtLCBob3NlLT5wY2lfaW8pOworCQlwY2lhdXRvX3NldHVwX2RldmljZShob3NlLCBkZXYsIDYsIGhvc2UtPnBjaV9tZW0sIGhvc2UtPnBjaV9wcmVmZXRjaCwgaG9zZS0+cGNpX2lvKTsKIAkJYnJlYWs7CiAKIAljYXNlIFBDSV9DTEFTU19CUklER0VfQ0FSREJVUzoKIAkJLyoganVzdCBkbyBhIG1pbmltYWwgc2V0dXAgb2YgdGhlIGJyaWRnZSwgbGV0IHRoZSBPUyB0YWtlIGNhcmUgb2YgdGhlIHJlc3QgKi8KLQkJcGNpYXV0b19zZXR1cF9kZXZpY2UoaG9zZSwgZGV2LCAwLCBob3NlLT5wY2lfbWVtLCBob3NlLT5wY2lfaW8pOworCQlwY2lhdXRvX3NldHVwX2RldmljZShob3NlLCBkZXYsIDAsIGhvc2UtPnBjaV9tZW0sIGhvc2UtPnBjaV9wcmVmZXRjaCwgaG9zZS0+cGNpX2lvKTsKIAogCQlERUJVR0YoIlBDSSBBdXRvY29uZmlnOiBGb3VuZCBQMkNhcmRCdXMgYnJpZGdlLCBkZXZpY2UgJWRcbiIsIFBDSV9ERVYoZGV2KSk7CiAKQEAgLTMyOCwxMSArMzY2LDExIEBACiAJCSAqIHRoZSBQSU1NUiB3aW5kb3cgdG8gYmUgYWxsb2NhdGVkIChCQVIwIC0gMU1CIHNpemUpCiAJCSAqLwogCQlERUJVR0YoIlBDSSBBdXRvY29uZmlnOiBCcm9rZW4gYnJpZGdlIGZvdW5kLCBvbmx5IG1pbmltYWwgY29uZmlnXG4iKTsKLQkJcGNpYXV0b19zZXR1cF9kZXZpY2UoaG9zZSwgZGV2LCAwLCBob3NlLT5wY2lfbWVtLCBob3NlLT5wY2lfaW8pOworCQlwY2lhdXRvX3NldHVwX2RldmljZShob3NlLCBkZXYsIDAsIGhvc2UtPnBjaV9tZW0sIGhvc2UtPnBjaV9wcmVmZXRjaCwgaG9zZS0+cGNpX2lvKTsKIAkJYnJlYWs7CiAjZW5kaWYKIAlkZWZhdWx0OgotCQlwY2lhdXRvX3NldHVwX2RldmljZShob3NlLCBkZXYsIDYsIGhvc2UtPnBjaV9tZW0sIGhvc2UtPnBjaV9pbyk7CisJCXBjaWF1dG9fc2V0dXBfZGV2aWNlKGhvc2UsIGRldiwgNiwgaG9zZS0+cGNpX21lbSwgaG9zZS0+cGNpX3ByZWZldGNoLCBob3NlLT5wY2lfaW8pOwogCQlicmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpX2luZGlyZWN0LmMgYi9kcml2ZXJzL3BjaV9pbmRpcmVjdC5jCmluZGV4IGU4ZjE5ZjUuLmYwYzRhMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpX2luZGlyZWN0LmMKKysrIGIvZHJpdmVycy9wY2lfaW5kaXJlY3QuYwpAQCAtMzYsNiArMzYsMTAgQEAKIGluZGlyZWN0XyMjcncjI19jb25maWdfIyNzaXplKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgCQkgXAogCQkJICAgICAgcGNpX2Rldl90IGRldiwgaW50IG9mZnNldCwgdHlwZSB2YWwpCSBcCiB7CQkJCQkJCQkJIFwKKwl1MzIgYiwgZCxmOwkJCQkJCQkgXAorCWIgPSBQQ0lfQlVTKGRldik7IGQgPSBQQ0lfREVWKGRldik7IGYgPSBQQ0lfRlVOQyhkZXYpOwkJIFwKKwliID0gYiAtIGhvc2UtPmZpcnN0X2J1c25vOwkJCQkJIFwKKwlkZXYgPSBQQ0lfQkRGKGIsIGQsIGYpOwkJCQkJCSBcCiAJb3V0X2xlMzIoaG9zZS0+Y2ZnX2FkZHIsIGRldiB8IChvZmZzZXQgJiAweGZjKSB8IDB4ODAwMDAwMDApOyAJIFwKIAlzeW5jKCk7CQkJCQkJCQkgXAogCWNmZ18jI3J3KHZhbCwgaG9zZS0+Y2ZnX2RhdGEgKyAob2Zmc2V0ICYgbWFzayksIHR5cGUsIG9wKTsJIFwKQEAgLTQ3LDYgKzUxLDEwIEBACiBpbmRpcmVjdF8jI3J3IyNfY29uZmlnXyMjc2l6ZShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsICAgICAgICAgICAgICAgXAogCQkJICAgICAgcGNpX2Rldl90IGRldiwgaW50IG9mZnNldCwgdHlwZSB2YWwpICAgICAgIFwKIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJdTMyIGIsIGQsZjsJCQkJCQkJIFwKKwliID0gUENJX0JVUyhkZXYpOyBkID0gUENJX0RFVihkZXYpOyBmID0gUENJX0ZVTkMoZGV2KTsJCSBcCisJYiA9IGIgLSBob3NlLT5maXJzdF9idXNubzsJCQkJCSBcCisJZGV2ID0gUENJX0JERihiLCBkLCBmKTsJCQkJCQkgXAogCSooaG9zZS0+Y2ZnX2FkZHIpID0gZGV2IHwgKG9mZnNldCAmIDB4ZmMpIHwgMHg4MDAwMDAwMDsgICAgICAgICAgXAogCXN5bmMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCWNmZ18jI3J3KHZhbCwgaG9zZS0+Y2ZnX2RhdGEgKyAob2Zmc2V0ICYgbWFzayksIHR5cGUsIG9wKTsgICAgICAgXApAQCAtNTgsNiArNjYsMTAgQEAKIGluZGlyZWN0XyMjcncjI19jb25maWdfIyNzaXplKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgCQkgXAogCQkJICAgICAgcGNpX2Rldl90IGRldiwgaW50IG9mZnNldCwgdHlwZSB2YWwpCSBcCiB7CQkJCQkJCQkJIFwKKwl1MzIgYiwgZCxmOwkJCQkJCQkgXAorCWIgPSBQQ0lfQlVTKGRldik7IGQgPSBQQ0lfREVWKGRldik7IGYgPSBQQ0lfRlVOQyhkZXYpOwkJIFwKKwliID0gYiAtIGhvc2UtPmZpcnN0X2J1c25vOwkJCQkJIFwKKwlkZXYgPSBQQ0lfQkRGKGIsIGQsIGYpOwkJCQkJCSBcCiAJaWYgKFBDSV9CVVMoZGV2KSA+IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJCW91dF9sZTMyKGhvc2UtPmNmZ19hZGRyLCBkZXYgfCAob2Zmc2V0ICYgMHhmYykgfCAweDgwMDAwMDAxKTsgXAogCWVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNzEsNiArODMsMTAgQEAKIGluZGlyZWN0XyMjcncjI19jb25maWdfIyNzaXplKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgCQkgXAogCQkJICAgICAgcGNpX2Rldl90IGRldiwgaW50IG9mZnNldCwgdHlwZSB2YWwpCSBcCiB7CQkJCQkJCQkJIFwKKwl1MzIgYiwgZCxmOwkJCQkJCQkgXAorCWIgPSBQQ0lfQlVTKGRldik7IGQgPSBQQ0lfREVWKGRldik7IGYgPSBQQ0lfRlVOQyhkZXYpOwkJIFwKKwliID0gYiAtIGhvc2UtPmZpcnN0X2J1c25vOwkJCQkJIFwKKwlkZXYgPSBQQ0lfQkRGKGIsIGQsIGYpOwkJCQkJCSBcCiAJb3V0X2xlMzIoaG9zZS0+Y2ZnX2FkZHIsIGRldiB8IChvZmZzZXQgJiAweGZjKSB8IDB4ODAwMDAwMDApOyAJIFwKIAljZmdfIyNydyh2YWwsIGhvc2UtPmNmZ19kYXRhICsgKG9mZnNldCAmIG1hc2spLCB0eXBlLCBvcCk7CSBcCiAJcmV0dXJuIDA7ICAgIAkJCQkJIAkJIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc21jOTExMTEuYyBiL2RyaXZlcnMvc21jOTExMTEuYwppbmRleCAwNjBkYThmLi5mOTFlNGI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NtYzkxMTExLmMKKysrIGIvZHJpdmVycy9zbWM5MTExMS5jCkBAIC0xNjAsNiArMTYwLDkgQEAKIGV4dGVybiBpbnQgZXRoX3J4KHZvaWQpOwogZXh0ZXJuIGludCBldGhfc2VuZCh2b2xhdGlsZSB2b2lkICpwYWNrZXQsIGludCBsZW5ndGgpOwogCisjaWZkZWYgU0hBUkVEX1JFU09VUkNFUworCWV4dGVybiB2b2lkIHN3YXBfdG8oaW50IGRldmljZV9pZCk7CisjZW5kaWYKIAogLyoKICAuIFRoaXMgaXMgY2FsbGVkIGJ5ICByZWdpc3Rlcl9uZXRkZXYoKS4gIEl0IGlzIHJlc3BvbnNpYmxlIGZvcgpAQCAtMjEwLDcgKzIxMyw3IEBACiAgLiBJZiBhbiBFRVBST00gaXMgcHJlc2VudCBpdCByZWFsbHkgc2hvdWxkIGJlIGNvbnN1bHRlZC4KICovCiBpbnQgc21jX2dldF9ldGhhZGRyKGJkX3QgKmJkKTsKLWludCBnZXRfcm9tX21hYyhjaGFyICp2X3JvbV9tYWMpOworaW50IGdldF9yb21fbWFjKHVjaGFyICp2X3JvbV9tYWMpOwogCiAvKgogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjc2LDE3ICsyNzksMjMgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIFNNQ19pbnN3KGR3b3JkIG9mZnNldCwgdm9sYXRpbGUgdWNoYXIqIGJ1ZiwgZHdvcmQgbGVuKQogeworCXZvbGF0aWxlIHdvcmQgKnAgPSAodm9sYXRpbGUgd29yZCAqKWJ1ZjsKKwogCXdoaWxlIChsZW4tLSA+IDApIHsKLQkJKigod29yZCopYnVmKSsrID0gU01DX2ludyhvZmZzZXQpOwotCQliYXJyaWVyKCk7ICooKHZvbGF0aWxlIHUzMiopKDB4YzAwMDAwMDApKTsKKwkJKnArKyA9IFNNQ19pbncob2Zmc2V0KTsKKwkJYmFycmllcigpOworCQkqKCh2b2xhdGlsZSB1MzIqKSgweGMwMDAwMDAwKSk7CiAJfQogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgU01DX291dHN3KGR3b3JkIG9mZnNldCwgdWNoYXIqIGJ1ZiwgZHdvcmQgbGVuKQogeworCXZvbGF0aWxlIHdvcmQgKnAgPSAodm9sYXRpbGUgd29yZCAqKWJ1ZjsKKwogCXdoaWxlIChsZW4tLSA+IDApIHsKLQkJU01DX291dHcoKigod29yZCopYnVmKSsrLCBvZmZzZXQpOwotCQliYXJyaWVyKCk7ICoodm9sYXRpbGUgdTMyKikoMHhjMDAwMDAwMCk7CisJCVNNQ19vdXR3KCpwKyssIG9mZnNldCk7CisJCWJhcnJpZXIoKTsKKwkJKih2b2xhdGlsZSB1MzIqKSgweGMwMDAwMDAwKTsKIAl9CiB9CiAjZW5kaWYgIC8qIENPTkZJR19TTUNfVVNFX0lPRlVOQ1MgKi8KQEAgLTI5OCw3ICszMDcsNyBAQAogICogdGhlIGRlZmF1bHQgbWFjIGFkZHJlc3MuCiAgKi8KIAotdm9pZCBzbWNfc2V0X21hY19hZGRyKGNvbnN0IGNoYXIgKmFkZHIpIHsKK3ZvaWQgc21jX3NldF9tYWNfYWRkcihjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyKSB7CiAJaW50IGk7CiAKIAlmb3IgKGk9MDsgaSA8IHNpemVvZihzbWNfbWFjX2FkZHIpOyBpKyspewpAQCAtNTI3LDYgKzUzNiw5IEBACiAJU01DX1NFTEVDVF9CQU5LKCAwICk7CiAJU01DX291dGIoIFJDUl9DTEVBUiwgUkNSX1JFRyApOwogCVNNQ19vdXRiKCBUQ1JfQ0xFQVIsIFRDUl9SRUcgKTsKKyNpZmRlZiBTSEFSRURfUkVTT1VSQ0VTCisJc3dhcF90byhGTEFTSCk7CisjZW5kaWYKIH0KIAogCkBAIC0xNTA1LDYgKzE1MTcsOSBAQAogI2VuZGlmCiAKIGludCBldGhfaW5pdChiZF90ICpiZCkgeworI2lmZGVmIFNIQVJFRF9SRVNPVVJDRVMKKwlzd2FwX3RvKEVUSEVSTkVUKTsKKyNlbmRpZgogCXJldHVybiAoc21jX29wZW4oYmQpKTsKIH0KIApAQCAtMTUyNCw3ICsxNTM5LDggQEAKIHsKIAlpbnQgZW52X3NpemUsIHJvbV92YWxpZCwgZW52X3ByZXNlbnQgPSAwLCByZWc7CiAJY2hhciAqcyA9IE5VTEwsICplLCAqdl9tYWMsIGVzW10gPSAiMTE6MjI6MzM6NDQ6NTU6NjYiOwotCXVjaGFyIHNfZW52X21hY1s2NF0sIHZfZW52X21hY1s2XSwgdl9yb21fbWFjWzZdOworCWNoYXIgc19lbnZfbWFjWzY0XTsKKwl1Y2hhciB2X2Vudl9tYWNbNl0sIHZfcm9tX21hY1s2XTsKIAogCWVudl9zaXplID0gZ2V0ZW52X3IgKCJldGhhZGRyIiwgc19lbnZfbWFjLCBzaXplb2YgKHNfZW52X21hYykpOwogCWlmICgoZW52X3NpemUgPiAwKSAmJiAoZW52X3NpemUgPCBzaXplb2YgKGVzKSkpIHsJLyogZXhpdCBpZiBlbnYgaXMgYmFkICovCkBAIC0xNTQ3LDcgKzE1NjMsNyBAQAogCiAJaWYgKCFlbnZfcHJlc2VudCkgewkvKiBpZiBOTyBlbnYgKi8KIAkJaWYgKHJvbV92YWxpZCkgewkvKiBidXQgUk9NIGlzIHZhbGlkICovCi0JCQl2X21hYyA9IHZfcm9tX21hYzsKKwkJCXZfbWFjID0gKGNoYXIgKil2X3JvbV9tYWM7CiAJCQlzcHJpbnRmIChzX2Vudl9tYWMsICIlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWCIsCiAJCQkJIHZfbWFjWzBdLCB2X21hY1sxXSwgdl9tYWNbMl0sIHZfbWFjWzNdLAogCQkJCSB2X21hY1s0XSwgdl9tYWNbNV0pOwpAQCAtMTU1Nyw3ICsxNTczLDcgQEAKIAkJCXJldHVybiAoLTEpOwogCQl9CiAJfSBlbHNlIHsJCS8qIGdvb2QgZW52LCBkb24ndCBjYXJlIFJPTSAqLwotCQl2X21hYyA9IHZfZW52X21hYzsJLyogYWx3YXlzIHVzZSBhIGdvb2QgZW52IG92ZXIgYSBST00gKi8KKwkJdl9tYWMgPSAoY2hhciAqKXZfZW52X21hYzsJLyogYWx3YXlzIHVzZSBhIGdvb2QgZW52IG92ZXIgYSBST00gKi8KIAl9CiAKIAlpZiAoZW52X3ByZXNlbnQgJiYgcm9tX3ZhbGlkKSB7IC8qIGlmIGJvdGggZW52IGFuZCBST00gYXJlIGdvb2QgKi8KQEAgLTE1NzcsMTMgKzE1OTMsMTMgQEAKIAkJfQogCX0KIAltZW1jcHkgKGJkLT5iaV9lbmV0YWRkciwgdl9tYWMsIDYpOwkvKiB1cGRhdGUgZ2xvYmFsIGFkZHJlc3MgdG8gbWF0Y2ggZW52IChhbGxvd3MgZW52IGNoYW5naW5nKSAqLwotCXNtY19zZXRfbWFjX2FkZHIgKHZfbWFjKTsJLyogdXNlIG9sZCBmdW5jdGlvbiB0byB1cGRhdGUgc21jIGRlZmF1bHQgKi8KKwlzbWNfc2V0X21hY19hZGRyICgodWNoYXIgKil2X21hYyk7CS8qIHVzZSBvbGQgZnVuY3Rpb24gdG8gdXBkYXRlIHNtYyBkZWZhdWx0ICovCiAJUFJJTlRLKCJVc2luZyBNQUMgQWRkcmVzcyAlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWFxuIiwgdl9tYWNbMF0sIHZfbWFjWzFdLAogCQl2X21hY1syXSwgdl9tYWNbM10sIHZfbWFjWzRdLCB2X21hY1s1XSk7CiAJcmV0dXJuICgwKTsKIH0KIAotaW50IGdldF9yb21fbWFjIChjaGFyICp2X3JvbV9tYWMpCitpbnQgZ2V0X3JvbV9tYWMgKHVjaGFyICp2X3JvbV9tYWMpCiB7CiAjaWZkZWYgSEFSRENPREVfTUFDCS8qIHVzZWQgZm9yIHRlc3Rpbmcgb3IgdG8gc3VwcmVzcyBydW4gdGltZSB3YXJuaW5ncyAqLwogCWNoYXIgaHdfbWFjX2FkZHJbXSA9IHsgMHgwMiwgMHg4MCwgMHhhZCwgMHgyMCwgMHgzMSwgMHhiOCB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zbWM5MTExMS5oIGIvZHJpdmVycy9zbWM5MTExMS5oCmluZGV4IGNmMDg1ODIuLmQwM2NiYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc21jOTExMTEuaAorKysgYi9kcml2ZXJzL3NtYzkxMTExLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKICAqIGluIG9yZGVyIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG1hYyBhZGRyZXNzLgogICovCiAKLXZvaWQgc21jX3NldF9tYWNfYWRkcihjb25zdCBjaGFyICphZGRyKTsKK3ZvaWQgc21jX3NldF9tYWNfYWRkciAoY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcik7CiAKIAogLyogSSB3YW50IHNvbWUgc2ltcGxlIHR5cGVzICovCkBAIC0xODUsNiArMTg1LDggQEAKIAogI2lmZGVmIENPTkZJR19BRE5QRVNDMQogI2RlZmluZQlTTUNfaW53KHIpIAkoKigodm9sYXRpbGUgd29yZCAqKShTTUNfQkFTRV9BRERSRVNTKygocik8PDEpKSkpCisjZWxpZiBDT05GSUdfQkxBQ0tGSU4KKyNkZWZpbmUJU01DX2ludyhyKSAJKHsgd29yZCBfX3YgPSAoKigodm9sYXRpbGUgd29yZCAqKShTTUNfQkFTRV9BRERSRVNTKyhyKSkpKTsgYXNtKCJzc3luYzsiKTsgX192O30pCiAjZWxzZQogI2RlZmluZQlTTUNfaW53KHIpIAkoKigodm9sYXRpbGUgd29yZCAqKShTTUNfQkFTRV9BRERSRVNTKyhyKSkpKQogI2VuZGlmCkBAIC0xOTIsNiArMTk0LDggQEAKIAogI2lmZGVmIENPTkZJR19BRE5QRVNDMQogI2RlZmluZQlTTUNfb3V0dyhkLHIpCSgqKCh2b2xhdGlsZSB3b3JkICopKFNNQ19CQVNFX0FERFJFU1MrKChyKTw8MSkpKSA9IGQpCisjZWxpZiBDT05GSUdfQkxBQ0tGSU4KKyNkZWZpbmUJU01DX291dHcoZCxyKQl7KCooKHZvbGF0aWxlIHdvcmQgKikoU01DX0JBU0VfQUREUkVTUysocikpKSA9IGQpO2FzbSgic3N5bmM7Iik7fQogI2Vsc2UKICNkZWZpbmUJU01DX291dHcoZCxyKQkoKigodm9sYXRpbGUgd29yZCAqKShTTUNfQkFTRV9BRERSRVNTKyhyKSkpID0gZCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90c2VjLmggYi9kcml2ZXJzL3RzZWMuaAppbmRleCBjMjZmY2MwLi5lOTJiNTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RzZWMuaAorKysgYi9kcml2ZXJzL3RzZWMuaApAQCAtMTI0LDcgKzEyNCw3IEBACiAvKiBDaWNhZGEgODIwNCBFeHRlbmRlZCBQSFkgQ29udHJvbCBSZWdpc3RlciAxICovCiAjZGVmaW5lIE1JSU1fQ0lTODIwNF9FUEhZX0NPTgkJMHgxNwogI2RlZmluZSBNSUlNX0NJUzgyMDRfRVBIWUNPTl9JTklUCTB4MDAwNgotI2RlZmluZSBNSUlNX0NJUzgyMDRfRVBIWUNPTl9SR01JSQkweDEwMDAKKyNkZWZpbmUgTUlJTV9DSVM4MjA0X0VQSFlDT05fUkdNSUkJMHgxMTAwCiAKIC8qIENpY2FkYSA4MjA0IFNlcmlhbCBMRUQgQ29udHJvbCBSZWdpc3RlciAqLwogI2RlZmluZSBNSUlNX0NJUzgyMDRfU0xFRF9DT04JCTB4MWIKQEAgLTE2MSwxMiArMTYxLDEyIEBACiAjZGVmaW5lIE1JSU1fRE05MTYxXzEwQlRDU1JfSU5JVAkweDc4MDAKIAogLyogTFhUOTcxIFN0YXR1cyAyIHJlZ2lzdGVycyAqLwotI2RlZmluZSBNSUlNX0xYVDk3MV9TUjIgICAgICAgCTE3ICAvKiBTdGF0dXMgUmVnaXN0ZXIgMiAgKi8KLSNkZWZpbmUgTUlJTV9MWFQ5NzFfU1IyX1NQRUVEX01BU0sJMHhmMDAwCi0jZGVmaW5lIE1JSU1fTFhUOTcxX1NSMl8xMEhEWAkweDEwMDAgIC8qIDEwIE1iaXQgaGFsZiBkdXBsZXggc2VsZWN0ZWQgKi8KLSNkZWZpbmUgTUlJTV9MWFQ5NzFfU1IyXzEwRkRYCTB4MjAwMCAgLyogMTAgTWJpdCBmdWxsIGR1cGxleCBzZWxlY3RlZCAqLwotI2RlZmluZSBNSUlNX0xYVDk3MV9TUjJfMTAwSERYCTB4NDAwMCAgLyogMTAwIE1iaXQgaGFsZiBkdXBsZXggc2VsZWN0ZWQgKi8KLSNkZWZpbmUgTUlJTV9MWFQ5NzFfU1IyXzEwMEZEWAkweDgwMDAgIC8qIDEwMCBNYml0IGZ1bGwgZHVwbGV4IHNlbGVjdGVkICovCisjZGVmaW5lIE1JSU1fTFhUOTcxX1NSMiAgICAgICAgICAgICAgMHgxMSAgLyogU3RhdHVzIFJlZ2lzdGVyIDIgICovCisjZGVmaW5lIE1JSU1fTFhUOTcxX1NSMl9TUEVFRF9NQVNLIDB4NDIwMAorI2RlZmluZSBNSUlNX0xYVDk3MV9TUjJfMTBIRFggICAgICAweDAwMDAgIC8qICAxMCBNYml0IGhhbGYgZHVwbGV4IHNlbGVjdGVkICovCisjZGVmaW5lIE1JSU1fTFhUOTcxX1NSMl8xMEZEWCAgICAgIDB4MDIwMCAgLyogIDEwIE1iaXQgZnVsbCBkdXBsZXggc2VsZWN0ZWQgKi8KKyNkZWZpbmUgTUlJTV9MWFQ5NzFfU1IyXzEwMEhEWCAgICAgMHg0MDAwICAvKiAxMDAgTWJpdCBoYWxmIGR1cGxleCBzZWxlY3RlZCAqLworI2RlZmluZSBNSUlNX0xYVDk3MV9TUjJfMTAwRkRYICAgICAweDQyMDAgIC8qIDEwMCBNYml0IGZ1bGwgZHVwbGV4IHNlbGVjdGVkICovCiAKICNkZWZpbmUgTUlJTV9SRUFEX0NPTU1BTkQgICAgICAgMHgwMDAwMDAwMQogCmRpZmYgLS1naXQgYS9leGFtcGxlcy9NYWtlZmlsZSBiL2V4YW1wbGVzL01ha2VmaWxlCmluZGV4IDJmOGM0YzQuLmZlZTI2NzQgMTAwNjQ0Ci0tLSBhL2V4YW1wbGVzL01ha2VmaWxlCisrKyBiL2V4YW1wbGVzL01ha2VmaWxlCkBAIC01Myw2ICs1MywxMCBAQAogTE9BRF9BRERSID0gMHg4MEYwMDAwMAogZW5kaWYKIAoraWZlcSAoJChBUkNIKSxibGFja2ZpbikKK0xPQURfQUREUiA9IDB4MTAwMAorZW5kaWYKKwogaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCiAKIFNSRUMJPSBoZWxsb193b3JsZC5zcmVjCkBAIC03Myw2ICs3NywxMSBAQAogQklOICAgICs9IHNjaGVkLmJpbiBzY2hlZAogZW5kaWYKIAoraWZlcSAoJChBUkNIKSxibGFja2ZpbikKK1NSRUMJKz0gc21jOTExMTFfZWVwcm9tLnNyZWMKK0JJTiAJKz0gc21jOTExMTFfZWVwcm9tLmJpbiBzbWM5MTExMV9lZXByb20KK2VuZGlmCisKICMgVGhlIGZvbGxvd2luZyBleGFtcGxlIGlzIHByZXR0eSA4eHggc3BlY2lmaWMuLi4KIGlmZXEgKCQoQ1BVKSxtcGM4eHgpCiBTUkVDICAgKz0gdGltZXIuc3JlYwpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvc21jOTExMTFfZWVwcm9tLmMgYi9leGFtcGxlcy9zbWM5MTExMV9lZXByb20uYwppbmRleCA4ODVmOTMzLi45OGUzZTg2IDEwMDY0NAotLS0gYS9leGFtcGxlcy9zbWM5MTExMV9lZXByb20uYworKysgYi9leGFtcGxlcy9zbWM5MTExMV9lZXByb20uYwpAQCAtMjE0LDEzICsyMTQsMTEgQEAKIAogCQkJc3dpdGNoICh3aGF0KSB7CiAJCQljYXNlIDE6Ci0JCQkJcHJpbnRmICgiV3JpdGluZyBFRVBST00gcmVnaXN0ZXIgJTAyeCB3aXRoICUwNHhcbiIsCi0JCQkJCXJlZywgdmFsdWUpOworCQkJCXByaW50ZiAoIldyaXRpbmcgRUVQUk9NIHJlZ2lzdGVyICUwMnggd2l0aCAlMDR4XG4iLCByZWcsIHZhbHVlKTsKIAkJCQl3cml0ZV9lZXByb21fcmVnICh2YWx1ZSwgcmVnKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgMjoKLQkJCQlwcmludGYgKCJXcml0aW5nIE1BQyByZWdpc3RlciBiYW5rICVpLAotCQkJCQlyZWcgJTAyeCB3aXRoICUwNHhcbiIsIHJlZyA+PiA0LCByZWcgJiAweEUsIHZhbHVlKTsKKwkJCQlwcmludGYgKCJXcml0aW5nIE1BQyByZWdpc3RlciBiYW5rICVpLCByZWcgJTAyeCB3aXRoICUwNHhcbiIsIHJlZyA+PiA0LCByZWcgJiAweEUsIHZhbHVlKTsKIAkJCQlTTUNfU0VMRUNUX0JBTksgKHJlZyA+PiA0KTsKIAkJCQlTTUNfb3V0dyAodmFsdWUsIHJlZyAmIDB4RSk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9leGFtcGxlcy9zdHVicy5jIGIvZXhhbXBsZXMvc3R1YnMuYwppbmRleCBkNGM2ZTA2Li4yNTBhOWFmIDEwMDY0NAotLS0gYS9leGFtcGxlcy9zdHVicy5jCisrKyBiL2V4YW1wbGVzL3N0dWJzLmMKQEAgLTEyNSw2ICsxMjUsMTkgQEAKICIJbHdpCXI1LCByNSwgJTFcbiIJCQlcCiAiCWJyYQlyNVxuIgkJCQlcCiAJOiA6ICJpIihvZmZzZXRvZihnZF90LCBqdCkpLCAiaSIoWEZfICMjIHggKiBzaXplb2Yodm9pZCAqKSkgOiAicjUiKTsKKyNlbGlmIGRlZmluZWQoQ09ORklHX0JMQUNLRklOKQorLyoKKyAqIFA1IGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBnbG9iYWxfZGF0YSwgUDAgaXMgYSBjYWxsLWNsb2JiZXJlZAorICogcmVnaXN0ZXIKKyAqLworI2RlZmluZSBFWFBPUlRfRlVOQyh4KQkJCVwKKwlhc20gdm9sYXRpbGUgKAkJCVwKKyIgICAgICAgLmdsb2JsICIgI3ggIlxuIgkJXAorI3ggIjpcbiIJCQkJXAorIglQMCA9IFtQNSArICUwXVxuIgkJXAorIglQMCA9IFtQMCArICUxXVxuIgkJXAorIglKVU1QIChQMClcbiIJCQlcCisJOiA6ICJpIihvZmZzZXRvZihnZF90LCBqdCkpLCAiaSIoWEZfICMjIHggKiBzaXplb2Yodm9pZCAqKSkgOiAiUDAiKTsKICNlbHNlCiAjZXJyb3Igc3R1YnMgZGVmaW5pdGlvbiBtaXNzaW5nIGZvciB0aGlzIGFyY2hpdGVjdHVyZQogI2VuZGlmCmRpZmYgLS1naXQgYS9mcy9leHQyL2V4dDJmcy5jIGIvZnMvZXh0Mi9leHQyZnMuYwppbmRleCBjMjFkMmQ2Li45Y2YyZmI3IDEwMDY0NAotLS0gYS9mcy9leHQyL2V4dDJmcy5jCisrKyBiL2ZzL2V4dDIvZXh0MmZzLmMKQEAgLTM4OSw3ICszODksNyBAQAogCWludCBibG9ja2NudDsKIAlpbnQgbG9nMmJsb2Nrc2l6ZSA9IExPRzJfRVhUMl9CTE9DS19TSVpFIChub2RlLT5kYXRhKTsKIAlpbnQgYmxvY2tzaXplID0gMSA8PCAobG9nMmJsb2Nrc2l6ZSArIERJU0tfU0VDVE9SX0JJVFMpOwotCXVuc2lnbmVkIGludCBmaWxlc2l6ZSA9IG5vZGUtPmlub2RlLnNpemU7CisJdW5zaWduZWQgaW50IGZpbGVzaXplID0gX19sZTMyX3RvX2NwdShub2RlLT5pbm9kZS5zaXplKTsKIAogCS8qIEFkanVzdCBsZW4gc28gaXQgd2UgY2FuJ3QgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpbGUuICAqLwogCWlmIChsZW4gPiBmaWxlc2l6ZSkgewpkaWZmIC0tZ2l0IGEvZnMvamZmczIvamZmczJfMXBhc3MuYyBiL2ZzL2pmZnMyL2pmZnMyXzFwYXNzLmMKaW5kZXggYzZjMGMyYS4uNDljODY1MiAxMDA2NDQKLS0tIGEvZnMvamZmczIvamZmczJfMXBhc3MuYworKysgYi9mcy9qZmZzMi9qZmZzMl8xcGFzcy5jCkBAIC0xNDQsNiArMTQ0LDcgQEAKIHN0YXRpYyBzdHJ1Y3QgcGFydF9pbmZvICpjdXJyZW50X3BhcnQ7CiAKICNpZiBkZWZpbmVkKENPTkZJR19KRkZTMl9OQU5EKSAmJiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQorI2luY2x1ZGUgPG5hbmQuaD4KIC8qCiAgKiBTdXBwb3J0IGZvciBqZmZzMiBvbiB0b3Agb2YgTkFORC1mbGFzaAogICoKQEAgLTE1NCw5ICsxNTUsOCBAQAogICoKICAqLwogCi0vKiB0aGlzIG9uZSBkZWZpbmVkIGluIGNtZF9uYW5kLmMgKi8KLWludCByZWFkX2pmZnMyX25hbmQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuLAotCQkgICAgc2l6ZV90ICogcmV0bGVuLCB1X2NoYXIgKiBidWYsIGludCBuYW5kZGV2KTsKKy8qIGluZm8gZm9yIE5BTkQgY2hpcHMsIGRlZmluZWQgaW4gZHJpdmVycy9uYW5kL25hbmQuYyAqLworZXh0ZXJuIG5hbmRfaW5mb190IG5hbmRfaW5mb1tdOwogCiAjZGVmaW5lIE5BTkRfUEFHRV9TSVpFIDUxMgogI2RlZmluZSBOQU5EX1BBR0VfU0hJRlQgOQpAQCAtMTY3LDYgKzE2Nyw3IEBACiAjZW5kaWYKICNkZWZpbmUgTkFORF9DQUNIRV9TSVpFIChOQU5EX0NBQ0hFX1BBR0VTKk5BTkRfUEFHRV9TSVpFKQogCisjaWZkZWYgQ0ZHX05BTkRfTEVHQUNZCiBzdGF0aWMgdTgqIG5hbmRfY2FjaGUgPSBOVUxMOwogc3RhdGljIHUzMiBuYW5kX2NhY2hlX29mZiA9ICh1MzIpLTE7CiAKQEAgLTE3NCw3ICsxNzUsNyBAQAogewogCXN0cnVjdCBtdGRpZHMgKmlkID0gY3VycmVudF9wYXJ0LT5kZXYtPmlkOwogCXUzMiBieXRlc19yZWFkID0gMDsKLQlzaXplX3QgcmV0bGVuOworCXVsb25nIHJldGxlbjsKIAlpbnQgY3B5X2J5dGVzOwogCiAJd2hpbGUgKGJ5dGVzX3JlYWQgPCBzaXplKSB7CkBAIC0xOTEsOCArMTkyLDEwIEBACiAJCQkJCXJldHVybiAtMTsKIAkJCQl9CiAJCQl9Ci0JCQlpZiAocmVhZF9qZmZzMl9uYW5kKG5hbmRfY2FjaGVfb2ZmLCBOQU5EX0NBQ0hFX1NJWkUsCi0JCQkJCQkmcmV0bGVuLCBuYW5kX2NhY2hlLCBpZC0+bnVtKSA8IDAgfHwKKworCQkJcmV0bGVuID0gTkFORF9DQUNIRV9TSVpFOworCQkJaWYgKG5hbmRfcmVhZCgmbmFuZF9pbmZvW2lkLT5udW1dLCBuYW5kX2NhY2hlX29mZiwKKwkJCQkJJnJldGxlbiwgbmFuZF9jYWNoZSkgIT0gMCB8fAogCQkJCQlyZXRsZW4gIT0gTkFORF9DQUNIRV9TSVpFKSB7CiAJCQkJcHJpbnRmKCJyZWFkX25hbmRfY2FjaGVkOiBlcnJvciByZWFkaW5nIG5hbmQgb2ZmICUjeCBzaXplICVkIGJ5dGVzXG4iLAogCQkJCQkJbmFuZF9jYWNoZV9vZmYsIE5BTkRfQ0FDSEVfU0laRSk7CkBAIC0yNDgsNiArMjUxLDcgQEAKIHsKIAlmcmVlKGJ1Zik7CiB9CisjZW5kaWYgLyogQ0ZHX05BTkRfTEVHQUNZICovCiAjZW5kaWYgLyogI2lmIGRlZmluZWQoQ09ORklHX0pGRlMyX05BTkQpICYmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpICovCiAKIApAQCAtMjkwLDcgKzI5NCw3IEBACiAJCXJldHVybiBnZXRfZmxfbWVtX25vcihvZmYpOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKENPTkZJR19KRkZTMl9OQU5EKSAmJiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKQorI2lmIGRlZmluZWQoQ09ORklHX0pGRlMyX05BTkQpICYmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpICYmIGRlZmluZWQoQ0ZHX05BTkRfTEVHQUNZKQogCWlmIChpZC0+dHlwZSA9PSBNVERfREVWX1RZUEVfTkFORCkKIAkJcmV0dXJuIGdldF9mbF9tZW1fbmFuZChvZmYsIHNpemUsIGV4dF9idWYpOwogI2VuZGlmCkBAIC0zMDgsNyArMzEyLDcgQEAKIAkJcmV0dXJuIGdldF9ub2RlX21lbV9ub3Iob2ZmKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChDT05GSUdfSkZGUzJfTkFORCkgJiYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKKyNpZiBkZWZpbmVkKENPTkZJR19KRkZTMl9OQU5EKSAmJiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9OQU5EKSAmJiBkZWZpbmVkKENGR19OQU5EX0xFR0FDWSkKIAlpZiAoaWQtPnR5cGUgPT0gTVREX0RFVl9UWVBFX05BTkQpCiAJCXJldHVybiBnZXRfbm9kZV9tZW1fbmFuZChvZmYpOwogI2VuZGlmCkBAIC0zMTksNyArMzIzLDcgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHB1dF9mbF9tZW0odm9pZCAqYnVmKQogewotI2lmIGRlZmluZWQoQ09ORklHX0pGRlMyX05BTkQpICYmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX05BTkQpCisjaWYgZGVmaW5lZChDT05GSUdfSkZGUzJfTkFORCkgJiYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkgJiYgZGVmaW5lZChDRkdfTkFORF9MRUdBQ1kpCiAJc3RydWN0IG10ZGlkcyAqaWQgPSBjdXJyZW50X3BhcnQtPmRldi0+aWQ7CiAKIAlpZiAoaWQtPnR5cGUgPT0gTVREX0RFVl9UWVBFX05BTkQpCkBAIC0xMTY3LDcgKzExNzEsOCBAQAogCQlpZiAobm9kZS0+bWFnaWMgPT0gSkZGUzJfTUFHSUNfQklUTUFTSyAmJiBoZHJfY3JjKG5vZGUpKSB7CiAJCQkvKiBpZiBpdHMgYSBmcmFnbWVudCBhZGQgaXQgKi8KIAkJCWlmIChub2RlLT5ub2RldHlwZSA9PSBKRkZTMl9OT0RFVFlQRV9JTk9ERSAmJgotCQkJCSAgICBpbm9kZV9jcmMoKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUgKikgbm9kZSkpIHsKKwkJCQkgICAgaW5vZGVfY3JjKChzdHJ1Y3QgamZmczJfcmF3X2lub2RlICopIG5vZGUpICYmCisJCQkJICAgIGRhdGFfY3JjKChzdHJ1Y3QgamZmczJfcmF3X2lub2RlICopIG5vZGUpKSB7CiAJCQkJaWYgKGluc2VydF9ub2RlKCZwTC0+ZnJhZywgKHUzMikgcGFydC0+b2Zmc2V0ICsKIAkJCQkJCW9mZnNldCkgPT0gTlVMTCkgewogCQkJCQlwdXRfZmxfbWVtKG5vZGUpOwpkaWZmIC0tZ2l0IGEvZnMvamZmczIvamZmczJfbmFuZF8xcGFzcy5jIGIvZnMvamZmczIvamZmczJfbmFuZF8xcGFzcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3OGFmNzUKLS0tIC9kZXYvbnVsbAorKysgYi9mcy9qZmZzMi9qZmZzMl9uYW5kXzFwYXNzLmMKQEAgLTAsMCArMSwxMDM2IEBACisjaW5jbHVkZSA8Y29tbW9uLmg+CisKKyNpZiAhZGVmaW5lZChDRkdfTkFORF9MRUdBQ1kpICYmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0pGRlMyKQorCisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvc3RhdC5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KKworI2luY2x1ZGUgPGpmZnMyL2pmZnMyLmg+CisjaW5jbHVkZSA8amZmczIvamZmczJfMXBhc3MuaD4KKyNpbmNsdWRlIDxuYW5kLmg+CisKKyNpbmNsdWRlICJqZmZzMl9uYW5kX3ByaXZhdGUuaCIKKworI2RlZmluZQlOT0RFX0NIVU5LCTEwMjQJLyogc2l6ZSBvZiBtZW1vcnkgYWxsb2NhdGlvbiBjaHVuayBpbiBiX25vZGVzICovCisKKy8qIERlYnVnZ2luZyBzd2l0Y2hlcyAqLworI3VuZGVmCURFQlVHX0RJUkVOVFMJCS8qIHByaW50IGRpcmVjdG9yeSBlbnRyeSBsaXN0IGFmdGVyIHNjYW4gKi8KKyN1bmRlZglERUJVR19GUkFHTUVOVFMJCS8qIHByaW50IGZyYWdtZW50IGxpc3QgYWZ0ZXIgc2NhbiAqLworI3VuZGVmCURFQlVHCQkJLyogZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyAqLworCisjaWZkZWYgIERFQlVHCisjIGRlZmluZSBERUJVR0YoZm10LGFyZ3MuLi4pCXByaW50ZihmbXQgLCMjYXJncykKKyNlbHNlCisjIGRlZmluZSBERUJVR0YoZm10LGFyZ3MuLi4pCisjZW5kaWYKKworc3RhdGljIG5hbmRfaW5mb190ICpuYW5kOworCisvKiBDb21wcmVzc2lvbiBuYW1lcyAqLworc3RhdGljIGNoYXIgKmNvbXByX25hbWVzW10gPSB7CisJIk5PTkUiLAorCSJaRVJPIiwKKwkiUlRJTUUiLAorCSJSVUJJTk1JUFMiLAorCSJDT1BZIiwKKwkiRFlOUlVCSU4iLAorCSJaTElCIiwKKyNpZiBkZWZpbmVkKENPTkZJR19KRkZTMl9MWk9fTFpBUkkpCisJIkxaTyIsCisJIkxaQVJJIiwKKyNlbmRpZgorfTsKKworLyogU3Bpbm5pbmcgd2hlZWwgKi8KK3N0YXRpYyBjaGFyIHNwaW5uZXJbXSA9IHsgJ3wnLCAnLycsICctJywgJ1xcJyB9OworCisvKiBNZW1vcnkgbWFuYWdlbWVudCAqLworc3RydWN0IG1lbV9ibG9jayB7CisJdW5zaWduZWQgaW5kZXg7CisJc3RydWN0IG1lbV9ibG9jayAqbmV4dDsKKwljaGFyIG5vZGVzWzBdOworfTsKKworc3RhdGljIHZvaWQKK2ZyZWVfbm9kZXMoc3RydWN0IGJfbGlzdCAqbGlzdCkKK3sKKwl3aGlsZSAobGlzdC0+bGlzdE1lbUJhc2UgIT0gTlVMTCkgeworCQlzdHJ1Y3QgbWVtX2Jsb2NrICpuZXh0ID0gbGlzdC0+bGlzdE1lbUJhc2UtPm5leHQ7CisJCWZyZWUobGlzdC0+bGlzdE1lbUJhc2UpOworCQlsaXN0LT5saXN0TWVtQmFzZSA9IG5leHQ7CisJfQorfQorCitzdGF0aWMgc3RydWN0IGJfbm9kZSAqCithZGRfbm9kZShzdHJ1Y3QgYl9saXN0ICpsaXN0LCBpbnQgc2l6ZSkKK3sKKwl1MzIgaW5kZXggPSAwOworCXN0cnVjdCBtZW1fYmxvY2sgKm1lbUJhc2U7CisJc3RydWN0IGJfbm9kZSAqYjsKKworCW1lbUJhc2UgPSBsaXN0LT5saXN0TWVtQmFzZTsKKwlpZiAobWVtQmFzZSAhPSBOVUxMKQorCQlpbmRleCA9IG1lbUJhc2UtPmluZGV4OworCisJaWYgKG1lbUJhc2UgPT0gTlVMTCB8fCBpbmRleCA+PSBOT0RFX0NIVU5LKSB7CisJCS8qIHdlIG5lZWQgbW9yZSBzcGFjZSBiZWZvcmUgd2UgY29udGludWUgKi8KKwkJbWVtQmFzZSA9IG1tYWxsb2Moc2l6ZW9mKHN0cnVjdCBtZW1fYmxvY2spICsgTk9ERV9DSFVOSyAqIHNpemUpOworCQlpZiAobWVtQmFzZSA9PSBOVUxMKSB7CisJCQlwdXRzdHIoImFkZF9ub2RlOiBtYWxsb2MgZmFpbGVkXG4iKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJCW1lbUJhc2UtPm5leHQgPSBsaXN0LT5saXN0TWVtQmFzZTsKKwkJaW5kZXggPSAwOworCX0KKwkvKiBub3cgd2UgaGF2ZSByb29tIHRvIGFkZCBpdC4gKi8KKwliID0gKHN0cnVjdCBiX25vZGUgKikmbWVtQmFzZS0+bm9kZXNbc2l6ZSAqIGluZGV4XTsKKwlpbmRleCArKzsKKworCW1lbUJhc2UtPmluZGV4ID0gaW5kZXg7CisJbGlzdC0+bGlzdE1lbUJhc2UgPSBtZW1CYXNlOworCWxpc3QtPmxpc3RDb3VudCsrOworCXJldHVybiBiOworfQorCitzdGF0aWMgc3RydWN0IGJfbm9kZSAqCitpbnNlcnRfbm9kZShzdHJ1Y3QgYl9saXN0ICpsaXN0LCBzdHJ1Y3QgYl9ub2RlICpuZXcpCit7CisjaWZkZWYgQ0ZHX0pGRlMyX1NPUlRfRlJBR01FTlRTCisJc3RydWN0IGJfbm9kZSAqYiwgKnByZXY7CisKKwlpZiAobGlzdC0+bGlzdFRhaWwgIT0gTlVMTCAmJiBsaXN0LT5saXN0Q29tcGFyZShuZXcsIGxpc3QtPmxpc3RUYWlsKSkKKwkJcHJldiA9IGxpc3QtPmxpc3RUYWlsOworCWVsc2UgaWYgKGxpc3QtPmxpc3RMYXN0ICE9IE5VTEwgJiYgbGlzdC0+bGlzdENvbXBhcmUobmV3LCBsaXN0LT5saXN0TGFzdCkpCisJCXByZXYgPSBsaXN0LT5saXN0TGFzdDsKKwllbHNlCisJCXByZXYgPSBOVUxMOworCisJZm9yIChiID0gKHByZXYgPyBwcmV2LT5uZXh0IDogbGlzdC0+bGlzdEhlYWQpOworCSAgICAgYiAhPSBOVUxMICYmIGxpc3QtPmxpc3RDb21wYXJlKG5ldywgYik7CisJICAgICBwcmV2ID0gYiwgYiA9IGItPm5leHQpIHsKKwkJbGlzdC0+bGlzdExvb3BzKys7CisJfQorCWlmIChiICE9IE5VTEwpCisJCWxpc3QtPmxpc3RMYXN0ID0gcHJldjsKKworCWlmIChiICE9IE5VTEwpIHsKKwkJbmV3LT5uZXh0ID0gYjsKKwkJaWYgKHByZXYgIT0gTlVMTCkKKwkJCXByZXYtPm5leHQgPSBuZXc7CisJCWVsc2UKKwkJCWxpc3QtPmxpc3RIZWFkID0gbmV3OworCX0gZWxzZQorI2VuZGlmCisJeworCQluZXctPm5leHQgPSAoc3RydWN0IGJfbm9kZSAqKSBOVUxMOworCQlpZiAobGlzdC0+bGlzdFRhaWwgIT0gTlVMTCkgeworCQkJbGlzdC0+bGlzdFRhaWwtPm5leHQgPSBuZXc7CisJCQlsaXN0LT5saXN0VGFpbCA9IG5ldzsKKwkJfSBlbHNlIHsKKwkJCWxpc3QtPmxpc3RUYWlsID0gbGlzdC0+bGlzdEhlYWQgPSBuZXc7CisJCX0KKwl9CisKKwlyZXR1cm4gbmV3OworfQorCitzdGF0aWMgc3RydWN0IGJfbm9kZSAqCitpbnNlcnRfaW5vZGUoc3RydWN0IGJfbGlzdCAqbGlzdCwgc3RydWN0IGpmZnMyX3Jhd19pbm9kZSAqbm9kZSwgdTMyIG9mZnNldCkKK3sKKwlzdHJ1Y3QgYl9pbm9kZSAqbmV3OworCisJaWYgKCEobmV3ID0gKHN0cnVjdCBiX2lub2RlICopYWRkX25vZGUobGlzdCwgc2l6ZW9mKHN0cnVjdCBiX2lub2RlKSkpKSB7CisJCXB1dHN0cigiYWRkX25vZGUgZmFpbGVkIVxyXG4iKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCW5ldy0+b2Zmc2V0ID0gb2Zmc2V0OworCW5ldy0+dmVyc2lvbiA9IG5vZGUtPnZlcnNpb247CisJbmV3LT5pbm8gPSBub2RlLT5pbm87CisJbmV3LT5pc2l6ZSA9IG5vZGUtPmlzaXplOworCW5ldy0+Y3NpemUgPSBub2RlLT5jc2l6ZTsKKworCXJldHVybiBpbnNlcnRfbm9kZShsaXN0LCAoc3RydWN0IGJfbm9kZSAqKW5ldyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYl9ub2RlICoKK2luc2VydF9kaXJlbnQoc3RydWN0IGJfbGlzdCAqbGlzdCwgc3RydWN0IGpmZnMyX3Jhd19kaXJlbnQgKm5vZGUsIHUzMiBvZmZzZXQpCit7CisJc3RydWN0IGJfZGlyZW50ICpuZXc7CisKKwlpZiAoIShuZXcgPSAoc3RydWN0IGJfZGlyZW50ICopYWRkX25vZGUobGlzdCwgc2l6ZW9mKHN0cnVjdCBiX2RpcmVudCkpKSkgeworCQlwdXRzdHIoImFkZF9ub2RlIGZhaWxlZCFcclxuIik7CisJCXJldHVybiBOVUxMOworCX0KKwluZXctPm9mZnNldCA9IG9mZnNldDsKKwluZXctPnZlcnNpb24gPSBub2RlLT52ZXJzaW9uOworCW5ldy0+cGlubyA9IG5vZGUtPnBpbm87CisJbmV3LT5pbm8gPSBub2RlLT5pbm87CisJbmV3LT5uaGFzaCA9IGZ1bGxfbmFtZV9oYXNoKG5vZGUtPm5hbWUsIG5vZGUtPm5zaXplKTsKKwluZXctPm5zaXplID0gbm9kZS0+bnNpemU7CisJbmV3LT50eXBlID0gbm9kZS0+dHlwZTsKKworCXJldHVybiBpbnNlcnRfbm9kZShsaXN0LCAoc3RydWN0IGJfbm9kZSAqKW5ldyk7Cit9CisKKyNpZmRlZiBDRkdfSkZGUzJfU09SVF9GUkFHTUVOVFMKKy8qIFNvcnQgZGF0YSBlbnRyaWVzIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIGxhc3QsIHNvIHRoYXQgaWYgdGhlcmUKKyAqIGlzIG92ZXJsYXBwaW5nIGRhdGEgdGhlIGxhdGVzdCB2ZXJzaW9uIHdpbGwgYmUgdXNlZC4KKyAqLworc3RhdGljIGludCBjb21wYXJlX2lub2RlcyhzdHJ1Y3QgYl9ub2RlICpuZXcsIHN0cnVjdCBiX25vZGUgKm9sZCkKK3sKKwlzdHJ1Y3QgamZmczJfcmF3X2lub2RlIG9qTmV3OworCXN0cnVjdCBqZmZzMl9yYXdfaW5vZGUgb2pPbGQ7CisJc3RydWN0IGpmZnMyX3Jhd19pbm9kZSAqak5ldyA9CisJCShzdHJ1Y3QgamZmczJfcmF3X2lub2RlICopZ2V0X2ZsX21lbShuZXctPm9mZnNldCwgc2l6ZW9mKG9qTmV3KSwgJm9qTmV3KTsKKwlzdHJ1Y3QgamZmczJfcmF3X2lub2RlICpqT2xkID0KKwkJKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUgKilnZXRfZmxfbWVtKG9sZC0+b2Zmc2V0LCBzaXplb2Yob2pPbGQpLCAmb2pPbGQpOworCisJcmV0dXJuIGpOZXctPnZlcnNpb24gPiBqT2xkLT52ZXJzaW9uOworfQorCisvKiBTb3J0IGRpcmVjdG9yeSBlbnRyaWVzIHNvIGFsbCBlbnRyaWVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorICogd2l0aCB0aGUgc2FtZSBuYW1lIGFyZSBncm91cGVkIHRvZ2V0aGVyLCB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbgorICogbGFzdC4gVGhpcyBtYWtlcyBpdCBlYXN5IHRvIGVsaW1pbmF0ZSBhbGwgYnV0IHRoZSBsYXRlc3QgdmVyc2lvbgorICogYnkgbWFya2luZyB0aGUgcHJldmlvdXMgdmVyc2lvbiBkZWFkIGJ5IHNldHRpbmcgdGhlIGlub2RlIHRvIDAuCisgKi8KK3N0YXRpYyBpbnQgY29tcGFyZV9kaXJlbnRzKHN0cnVjdCBiX25vZGUgKm5ldywgc3RydWN0IGJfbm9kZSAqb2xkKQoreworCXN0cnVjdCBqZmZzMl9yYXdfZGlyZW50IG9qTmV3OworCXN0cnVjdCBqZmZzMl9yYXdfZGlyZW50IG9qT2xkOworCXN0cnVjdCBqZmZzMl9yYXdfZGlyZW50ICpqTmV3ID0KKwkJKHN0cnVjdCBqZmZzMl9yYXdfZGlyZW50ICopZ2V0X2ZsX21lbShuZXctPm9mZnNldCwgc2l6ZW9mKG9qTmV3KSwgJm9qTmV3KTsKKwlzdHJ1Y3QgamZmczJfcmF3X2RpcmVudCAqak9sZCA9CisJCShzdHJ1Y3QgamZmczJfcmF3X2RpcmVudCAqKWdldF9mbF9tZW0ob2xkLT5vZmZzZXQsIHNpemVvZihvak9sZCksICZvak9sZCk7CisJaW50IGNtcDsKKworCS8qIGFzY2VuZGluZyBzb3J0IGJ5IHBpbm8gKi8KKwlpZiAoak5ldy0+cGlubyAhPSBqT2xkLT5waW5vKQorCQlyZXR1cm4gak5ldy0+cGlubyA+IGpPbGQtPnBpbm87CisKKwkvKiBwaW5vIGlzIHRoZSBzYW1lLCBzbyB1c2UgYXNjZW5kaW5nIHNvcnQgYnkgbnNpemUsIHNvCisJICogd2UgZG9uJ3QgZG8gc3RybmNtcCB1bmxlc3Mgd2UgcmVhbGx5IG11c3QuCisJICovCisJaWYgKGpOZXctPm5zaXplICE9IGpPbGQtPm5zaXplKQorCQlyZXR1cm4gak5ldy0+bnNpemUgPiBqT2xkLT5uc2l6ZTsKKworCS8qIGxlbmd0aCBpcyBhbHNvIHRoZSBzYW1lLCBzbyB1c2UgYXNjZW5kaW5nIHNvcnQgYnkgbmFtZQorCSAqLworCWNtcCA9IHN0cm5jbXAoak5ldy0+bmFtZSwgak9sZC0+bmFtZSwgak5ldy0+bnNpemUpOworCWlmIChjbXAgIT0gMCkKKwkJcmV0dXJuIGNtcCA+IDA7CisKKwkvKiB3ZSBoYXZlIGR1cGxpY2F0ZSBuYW1lcyBpbiB0aGlzIGRpcmVjdG9yeSwgc28gdXNlIGFzY2VuZGluZworCSAqIHNvcnQgYnkgdmVyc2lvbgorCSAqLworCWlmIChqTmV3LT52ZXJzaW9uID4gak9sZC0+dmVyc2lvbikgeworCQkvKiBzaW5jZSBqTmV3IGlzIG5ld2VyLCB3ZSBrbm93IGpPbGQgaXMgbm90IHZhbGlkLCBzbworCQkgKiBtYXJrIGl0IHdpdGggaW5vZGUgMCBhbmQgaXQgd2lsbCBub3QgYmUgdXNlZAorCQkgKi8KKwkJak9sZC0+aW5vID0gMDsKKwkJcmV0dXJuIDE7CisJfQorCisJcmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIHUzMgoramZmc19pbml0XzFwYXNzX2xpc3Qoc3RydWN0IHBhcnRfaW5mbyAqcGFydCkKK3sKKwlzdHJ1Y3QgYl9saXN0cyAqcEw7CisKKwlpZiAocGFydC0+amZmczJfcHJpdiAhPSBOVUxMKSB7CisJCXBMID0gKHN0cnVjdCBiX2xpc3RzICopcGFydC0+amZmczJfcHJpdjsKKwkJZnJlZV9ub2RlcygmcEwtPmZyYWcpOworCQlmcmVlX25vZGVzKCZwTC0+ZGlyKTsKKwkJZnJlZShwTCk7CisJfQorCWlmIChOVUxMICE9IChwYXJ0LT5qZmZzMl9wcml2ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgYl9saXN0cykpKSkgeworCQlwTCA9IChzdHJ1Y3QgYl9saXN0cyAqKXBhcnQtPmpmZnMyX3ByaXY7CisKKwkJbWVtc2V0KHBMLCAwLCBzaXplb2YoKnBMKSk7CisjaWZkZWYgQ0ZHX0pGRlMyX1NPUlRfRlJBR01FTlRTCisJCXBMLT5kaXIubGlzdENvbXBhcmUgPSBjb21wYXJlX2RpcmVudHM7CisJCXBMLT5mcmFnLmxpc3RDb21wYXJlID0gY29tcGFyZV9pbm9kZXM7CisjZW5kaWYKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qIGZpbmQgdGhlIGlub2RlIGZyb20gdGhlIHNsYXNobGVzcyBuYW1lIGdpdmVuIGEgcGFyZW50ICovCitzdGF0aWMgbG9uZworamZmczJfMXBhc3NfcmVhZF9pbm9kZShzdHJ1Y3QgYl9saXN0cyAqcEwsIHUzMiBpbm8sIGNoYXIgKmRlc3QsCisJCSAgICAgICBzdHJ1Y3Qgc3RhdCAqc3RhdCkKK3sKKwlzdHJ1Y3QgYl9pbm9kZSAqak5vZGU7CisJdTMyIHRvdGFsU2l6ZSA9IDA7CisJdTMyIGxhdGVzdFZlcnNpb24gPSAwOworCWxvbmcgcmV0OworCisjaWZkZWYgQ0ZHX0pGRlMyX1NPUlRfRlJBR01FTlRTCisJLyogRmluZCBmaWxlIHNpemUgYmVmb3JlIGxvYWRpbmcgYW55IGRhdGEsIHNvIGZyYWdtZW50cyB0aGF0CisJICogc3RhcnQgcGFzdCB0aGUgZW5kIG9mIGZpbGUgY2FuIGJlIGlnbm9yZWQuIEEgZnJhZ21lbnQKKwkgKiB0aGF0IGlzIHBhcnRpYWxseSBpbiB0aGUgZmlsZSBpcyBsb2FkZWQsIHNvIGV4dHJhIGRhdGEgbWF5CisJICogYmUgbG9hZGVkIHVwIHRvIHRoZSBuZXh0IDRLIGJvdW5kYXJ5IGFib3ZlIHRoZSBmaWxlIHNpemUuCisJICogVGhpcyBzaG91bGRuJ3QgY2F1c2UgdHJvdWJsZSB3aGVuIGxvYWRpbmcga2VybmVsIGltYWdlcywgc28KKwkgKiB3ZSB3aWxsIGxpdmUgd2l0aCBpdC4KKwkgKi8KKwlmb3IgKGpOb2RlID0gKHN0cnVjdCBiX2lub2RlICopcEwtPmZyYWcubGlzdEhlYWQ7IGpOb2RlOyBqTm9kZSA9IGpOb2RlLT5uZXh0KSB7CisJCWlmICgoaW5vID09IGpOb2RlLT5pbm8pKSB7CisJCQkvKiBnZXQgYWN0dWFsIGZpbGUgbGVuZ3RoIGZyb20gdGhlIG5ld2VzdCBub2RlICovCisJCQlpZiAoak5vZGUtPnZlcnNpb24gPj0gbGF0ZXN0VmVyc2lvbikgeworCQkJCXRvdGFsU2l6ZSA9IGpOb2RlLT5pc2l6ZTsKKwkJCQlsYXRlc3RWZXJzaW9uID0gak5vZGUtPnZlcnNpb247CisJCQl9CisJCX0KKwl9CisjZW5kaWYKKworCWZvciAoak5vZGUgPSAoc3RydWN0IGJfaW5vZGUgKilwTC0+ZnJhZy5saXN0SGVhZDsgak5vZGU7IGpOb2RlID0gak5vZGUtPm5leHQpIHsKKwkJaWYgKChpbm8gIT0gak5vZGUtPmlubykpCisJCQljb250aW51ZTsKKyNpZm5kZWYgQ0ZHX0pGRlMyX1NPUlRfRlJBR01FTlRTCisJCS8qIGdldCBhY3R1YWwgZmlsZSBsZW5ndGggZnJvbSB0aGUgbmV3ZXN0IG5vZGUgKi8KKwkJaWYgKGpOb2RlLT52ZXJzaW9uID49IGxhdGVzdFZlcnNpb24pIHsKKwkJCXRvdGFsU2l6ZSA9IGpOb2RlLT5pc2l6ZTsKKwkJCWxhdGVzdFZlcnNpb24gPSBqTm9kZS0+dmVyc2lvbjsKKwkJfQorI2VuZGlmCisJCWlmIChkZXN0IHx8IHN0YXQpIHsKKwkJCWNoYXIgKnNyYywgKmRzdDsKKwkJCWNoYXIgZGF0YVs0MDk2ICsgc2l6ZW9mKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUpXTsKKwkJCXN0cnVjdCBqZmZzMl9yYXdfaW5vZGUgKmlub2RlOworCQkJc2l6ZV90IGxlbjsKKworCQkJaW5vZGUgPSAoc3RydWN0IGpmZnMyX3Jhd19pbm9kZSAqKSZkYXRhOworCQkJbGVuID0gc2l6ZW9mKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUpOworCQkJaWYgKGRlc3QpCisJCQkJbGVuICs9IGpOb2RlLT5jc2l6ZTsKKwkJCW5hbmRfcmVhZChuYW5kLCBqTm9kZS0+b2Zmc2V0LCAmbGVuLCBpbm9kZSk7CisJCQkvKiBpZ25vcmUgZGF0YSBiZWhpbmQgbGF0ZXN0IGtub3duIEVPRiAqLworCQkJaWYgKGlub2RlLT5vZmZzZXQgPiB0b3RhbFNpemUpCisJCQkJY29udGludWU7CisKKwkJCWlmIChzdGF0KSB7CisJCQkJc3RhdC0+c3RfbXRpbWUgPSBpbm9kZS0+bXRpbWU7CisJCQkJc3RhdC0+c3RfbW9kZSA9IGlub2RlLT5tb2RlOworCQkJCXN0YXQtPnN0X2lubyA9IGlub2RlLT5pbm87CisJCQkJc3RhdC0+c3Rfc2l6ZSA9IHRvdGFsU2l6ZTsKKwkJCX0KKworCQkJaWYgKCFkZXN0KQorCQkJCWNvbnRpbnVlOworCisJCQlzcmMgPSAoKGNoYXIgKikgaW5vZGUpICsgc2l6ZW9mKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUpOworCQkJZHN0ID0gKGNoYXIgKikgKGRlc3QgKyBpbm9kZS0+b2Zmc2V0KTsKKworCQkJc3dpdGNoIChpbm9kZS0+Y29tcHIpIHsKKwkJCWNhc2UgSkZGUzJfQ09NUFJfTk9ORToKKwkJCQlyZXQgPSAwOworCQkJCW1lbWNweShkc3QsIHNyYywgaW5vZGUtPmRzaXplKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgSkZGUzJfQ09NUFJfWkVSTzoKKwkJCQlyZXQgPSAwOworCQkJCW1lbXNldChkc3QsIDAsIGlub2RlLT5kc2l6ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEpGRlMyX0NPTVBSX1JUSU1FOgorCQkJCXJldCA9IDA7CisJCQkJcnRpbWVfZGVjb21wcmVzcyhzcmMsIGRzdCwgaW5vZGUtPmNzaXplLCBpbm9kZS0+ZHNpemUpOworCQkJCWJyZWFrOworCQkJY2FzZSBKRkZTMl9DT01QUl9EWU5SVUJJTjoKKwkJCQkvKiB0aGlzIGlzIHNsb3cgYnV0IGl0IHdvcmtzICovCisJCQkJcmV0ID0gMDsKKwkJCQlkeW5ydWJpbl9kZWNvbXByZXNzKHNyYywgZHN0LCBpbm9kZS0+Y3NpemUsIGlub2RlLT5kc2l6ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEpGRlMyX0NPTVBSX1pMSUI6CisJCQkJcmV0ID0gemxpYl9kZWNvbXByZXNzKHNyYywgZHN0LCBpbm9kZS0+Y3NpemUsIGlub2RlLT5kc2l6ZSk7CisJCQkJYnJlYWs7CisjaWYgZGVmaW5lZChDT05GSUdfSkZGUzJfTFpPX0xaQVJJKQorCQkJY2FzZSBKRkZTMl9DT01QUl9MWk86CisJCQkJcmV0ID0gbHpvX2RlY29tcHJlc3Moc3JjLCBkc3QsIGlub2RlLT5jc2l6ZSwgaW5vZGUtPmRzaXplKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgSkZGUzJfQ09NUFJfTFpBUkk6CisJCQkJcmV0ID0gbHphcmlfZGVjb21wcmVzcyhzcmMsIGRzdCwgaW5vZGUtPmNzaXplLCBpbm9kZS0+ZHNpemUpOworCQkJCWJyZWFrOworI2VuZGlmCisJCQlkZWZhdWx0OgorCQkJCS8qIHVua25vd24gKi8KKwkJCQlwdXRMYWJlbGVkV29yZCgiVU5LT1dOIENPTVBSRVNTSU9OIE1FVEhPRCA9ICIsIGlub2RlLT5jb21wcik7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIHRvdGFsU2l6ZTsKK30KKworLyogZmluZCB0aGUgaW5vZGUgZnJvbSB0aGUgc2xhc2hsZXNzIG5hbWUgZ2l2ZW4gYSBwYXJlbnQgKi8KK3N0YXRpYyB1MzIKK2pmZnMyXzFwYXNzX2ZpbmRfaW5vZGUoc3RydWN0IGJfbGlzdHMgKiBwTCwgY29uc3QgY2hhciAqbmFtZSwgdTMyIHBpbm8pCit7CisJc3RydWN0IGJfZGlyZW50ICpqRGlyOworCWludCBsZW4gPSBzdHJsZW4obmFtZSk7CS8qIG5hbWUgaXMgYXNzdW1lZCBzbGFzaCBmcmVlICovCisJdW5zaWduZWQgaW50IG5oYXNoID0gZnVsbF9uYW1lX2hhc2gobmFtZSwgbGVuKTsKKwl1MzIgdmVyc2lvbiA9IDA7CisJdTMyIGlub2RlID0gMDsKKworCS8qIHdlIG5lZWQgdG8gc2VhcmNoIGFsbCBhbmQgcmV0dXJuIHRoZSBpbm9kZSB3aXRoIHRoZSBoaWdoZXN0IHZlcnNpb24gKi8KKwlmb3IgKGpEaXIgPSAoc3RydWN0IGJfZGlyZW50ICopcEwtPmRpci5saXN0SGVhZDsgakRpcjsgakRpciA9IGpEaXItPm5leHQpIHsKKwkJaWYgKChwaW5vID09IGpEaXItPnBpbm8pICYmIChqRGlyLT5pbm8pICYmCS8qIDAgZm9yIHVubGluayAqLworCQkgICAgKGxlbiA9PSBqRGlyLT5uc2l6ZSkgJiYgKG5oYXNoID09IGpEaXItPm5oYXNoKSkgeworCQkJLyogVE9ETzogY29tcGFyZSBuYW1lICovCisJCQlpZiAoakRpci0+dmVyc2lvbiA8IHZlcnNpb24pCisJCQkJY29udGludWU7CisKKwkJCWlmIChqRGlyLT52ZXJzaW9uID09IHZlcnNpb24gJiYgaW5vZGUgIT0gMCkgeworCQkJCS8qIEknbSBwcmV0dHkgc3VyZSB0aGlzIGlzbid0IGxlZ2FsICovCisJCQkJcHV0c3RyKCIgKiogRVJST1IgKiogIik7CisvKgkJCQlwdXRuc3RyKGpEaXItPm5hbWUsIGpEaXItPm5zaXplKTsgKi8KKy8qCQkJCXB1dExhYmVsZWRXb3JkKCIgaGFzIGR1cCB2ZXJzaW9uID0iLCB2ZXJzaW9uKTsgKi8KKwkJCX0KKwkJCWlub2RlID0gakRpci0+aW5vOworCQkJdmVyc2lvbiA9IGpEaXItPnZlcnNpb247CisJCX0KKwl9CisJcmV0dXJuIGlub2RlOworfQorCitjaGFyICpta21vZGVzdHIodW5zaWduZWQgbG9uZyBtb2RlLCBjaGFyICpzdHIpCit7CisJc3RhdGljIGNvbnN0IGNoYXIgKmwgPSAieHdyIjsKKwlpbnQgbWFzayA9IDEsIGk7CisJY2hhciBjOworCisJc3dpdGNoIChtb2RlICYgU19JRk1UKSB7CisJCWNhc2UgU19JRkRJUjogICAgc3RyWzBdID0gJ2QnOyBicmVhazsKKwkJY2FzZSBTX0lGQkxLOiAgICBzdHJbMF0gPSAnYic7IGJyZWFrOworCQljYXNlIFNfSUZDSFI6ICAgIHN0clswXSA9ICdjJzsgYnJlYWs7CisJCWNhc2UgU19JRklGTzogICAgc3RyWzBdID0gJ2YnOyBicmVhazsKKwkJY2FzZSBTX0lGTE5LOiAgICBzdHJbMF0gPSAnbCc7IGJyZWFrOworCQljYXNlIFNfSUZTT0NLOiAgIHN0clswXSA9ICdzJzsgYnJlYWs7CisJCWNhc2UgU19JRlJFRzogICAgc3RyWzBdID0gJy0nOyBicmVhazsKKwkJZGVmYXVsdDogICAgICAgICBzdHJbMF0gPSAnPyc7CisJfQorCisJZm9yKGkgPSAwOyBpIDwgOTsgaSsrKSB7CisJCWMgPSBsW2klM107CisJCXN0cls5LWldID0gKG1vZGUgJiBtYXNrKT9jOictJzsKKwkJbWFzayA9IG1hc2s8PDE7CisJfQorCisJaWYobW9kZSAmIFNfSVNVSUQpIHN0clszXSA9IChtb2RlICYgU19JWFVTUik/J3MnOidTJzsKKwlpZihtb2RlICYgU19JU0dJRCkgc3RyWzZdID0gKG1vZGUgJiBTX0lYR1JQKT8ncyc6J1MnOworCWlmKG1vZGUgJiBTX0lTVlRYKSBzdHJbOV0gPSAobW9kZSAmIFNfSVhPVEgpPyd0JzonVCc7CisJc3RyWzEwXSA9ICdcMCc7CisJcmV0dXJuIHN0cjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGR1bXBfc3RhdChzdHJ1Y3Qgc3RhdCAqc3QsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJY2hhciBzdHJbMjBdOworCWNoYXIgc1s2NF0sICpwOworCisJaWYgKHN0LT5zdF9tdGltZSA9PSAodGltZV90KSgtMSkpIC8qIHNvbWUgY3RpbWVzIHJlYWxseSBoYXRlIC0xICovCisJCXN0LT5zdF9tdGltZSA9IDE7CisKKwljdGltZV9yKCZzdC0+c3RfbXRpbWUsIHMvKiw2NCovKTsgLyogbmV3bGliIGN0aW1lIGRvZXNuJ3QgaGF2ZSBidWZsZW4gKi8KKworCWlmICgocCA9IHN0cmNocihzLCdcbicpKSAhPSBOVUxMKSAqcCA9ICdcMCc7CisJaWYgKChwID0gc3RyY2hyKHMsJ1xyJykpICE9IE5VTEwpICpwID0gJ1wwJzsKKworLyoKKwlwcmludGYoIiU2bG8gJXMgJThsZCAlcyAlc1xuIiwgc3QtPnN0X21vZGUsIG1rbW9kZXN0cihzdC0+c3RfbW9kZSwgc3RyKSwKKwkJc3QtPnN0X3NpemUsIHMsIG5hbWUpOworKi8KKworCXByaW50ZigiICVzICU4bGQgJXMgJXMiLCBta21vZGVzdHIoc3QtPnN0X21vZGUsc3RyKSwgc3QtPnN0X3NpemUsIHMsIG5hbWUpOworfQorCitzdGF0aWMgaW5saW5lIGludAorZHVtcF9pbm9kZShzdHJ1Y3QgYl9saXN0cyAqcEwsIHN0cnVjdCBiX2RpcmVudCAqZCwgc3RydWN0IGJfaW5vZGUgKmkpCit7CisJY2hhciBmbmFtZVtKRkZTMl9NQVhfTkFNRV9MRU4gKyAxXTsKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwlzaXplX3QgbGVuOworCisJaWYoIWQgfHwgIWkpIHJldHVybiAtMTsKKwlsZW4gPSBkLT5uc2l6ZTsKKwluYW5kX3JlYWQobmFuZCwgZC0+b2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCBqZmZzMl9yYXdfZGlyZW50KSwKKwkJICAmbGVuLCAmZm5hbWUpOworCWZuYW1lW2QtPm5zaXplXSA9ICdcMCc7CisKKwltZW1zZXQoJnN0LCAwLCBzaXplb2Yoc3QpKTsKKworCWpmZnMyXzFwYXNzX3JlYWRfaW5vZGUocEwsIGktPmlubywgTlVMTCwgJnN0KTsKKworCWR1bXBfc3RhdCgmc3QsIGZuYW1lKTsKKy8qIEZJWE1FCisJaWYgKGQtPnR5cGUgPT0gRFRfTE5LKSB7CisJCXVuc2lnbmVkIGNoYXIgKnNyYyA9ICh1bnNpZ25lZCBjaGFyICopICgmaVsxXSk7CisJICAgICAgICBwdXRzdHIoIiAtPiAiKTsKKwkJcHV0bnN0cihzcmMsIChpbnQpaS0+ZHNpemUpOworCX0KKyovCisJcHV0c3RyKCJcclxuIik7CisKKwlyZXR1cm4gMDsKK30KKworLyogbGlzdCBpbm9kZXMgd2l0aCB0aGUgZ2l2ZW4gcGlubyAqLworc3RhdGljIHUzMgoramZmczJfMXBhc3NfbGlzdF9pbm9kZXMoc3RydWN0IGJfbGlzdHMgKiBwTCwgdTMyIHBpbm8pCit7CisJc3RydWN0IGJfZGlyZW50ICpqRGlyOworCXUzMiBpX3ZlcnNpb24gPSAwOworCisJZm9yIChqRGlyID0gKHN0cnVjdCBiX2RpcmVudCAqKXBMLT5kaXIubGlzdEhlYWQ7IGpEaXI7IGpEaXIgPSBqRGlyLT5uZXh0KSB7CisJCWlmICgocGlubyA9PSBqRGlyLT5waW5vKSAmJiAoakRpci0+aW5vKSkgeyAvKiBpbm89MCAtPiB1bmxpbmsgKi8KKwkJCXN0cnVjdCBiX2lub2RlICpqTm9kZSA9IChzdHJ1Y3QgYl9pbm9kZSAqKXBMLT5mcmFnLmxpc3RIZWFkOworCQkJc3RydWN0IGJfaW5vZGUgKmkgPSBOVUxMOworCisJCQl3aGlsZSAoak5vZGUpIHsKKwkJCQlpZiAoak5vZGUtPmlubyA9PSBqRGlyLT5pbm8gJiYgak5vZGUtPnZlcnNpb24gPj0gaV92ZXJzaW9uKSB7CisJCQkJCWlfdmVyc2lvbiA9IGpOb2RlLT52ZXJzaW9uOworCQkJCQlpID0gak5vZGU7CisJCQkJfQorCQkJCWpOb2RlID0gak5vZGUtPm5leHQ7CisJCQl9CisJCQlkdW1wX2lub2RlKHBMLCBqRGlyLCBpKTsKKwkJfQorCX0KKwlyZXR1cm4gcGlubzsKK30KKworc3RhdGljIHUzMgoramZmczJfMXBhc3Nfc2VhcmNoX2lub2RlKHN0cnVjdCBiX2xpc3RzICogcEwsIGNvbnN0IGNoYXIgKmZuYW1lLCB1MzIgcGlubykKK3sKKwlpbnQgaTsKKwljaGFyIHRtcFsyNTZdOworCWNoYXIgd29ya2luZ190bXBbMjU2XTsKKwljaGFyICpjOworCisJLyogZGlzY2FyZCBhbnkgbGVhZGluZyBzbGFzaCAqLworCWkgPSAwOworCXdoaWxlIChmbmFtZVtpXSA9PSAnLycpCisJCWkrKzsKKwlzdHJjcHkodG1wLCAmZm5hbWVbaV0pOworCisJd2hpbGUgKChjID0gKGNoYXIgKikgc3RyY2hyKHRtcCwgJy8nKSkpCS8qIHdlIGFyZSBzdGlsbCBkaXJlZCBzZWFyY2hpbmcgKi8KKwl7CisJCXN0cm5jcHkod29ya2luZ190bXAsIHRtcCwgYyAtIHRtcCk7CisJCXdvcmtpbmdfdG1wW2MgLSB0bXBdID0gJ1wwJzsKKyNpZiAwCisJCXB1dHN0cigic2VhcmNoX2lub2RlOiB0bXAgPSAiKTsKKwkJcHV0c3RyKHRtcCk7CisJCXB1dHN0cigiXHJcbiIpOworCQlwdXRzdHIoInNlYXJjaF9pbm9kZTogd3RtcCA9ICIpOworCQlwdXRzdHIod29ya2luZ190bXApOworCQlwdXRzdHIoIlxyXG4iKTsKKwkJcHV0c3RyKCJzZWFyY2hfaW5vZGU6IGMgPSAiKTsKKwkJcHV0c3RyKGMpOworCQlwdXRzdHIoIlxyXG4iKTsKKyNlbmRpZgorCQlmb3IgKGkgPSAwOyBpIDwgc3RybGVuKGMpIC0gMTsgaSsrKQorCQkJdG1wW2ldID0gY1tpICsgMV07CisJCXRtcFtpXSA9ICdcMCc7CisjaWYgMAorCQlwdXRzdHIoInNlYXJjaF9pbm9kZTogcG9zdCB0bXAgPSAiKTsKKwkJcHV0c3RyKHRtcCk7CisJCXB1dHN0cigiXHJcbiIpOworI2VuZGlmCisKKwkJaWYgKCEocGlubyA9IGpmZnMyXzFwYXNzX2ZpbmRfaW5vZGUocEwsIHdvcmtpbmdfdG1wLCBwaW5vKSkpIHsKKwkJCXB1dHN0cigiZmluZF9pbm9kZSBmYWlsZWQgZm9yIG5hbWU9Iik7CisJCQlwdXRzdHIod29ya2luZ190bXApOworCQkJcHV0c3RyKCJcclxuIik7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKwkvKiB0aGlzIGlzIGZvciB0aGUgYmFyZSBmaWxlbmFtZSwgZGlyZWN0b3JpZXMgaGF2ZSBhbHJlYWR5IGJlZW4gbWFwcGVkICovCisJaWYgKCEocGlubyA9IGpmZnMyXzFwYXNzX2ZpbmRfaW5vZGUocEwsIHRtcCwgcGlubykpKSB7CisJCXB1dHN0cigiZmluZF9pbm9kZSBmYWlsZWQgZm9yIG5hbWU9Iik7CisJCXB1dHN0cih0bXApOworCQlwdXRzdHIoIlxyXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiBwaW5vOworCit9CisKK3N0YXRpYyB1MzIKK2pmZnMyXzFwYXNzX3Jlc29sdmVfaW5vZGUoc3RydWN0IGJfbGlzdHMgKiBwTCwgdTMyIGlubykKK3sKKwlzdHJ1Y3QgYl9kaXJlbnQgKmpEaXI7CisJc3RydWN0IGJfaW5vZGUgKmpOb2RlOworCXU4IGpEaXJGb3VuZFR5cGUgPSAwOworCXUzMiBqRGlyRm91bmRJbm8gPSAwOworCXUzMiBqRGlyRm91bmRQaW5vID0gMDsKKwljaGFyIHRtcFtKRkZTMl9NQVhfTkFNRV9MRU4gKyAxXTsKKwl1MzIgdmVyc2lvbiA9IDA7CisJdTMyIHBpbm87CisKKwkvKiB3ZSBuZWVkIHRvIHNlYXJjaCBhbGwgYW5kIHJldHVybiB0aGUgaW5vZGUgd2l0aCB0aGUgaGlnaGVzdCB2ZXJzaW9uICovCisJZm9yIChqRGlyID0gKHN0cnVjdCBiX2RpcmVudCAqKXBMLT5kaXIubGlzdEhlYWQ7IGpEaXI7IGpEaXIgPSBqRGlyLT5uZXh0KSB7CisJCWlmIChpbm8gPT0gakRpci0+aW5vKSB7CisJCQlpZiAoakRpci0+dmVyc2lvbiA8IHZlcnNpb24pCisJCQkJY29udGludWU7CisKKwkJCWlmIChqRGlyLT52ZXJzaW9uID09IHZlcnNpb24gJiYgakRpckZvdW5kVHlwZSkgeworCQkJCS8qIEknbSBwcmV0dHkgc3VyZSB0aGlzIGlzbid0IGxlZ2FsICovCisJCQkJcHV0c3RyKCIgKiogRVJST1IgKiogIik7CisvKgkJCQlwdXRuc3RyKGpEaXItPm5hbWUsIGpEaXItPm5zaXplKTsgKi8KKy8qCQkJCXB1dExhYmVsZWRXb3JkKCIgaGFzIGR1cCB2ZXJzaW9uIChyZXNvbHZlKSA9ICIsICovCisvKgkJCQkJdmVyc2lvbik7ICovCisJCQl9CisKKwkJCWpEaXJGb3VuZFR5cGUgPSBqRGlyLT50eXBlOworCQkJakRpckZvdW5kSW5vID0gakRpci0+aW5vOworCQkJakRpckZvdW5kUGlubyA9IGpEaXItPnBpbm87CisJCQl2ZXJzaW9uID0gakRpci0+dmVyc2lvbjsKKwkJfQorCX0KKwkvKiBub3cgd2UgZm91bmQgdGhlIHJpZ2h0IGVudHJ5IGFnYWluLiAoc2hvdWxkYSByZXR1cm5lZCBpbm9kZSopICovCisJaWYgKGpEaXJGb3VuZFR5cGUgIT0gRFRfTE5LKQorCQlyZXR1cm4gakRpckZvdW5kSW5vOworCisJLyogaXQncyBhIHNvZnQgbGluayBzbyB3ZSBmb2xsb3cgaXQgYWdhaW4uICovCisJZm9yIChqTm9kZSA9IChzdHJ1Y3QgYl9pbm9kZSAqKXBMLT5mcmFnLmxpc3RIZWFkOyBqTm9kZTsgak5vZGUgPSBqTm9kZS0+bmV4dCkgeworCQlpZiAoak5vZGUtPmlubyA9PSBqRGlyRm91bmRJbm8pIHsKKwkJCXNpemVfdCBsZW4gPSBqTm9kZS0+Y3NpemU7CisJCQluYW5kX3JlYWQobmFuZCwgak5vZGUtPm9mZnNldCArIHNpemVvZihzdHJ1Y3QgamZmczJfcmF3X2lub2RlKSwgJmxlbiwgJnRtcCk7CisJCQl0bXBbak5vZGUtPmNzaXplXSA9ICdcMCc7CisJCQlicmVhazsKKwkJfQorCX0KKwkvKiBvayBzbyB0aGUgbmFtZSBvZiB0aGUgbmV3IGZpbGUgdG8gZmluZCBpcyBpbiB0bXAgKi8KKwkvKiBpZiBpdCBzdGFydHMgd2l0aCBhIHNsYXNoIGl0IGlzIHJvb3QgYmFzZWQgZWxzZSBzaGFyZWQgZGlycyAqLworCWlmICh0bXBbMF0gPT0gJy8nKQorCQlwaW5vID0gMTsKKwllbHNlCisJCXBpbm8gPSBqRGlyRm91bmRQaW5vOworCisJcmV0dXJuIGpmZnMyXzFwYXNzX3NlYXJjaF9pbm9kZShwTCwgdG1wLCBwaW5vKTsKK30KKworc3RhdGljIHUzMgoramZmczJfMXBhc3Nfc2VhcmNoX2xpc3RfaW5vZGVzKHN0cnVjdCBiX2xpc3RzICogcEwsIGNvbnN0IGNoYXIgKmZuYW1lLCB1MzIgcGlubykKK3sKKwlpbnQgaTsKKwljaGFyIHRtcFsyNTZdOworCWNoYXIgd29ya2luZ190bXBbMjU2XTsKKwljaGFyICpjOworCisJLyogZGlzY2FyZCBhbnkgbGVhZGluZyBzbGFzaCAqLworCWkgPSAwOworCXdoaWxlIChmbmFtZVtpXSA9PSAnLycpCisJCWkrKzsKKwlzdHJjcHkodG1wLCAmZm5hbWVbaV0pOworCXdvcmtpbmdfdG1wWzBdID0gJ1wwJzsKKwl3aGlsZSAoKGMgPSAoY2hhciAqKSBzdHJjaHIodG1wLCAnLycpKSkJLyogd2UgYXJlIHN0aWxsIGRpcmVkIHNlYXJjaGluZyAqLworCXsKKwkJc3RybmNweSh3b3JraW5nX3RtcCwgdG1wLCBjIC0gdG1wKTsKKwkJd29ya2luZ190bXBbYyAtIHRtcF0gPSAnXDAnOworCQlmb3IgKGkgPSAwOyBpIDwgc3RybGVuKGMpIC0gMTsgaSsrKQorCQkJdG1wW2ldID0gY1tpICsgMV07CisJCXRtcFtpXSA9ICdcMCc7CisJCS8qIG9ubHkgYSBmYWlsdXJlIGlmIHdlIGFyZW50IGxvb2tpbmcgYXQgdG9wIGxldmVsICovCisJCWlmICghKHBpbm8gPSBqZmZzMl8xcGFzc19maW5kX2lub2RlKHBMLCB3b3JraW5nX3RtcCwgcGlubykpICYmCisJCSAgICAod29ya2luZ190bXBbMF0pKSB7CisJCQlwdXRzdHIoImZpbmRfaW5vZGUgZmFpbGVkIGZvciBuYW1lPSIpOworCQkJcHV0c3RyKHdvcmtpbmdfdG1wKTsKKwkJCXB1dHN0cigiXHJcbiIpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlpZiAodG1wWzBdICYmICEocGlubyA9IGpmZnMyXzFwYXNzX2ZpbmRfaW5vZGUocEwsIHRtcCwgcGlubykpKSB7CisJCXB1dHN0cigiZmluZF9pbm9kZSBmYWlsZWQgZm9yIG5hbWU9Iik7CisJCXB1dHN0cih0bXApOworCQlwdXRzdHIoIlxyXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCS8qIHRoaXMgaXMgZm9yIHRoZSBiYXJlIGZpbGVuYW1lLCBkaXJlY3RvcmllcyBoYXZlIGFscmVhZHkgYmVlbiBtYXBwZWQgKi8KKwlpZiAoIShwaW5vID0gamZmczJfMXBhc3NfbGlzdF9pbm9kZXMocEwsIHBpbm8pKSkgeworCQlwdXRzdHIoImZpbmRfaW5vZGUgZmFpbGVkIGZvciBuYW1lPSIpOworCQlwdXRzdHIodG1wKTsKKwkJcHV0c3RyKCJcclxuIik7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gcGlubzsKKworfQorCit1bnNpZ25lZCBjaGFyCitqZmZzMl8xcGFzc19yZXNjYW5fbmVlZGVkKHN0cnVjdCBwYXJ0X2luZm8gKnBhcnQpCit7CisJc3RydWN0IGJfbm9kZSAqYjsKKwlzdHJ1Y3QgamZmczJfdW5rbm93bl9ub2RlIG9ub2RlOworCXN0cnVjdCBqZmZzMl91bmtub3duX25vZGUgKm5vZGU7CisJc3RydWN0IGJfbGlzdHMgKnBMID0gKHN0cnVjdCBiX2xpc3RzICopcGFydC0+amZmczJfcHJpdjsKKworCWlmIChwYXJ0LT5qZmZzMl9wcml2ID09IDApeworCQlERUJVR0YgKCJyZXNjYW46IEZpcnN0IHRpbWUgaW4gdXNlXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCS8qIGlmIHdlIGhhdmUgbm8gbGlzdCwgd2UgbmVlZCB0byByZXNjYW4gKi8KKwlpZiAocEwtPmZyYWcubGlzdENvdW50ID09IDApIHsKKwkJREVCVUdGICgicmVzY2FuOiBmcmFnbGlzdCB6ZXJvXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCisJLyogb3IgaWYgd2UgYXJlIHNjYW5uaW5nIGEgbmV3IHBhcnRpdGlvbiAqLworCWlmIChwTC0+cGFydE9mZnNldCAhPSBwYXJ0LT5vZmZzZXQpIHsKKwkJREVCVUdGICgicmVzY2FuOiBkaWZmZXJlbnQgcGFydGl0aW9uXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCisJLyogRklYTUUgKi8KKyNpZiAwCisJLyogYnV0IHN1cHBvc2Ugc29tZW9uZSByZWZsYXNoZWQgYSBwYXJ0aXRpb24gYXQgdGhlIHNhbWUgb2Zmc2V0Li4uICovCisJYiA9IHBMLT5kaXIubGlzdEhlYWQ7CisJd2hpbGUgKGIpIHsKKwkJbm9kZSA9IChzdHJ1Y3QgamZmczJfdW5rbm93bl9ub2RlICopIGdldF9mbF9tZW0oYi0+b2Zmc2V0LAorCQkJc2l6ZW9mKG9ub2RlKSwgJm9ub2RlKTsKKwkJaWYgKG5vZGUtPm5vZGV0eXBlICE9IEpGRlMyX05PREVUWVBFX0RJUkVOVCkgeworCQkJREVCVUdGICgicmVzY2FuOiBmcyBjaGFuZ2VkIGJlbmVhdGggbWU/ICglbHgpXG4iLAorCQkJCQkodW5zaWduZWQgbG9uZykgYi0+b2Zmc2V0KTsKKwkJCXJldHVybiAxOworCQl9CisJCWIgPSBiLT5uZXh0OworCX0KKyNlbmRpZgorCXJldHVybiAwOworfQorCisjaWZkZWYgREVCVUdfRlJBR01FTlRTCitzdGF0aWMgdm9pZAorZHVtcF9mcmFnbWVudHMoc3RydWN0IGJfbGlzdHMgKnBMKQoreworCXN0cnVjdCBiX25vZGUgKmI7CisJc3RydWN0IGpmZnMyX3Jhd19pbm9kZSBvak5vZGU7CisJc3RydWN0IGpmZnMyX3Jhd19pbm9kZSAqak5vZGU7CisKKwlwdXRzdHIoIlxyXG5cclxuKioqKioqVGhlIGZyYWdtZW50IEVudHJpZXMqKioqKipcclxuIik7CisJYiA9IHBMLT5mcmFnLmxpc3RIZWFkOworCXdoaWxlIChiKSB7CisJCWpOb2RlID0gKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUgKikgZ2V0X2ZsX21lbShiLT5vZmZzZXQsCisJCQlzaXplb2Yob2pOb2RlKSwgJm9qTm9kZSk7CisJCXB1dExhYmVsZWRXb3JkKCJcclxuXHRidWlsZF9saXN0OiBGTEFTSF9PRkZTRVQgPSAiLCBiLT5vZmZzZXQpOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiB0b3RsZW4gPSAiLCBqTm9kZS0+dG90bGVuKTsKKwkJcHV0TGFiZWxlZFdvcmQoIlx0YnVpbGRfbGlzdDogaW5vZGUgPSAiLCBqTm9kZS0+aW5vKTsKKwkJcHV0TGFiZWxlZFdvcmQoIlx0YnVpbGRfbGlzdDogdmVyc2lvbiA9ICIsIGpOb2RlLT52ZXJzaW9uKTsKKwkJcHV0TGFiZWxlZFdvcmQoIlx0YnVpbGRfbGlzdDogaXNpemUgPSAiLCBqTm9kZS0+aXNpemUpOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiBhdGltZSA9ICIsIGpOb2RlLT5hdGltZSk7CisJCXB1dExhYmVsZWRXb3JkKCJcdGJ1aWxkX2xpc3Q6IG9mZnNldCA9ICIsIGpOb2RlLT5vZmZzZXQpOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiBjc2l6ZSA9ICIsIGpOb2RlLT5jc2l6ZSk7CisJCXB1dExhYmVsZWRXb3JkKCJcdGJ1aWxkX2xpc3Q6IGRzaXplID0gIiwgak5vZGUtPmRzaXplKTsKKwkJcHV0TGFiZWxlZFdvcmQoIlx0YnVpbGRfbGlzdDogY29tcHIgPSAiLCBqTm9kZS0+Y29tcHIpOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiB1c2VyY29tcHIgPSAiLCBqTm9kZS0+dXNlcmNvbXByKTsKKwkJcHV0TGFiZWxlZFdvcmQoIlx0YnVpbGRfbGlzdDogZmxhZ3MgPSAiLCBqTm9kZS0+ZmxhZ3MpOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiBvZmZzZXQgPSAiLCBiLT5vZmZzZXQpOwkvKiBGSVhNRTogPyBbUlNdICovCisJCWIgPSBiLT5uZXh0OworCX0KK30KKyNlbmRpZgorCisjaWZkZWYgREVCVUdfRElSRU5UUworc3RhdGljIHZvaWQKK2R1bXBfZGlyZW50cyhzdHJ1Y3QgYl9saXN0cyAqcEwpCit7CisJc3RydWN0IGJfbm9kZSAqYjsKKwlzdHJ1Y3QgamZmczJfcmF3X2RpcmVudCAqakRpcjsKKworCXB1dHN0cigiXHJcblxyXG4qKioqKipUaGUgZGlyZWN0b3J5IEVudHJpZXMqKioqKipcclxuIik7CisJYiA9IHBMLT5kaXIubGlzdEhlYWQ7CisJd2hpbGUgKGIpIHsKKwkJakRpciA9IChzdHJ1Y3QgamZmczJfcmF3X2RpcmVudCAqKSBnZXRfbm9kZV9tZW0oYi0+b2Zmc2V0KTsKKwkJcHV0c3RyKCJcclxuIik7CisJCXB1dG5zdHIoakRpci0+bmFtZSwgakRpci0+bnNpemUpOworCQlwdXRMYWJlbGVkV29yZCgiXHJcblx0YnVpbGRfbGlzdDogbWFnaWMgPSAiLCBqRGlyLT5tYWdpYyk7CisJCXB1dExhYmVsZWRXb3JkKCJcdGJ1aWxkX2xpc3Q6IG5vZGV0eXBlID0gIiwgakRpci0+bm9kZXR5cGUpOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiBoZHJfY3JjID0gIiwgakRpci0+aGRyX2NyYyk7CisJCXB1dExhYmVsZWRXb3JkKCJcdGJ1aWxkX2xpc3Q6IHBpbm8gPSAiLCBqRGlyLT5waW5vKTsKKwkJcHV0TGFiZWxlZFdvcmQoIlx0YnVpbGRfbGlzdDogdmVyc2lvbiA9ICIsIGpEaXItPnZlcnNpb24pOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiBpbm8gPSAiLCBqRGlyLT5pbm8pOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiBtY3RpbWUgPSAiLCBqRGlyLT5tY3RpbWUpOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiBuc2l6ZSA9ICIsIGpEaXItPm5zaXplKTsKKwkJcHV0TGFiZWxlZFdvcmQoIlx0YnVpbGRfbGlzdDogdHlwZSA9ICIsIGpEaXItPnR5cGUpOworCQlwdXRMYWJlbGVkV29yZCgiXHRidWlsZF9saXN0OiBub2RlX2NyYyA9ICIsIGpEaXItPm5vZGVfY3JjKTsKKwkJcHV0TGFiZWxlZFdvcmQoIlx0YnVpbGRfbGlzdDogbmFtZV9jcmMgPSAiLCBqRGlyLT5uYW1lX2NyYyk7CisJCXB1dExhYmVsZWRXb3JkKCJcdGJ1aWxkX2xpc3Q6IG9mZnNldCA9ICIsIGItPm9mZnNldCk7IAkvKiBGSVhNRTogPyBbUlNdICovCisJCWIgPSBiLT5uZXh0OworCQlwdXRfZmxfbWVtKGpEaXIpOworCX0KK30KKyNlbmRpZgorCitzdGF0aWMgaW50CitqZmZzMl9maWxsX3NjYW5fYnVmKG5hbmRfaW5mb190ICpuYW5kLCB1bnNpZ25lZCBjaGFyICpidWYsCisJCSAgICB1bnNpZ25lZCBvZnMsIHVuc2lnbmVkIGxlbikKK3sKKwlpbnQgcmV0OworCXVuc2lnbmVkIG9sZW47CisKKwlvbGVuID0gbGVuOworCXJldCA9IG5hbmRfcmVhZChuYW5kLCBvZnMsICZvbGVuLCBidWYpOworCWlmIChyZXQpIHsKKwkJcHJpbnRmKCJuYW5kX3JlYWQoMHgleCBieXRlcyBmcm9tIDB4JXgpIHJldHVybmVkICVkXG4iLCBsZW4sIG9mcywgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisJaWYgKG9sZW4gPCBsZW4pIHsKKwkJcHJpbnRmKCJSZWFkIGF0IDB4JXggZ2F2ZSBvbmx5IDB4JXggYnl0ZXNcbiIsIG9mcywgb2xlbik7CisJCXJldHVybiAtMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUJRU1QVFlfU0NBTl9TSVpFCTEwMjQKK3N0YXRpYyB1MzIKK2pmZnMyXzFwYXNzX2J1aWxkX2xpc3RzKHN0cnVjdCBwYXJ0X2luZm8gKiBwYXJ0KQoreworCXN0cnVjdCBiX2xpc3RzICpwTDsKKwlzdHJ1Y3QgamZmczJfdW5rbm93bl9ub2RlICpub2RlOworCXVuc2lnbmVkIG5yX2Jsb2Nrcywgc2VjdG9yc2l6ZSwgb2ZzLCBvZmZzZXQ7CisJY2hhciAqYnVmOworCWludCBpOworCXUzMiBjb3VudGVyID0gMDsKKwl1MzIgY291bnRlcjQgPSAwOworCXUzMiBjb3VudGVyRiA9IDA7CisJdTMyIGNvdW50ZXJOID0gMDsKKworCXN0cnVjdCBtdGRpZHMgKmlkID0gcGFydC0+ZGV2LT5pZDsKKwluYW5kID0gbmFuZF9pbmZvICsgaWQtPm51bTsKKworCS8qIGlmIHdlIGFyZSBidWlsZGluZyBhIGxpc3Qgd2UgbmVlZCB0byByZWZyZXNoIHRoZSBjYWNoZS4gKi8KKwlqZmZzX2luaXRfMXBhc3NfbGlzdChwYXJ0KTsKKwlwTCA9IChzdHJ1Y3QgYl9saXN0cyAqKXBhcnQtPmpmZnMyX3ByaXY7CisJcEwtPnBhcnRPZmZzZXQgPSBwYXJ0LT5vZmZzZXQ7CisJcHV0cyAoIlNjYW5uaW5nIEpGRlMyIEZTOiAgICIpOworCisJc2VjdG9yc2l6ZSA9IG5hbmQtPmVyYXNlc2l6ZTsKKwlucl9ibG9ja3MgPSBwYXJ0LT5zaXplIC8gc2VjdG9yc2l6ZTsKKwlidWYgPSBtYWxsb2Moc2VjdG9yc2l6ZSk7CisJaWYgKCFidWYpCisJCXJldHVybiAwOworCisJZm9yIChpID0gMDsgaSA8IG5yX2Jsb2NrczsgaSsrKSB7CisJCXByaW50ZigiXGJcYiVjICIsIHNwaW5uZXJbY291bnRlcisrICUgc2l6ZW9mKHNwaW5uZXIpXSk7CisKKwkJb2Zmc2V0ID0gcGFydC0+b2Zmc2V0ICsgaSAqIHNlY3RvcnNpemU7CisKKwkJaWYgKG5hbmRfYmxvY2tfaXNiYWQobmFuZCwgb2Zmc2V0KSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChqZmZzMl9maWxsX3NjYW5fYnVmKG5hbmQsIGJ1Ziwgb2Zmc2V0LCBFTVBUWV9TQ0FOX1NJWkUpKQorCQkJcmV0dXJuIDA7CisKKwkJb2ZzID0gMDsKKwkJLyogU2NhbiBvbmx5IDRLaUIgb2YgMHhGRiBiZWZvcmUgZGVjbGFyaW5nIGl0J3MgZW1wdHkgKi8KKwkJd2hpbGUgKG9mcyA8IEVNUFRZX1NDQU5fU0laRSAmJiAqKHVpbnQzMl90ICopKCZidWZbb2ZzXSkgPT0gMHhGRkZGRkZGRikKKwkJCW9mcyArPSA0OworCQlpZiAob2ZzID09IEVNUFRZX1NDQU5fU0laRSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChqZmZzMl9maWxsX3NjYW5fYnVmKG5hbmQsIGJ1ZiArIEVNUFRZX1NDQU5fU0laRSwgb2Zmc2V0ICsgRU1QVFlfU0NBTl9TSVpFLCBzZWN0b3JzaXplIC0gRU1QVFlfU0NBTl9TSVpFKSkKKwkJCXJldHVybiAwOworCQlvZmZzZXQgKz0gb2ZzOworCisJCXdoaWxlIChvZnMgPCBzZWN0b3JzaXplIC0gc2l6ZW9mKHN0cnVjdCBqZmZzMl91bmtub3duX25vZGUpKSB7CisJCQlub2RlID0gKHN0cnVjdCBqZmZzMl91bmtub3duX25vZGUgKikmYnVmW29mc107CisJCQlpZiAobm9kZS0+bWFnaWMgIT0gSkZGUzJfTUFHSUNfQklUTUFTSyB8fCAhaGRyX2NyYyhub2RlKSkgeworCQkJCW9mZnNldCArPSA0OworCQkJCW9mcyArPSA0OworCQkJCWNvdW50ZXI0Kys7CisJCQkJY29udGludWU7CisJCQl9CisJCQkvKiBpZiBpdHMgYSBmcmFnbWVudCBhZGQgaXQgKi8KKwkJCWlmIChub2RlLT5ub2RldHlwZSA9PSBKRkZTMl9OT0RFVFlQRV9JTk9ERSAmJgorCQkJCSAgICBpbm9kZV9jcmMoKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUgKikgbm9kZSkpIHsKKwkJCQlpZiAoaW5zZXJ0X2lub2RlKCZwTC0+ZnJhZywgKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUgKikgbm9kZSwKKwkJCQkJCSBvZmZzZXQpID09IE5VTEwpIHsKKwkJCQkJcmV0dXJuIDA7CisJCQkJfQorCQkJfSBlbHNlIGlmIChub2RlLT5ub2RldHlwZSA9PSBKRkZTMl9OT0RFVFlQRV9ESVJFTlQgJiYKKwkJCQkgICBkaXJlbnRfY3JjKChzdHJ1Y3QgamZmczJfcmF3X2RpcmVudCAqKSBub2RlKSAgJiYKKwkJCQkgICBkaXJlbnRfbmFtZV9jcmMoKHN0cnVjdCBqZmZzMl9yYXdfZGlyZW50ICopIG5vZGUpKSB7CisJCQkJaWYgKCEgKGNvdW50ZXJOJTEwMCkpCisJCQkJCXB1dHMgKCJcYlxiLiAgIik7CisJCQkJaWYgKGluc2VydF9kaXJlbnQoJnBMLT5kaXIsIChzdHJ1Y3QgamZmczJfcmF3X2RpcmVudCAqKSBub2RlLAorCQkJCQkJICBvZmZzZXQpID09IE5VTEwpIHsKKwkJCQkJcmV0dXJuIDA7CisJCQkJfQorCQkJCWNvdW50ZXJOKys7CisJCQl9IGVsc2UgaWYgKG5vZGUtPm5vZGV0eXBlID09IEpGRlMyX05PREVUWVBFX0NMRUFOTUFSS0VSKSB7CisJCQkJaWYgKG5vZGUtPnRvdGxlbiAhPSBzaXplb2Yoc3RydWN0IGpmZnMyX3Vua25vd25fbm9kZSkpCisJCQkJCXByaW50ZigiT09QUyBDbGVhbm1hcmtlciBoYXMgYmFkIHNpemUgIgorCQkJCQkJIiVkICE9ICVkXG4iLCBub2RlLT50b3RsZW4sCisJCQkJCQlzaXplb2Yoc3RydWN0IGpmZnMyX3Vua25vd25fbm9kZSkpOworCQkJfSBlbHNlIGlmIChub2RlLT5ub2RldHlwZSA9PSBKRkZTMl9OT0RFVFlQRV9QQURESU5HKSB7CisJCQkJaWYgKG5vZGUtPnRvdGxlbiA8IHNpemVvZihzdHJ1Y3QgamZmczJfdW5rbm93bl9ub2RlKSkKKwkJCQkJcHJpbnRmKCJPT1BTIFBhZGRpbmcgaGFzIGJhZCBzaXplICIKKwkJCQkJCSIlZCA8ICVkXG4iLCBub2RlLT50b3RsZW4sCisJCQkJCQlzaXplb2Yoc3RydWN0IGpmZnMyX3Vua25vd25fbm9kZSkpOworCQkJfSBlbHNlIHsKKwkJCQlwcmludGYoIlVua25vd24gbm9kZSB0eXBlOiAleCBsZW4gJWQgIgorCQkJCQkib2Zmc2V0IDB4JXhcbiIsIG5vZGUtPm5vZGV0eXBlLAorCQkJCQlub2RlLT50b3RsZW4sIG9mZnNldCk7CisJCQl9CisJCQlvZmZzZXQgKz0gKChub2RlLT50b3RsZW4gKyAzKSAmIH4zKTsKKwkJCW9mcyArPSAoKG5vZGUtPnRvdGxlbiArIDMpICYgfjMpOworCQkJY291bnRlckYrKzsKKwkJfQorCX0KKworCXB1dHN0cigiXGJcYiBkb25lLlxyXG4iKTsJCS8qIGNsb3NlIG9mZiB0aGUgZG90cyAqLworCisjaWYgMAorCXB1dExhYmVsZWRXb3JkKCJkaXIgZW50cmllcyA9ICIsIHBMLT5kaXIubGlzdENvdW50KTsKKwlwdXRMYWJlbGVkV29yZCgiZnJhZyBlbnRyaWVzID0gIiwgcEwtPmZyYWcubGlzdENvdW50KTsKKwlwdXRMYWJlbGVkV29yZCgiKzQgaW5jcmVtZW50cyA9ICIsIGNvdW50ZXI0KTsKKwlwdXRMYWJlbGVkV29yZCgiK2ZpbGVfb2Zmc2V0IGluY3JlbWVudHMgPSAiLCBjb3VudGVyRik7CisjZW5kaWYKKworI2lmZGVmIERFQlVHX0RJUkVOVFMKKwlkdW1wX2RpcmVudHMocEwpOworI2VuZGlmCisKKyNpZmRlZiBERUJVR19GUkFHTUVOVFMKKwlkdW1wX2ZyYWdtZW50cyhwTCk7CisjZW5kaWYKKworCS8qIGdpdmUgdmlzdWFsIGZlZWRiYWNrIHRoYXQgd2UgYXJlIGRvbmUgc2Nhbm5pbmcgdGhlIGZsYXNoICovCisJbGVkX2JsaW5rKDB4MCwgMHgwLCAweDEsIDB4MSk7CS8qIG9mZiwgZm9yZXZlciwgb24gMTAwbXMsIG9mZiAxMDBtcyAqLworCWZyZWUoYnVmKTsKKworCXJldHVybiAxOworfQorCisKK3N0YXRpYyB1MzIKK2pmZnMyXzFwYXNzX2ZpbGxfaW5mbyhzdHJ1Y3QgYl9saXN0cyAqIHBMLCBzdHJ1Y3QgYl9qZmZzMl9pbmZvICogcGlMKQoreworCXN0cnVjdCBiX25vZGUgKmI7CisJc3RydWN0IGpmZnMyX3Jhd19pbm9kZSBvak5vZGU7CisJc3RydWN0IGpmZnMyX3Jhd19pbm9kZSAqak5vZGU7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgSkZGUzJfTlVNX0NPTVBSOyBpKyspIHsKKwkJcGlMLT5jb21wcl9pbmZvW2ldLm51bV9mcmFncyA9IDA7CisJCXBpTC0+Y29tcHJfaW5mb1tpXS5jb21wcl9zdW0gPSAwOworCQlwaUwtPmNvbXByX2luZm9baV0uZGVjb21wcl9zdW0gPSAwOworCX0KKy8qCUZJWE1FCisJYiA9IHBMLT5mcmFnLmxpc3RIZWFkOworCXdoaWxlIChiKSB7CisJCWpOb2RlID0gKHN0cnVjdCBqZmZzMl9yYXdfaW5vZGUgKikgZ2V0X2ZsX21lbShiLT5vZmZzZXQsCisJCQlzaXplb2Yob2pOb2RlKSwgJm9qTm9kZSk7CisJCWlmIChqTm9kZS0+Y29tcHIgPCBKRkZTMl9OVU1fQ09NUFIpIHsKKwkJCXBpTC0+Y29tcHJfaW5mb1tqTm9kZS0+Y29tcHJdLm51bV9mcmFncysrOworCQkJcGlMLT5jb21wcl9pbmZvW2pOb2RlLT5jb21wcl0uY29tcHJfc3VtICs9IGpOb2RlLT5jc2l6ZTsKKwkJCXBpTC0+Y29tcHJfaW5mb1tqTm9kZS0+Y29tcHJdLmRlY29tcHJfc3VtICs9IGpOb2RlLT5kc2l6ZTsKKwkJfQorCQliID0gYi0+bmV4dDsKKwl9CisqLworCXJldHVybiAwOworfQorCisKK3N0YXRpYyBzdHJ1Y3QgYl9saXN0cyAqCitqZmZzMl9nZXRfbGlzdChzdHJ1Y3QgcGFydF9pbmZvICogcGFydCwgY29uc3QgY2hhciAqd2hvKQoreworCWlmIChqZmZzMl8xcGFzc19yZXNjYW5fbmVlZGVkKHBhcnQpKSB7CisJCWlmICghamZmczJfMXBhc3NfYnVpbGRfbGlzdHMocGFydCkpIHsKKwkJCXByaW50ZigiJXM6IEZhaWxlZCB0byBzY2FuIEpGRlN2MiBmaWxlIHN0cnVjdHVyZVxuIiwgd2hvKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJfQorCXJldHVybiAoc3RydWN0IGJfbGlzdHMgKilwYXJ0LT5qZmZzMl9wcml2OworfQorCisKKy8qIFByaW50IGRpcmVjdG9yeSAvIGZpbGUgY29udGVudHMgKi8KK3UzMgoramZmczJfMXBhc3NfbHMoc3RydWN0IHBhcnRfaW5mbyAqIHBhcnQsIGNvbnN0IGNoYXIgKmZuYW1lKQoreworCXN0cnVjdCBiX2xpc3RzICpwbDsKKwlsb25nIHJldCA9IDA7CisJdTMyIGlub2RlOworCisJaWYgKCEgKHBsID0gamZmczJfZ2V0X2xpc3QocGFydCwgImxzIikpKQorCQlyZXR1cm4gMDsKKworCWlmICghIChpbm9kZSA9IGpmZnMyXzFwYXNzX3NlYXJjaF9saXN0X2lub2RlcyhwbCwgZm5hbWUsIDEpKSkgeworCQlwdXRzdHIoImxzOiBGYWlsZWQgdG8gc2NhbiBqZmZzMiBmaWxlIHN0cnVjdHVyZVxyXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisjaWYgMAorCXB1dExhYmVsZWRXb3JkKCJmb3VuZCBmaWxlIGF0IGlub2RlID0gIiwgaW5vZGUpOworCXB1dExhYmVsZWRXb3JkKCJyZWFkX2lub2RlIHJldHVybnMgPSAiLCByZXQpOworI2VuZGlmCisKKwlyZXR1cm4gcmV0OworfQorCisKKy8qIExvYWQgYSBmaWxlIGZyb20gZmxhc2ggaW50byBtZW1vcnkuIGZuYW1lIGNhbiBiZSBhIGZ1bGwgcGF0aCAqLwordTMyCitqZmZzMl8xcGFzc19sb2FkKGNoYXIgKmRlc3QsIHN0cnVjdCBwYXJ0X2luZm8gKiBwYXJ0LCBjb25zdCBjaGFyICpmbmFtZSkKK3sKKworCXN0cnVjdCBiX2xpc3RzICpwbDsKKwlsb25nIHJldCA9IDA7CisJdTMyIGlub2RlOworCisJaWYgKCEgKHBsID0gamZmczJfZ2V0X2xpc3QocGFydCwgImxvYWQiKSkpCisJCXJldHVybiAwOworCisJaWYgKCEgKGlub2RlID0gamZmczJfMXBhc3Nfc2VhcmNoX2lub2RlKHBsLCBmbmFtZSwgMSkpKSB7CisJCXB1dHN0cigibG9hZDogRmFpbGVkIHRvIGZpbmQgaW5vZGVcclxuIik7CisJCXJldHVybiAwOworCX0KKworCS8qIFJlc29sdmUgc3ltbGlua3MgKi8KKwlpZiAoISAoaW5vZGUgPSBqZmZzMl8xcGFzc19yZXNvbHZlX2lub2RlKHBsLCBpbm9kZSkpKSB7CisJCXB1dHN0cigibG9hZDogRmFpbGVkIHRvIHJlc29sdmUgaW5vZGUgc3RydWN0dXJlXHJcbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoKHJldCA9IGpmZnMyXzFwYXNzX3JlYWRfaW5vZGUocGwsIGlub2RlLCBkZXN0LCBOVUxMKSkgPCAwKSB7CisJCXB1dHN0cigibG9hZDogRmFpbGVkIHRvIHJlYWQgaW5vZGVcclxuIik7CisJCXJldHVybiAwOworCX0KKworCURFQlVHRiAoImxvYWQ6IGxvYWRlZCAnJXMnIHRvIDB4JWx4ICglbGQgYnl0ZXMpXG4iLCBmbmFtZSwKKwkJCQkodW5zaWduZWQgbG9uZykgZGVzdCwgcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCisvKiBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZzIG9uIHRoaXMgcGFydGl0aW9uICovCit1MzIKK2pmZnMyXzFwYXNzX2luZm8oc3RydWN0IHBhcnRfaW5mbyAqIHBhcnQpCit7CisJc3RydWN0IGJfamZmczJfaW5mbyBpbmZvOworCXN0cnVjdCBiX2xpc3RzICpwbDsKKwlpbnQgaTsKKworCWlmICghIChwbCA9IGpmZnMyX2dldF9saXN0KHBhcnQsICJpbmZvIikpKQorCQlyZXR1cm4gMDsKKworCWpmZnMyXzFwYXNzX2ZpbGxfaW5mbyhwbCwgJmluZm8pOworCWZvciAoaSA9IDA7IGkgPCBKRkZTMl9OVU1fQ09NUFI7IGkrKykgeworCQlwcmludGYgKCJDb21wcmVzc2lvbjogJXNcbiIKKwkJCSJcdGZyYWcgY291bnQ6ICVkXG4iCisJCQkiXHRjb21wcmVzc2VkIHN1bTogJWRcbiIKKwkJCSJcdHVuY29tcHJlc3NlZCBzdW06ICVkXG4iLAorCQkJY29tcHJfbmFtZXNbaV0sCisJCQlpbmZvLmNvbXByX2luZm9baV0ubnVtX2ZyYWdzLAorCQkJaW5mby5jb21wcl9pbmZvW2ldLmNvbXByX3N1bSwKKwkJCWluZm8uY29tcHJfaW5mb1tpXS5kZWNvbXByX3N1bSk7CisJfQorCXJldHVybiAxOworfQorCisjZW5kaWYgLyogQ0ZHX0NNRF9KRkZTMiAqLwpkaWZmIC0tZ2l0IGEvZnMvamZmczIvamZmczJfbmFuZF9wcml2YXRlLmggYi9mcy9qZmZzMi9qZmZzMl9uYW5kX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGNjYThkCi0tLSAvZGV2L251bGwKKysrIGIvZnMvamZmczIvamZmczJfbmFuZF9wcml2YXRlLmgKQEAgLTAsMCArMSwxMzMgQEAKKyNpZm5kZWYgamZmczJfcHJpdmF0ZV9oCisjZGVmaW5lIGpmZnMyX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8amZmczIvamZmczIuaD4KKworc3RydWN0IGJfbm9kZSB7CisJc3RydWN0IGJfbm9kZSAqbmV4dDsKK307CisKK3N0cnVjdCBiX2lub2RlIHsKKwlzdHJ1Y3QgYl9pbm9kZSAqbmV4dDsKKwl1MzIgb2Zmc2V0OwkvKiBwaHlzaWNhbCBvZmZzZXQgdG8gYmVnaW5uaW5nIG9mIHJlYWwgaW5vZGUgKi8KKwl1MzIgdmVyc2lvbjsKKwl1MzIgaW5vOworCXUzMiBpc2l6ZTsKKwl1MzIgY3NpemU7Cit9OworCitzdHJ1Y3QgYl9kaXJlbnQgeworCXN0cnVjdCBiX2RpcmVudCAqbmV4dDsKKwl1MzIgb2Zmc2V0OwkvKiBwaHlzaWNhbCBvZmZzZXQgdG8gYmVnaW5uaW5nIG9mIHJlYWwgZGlyZW50ICovCisJdTMyIHZlcnNpb247CisJdTMyIHBpbm87CisJdTMyIGlubzsKKwl1bnNpZ25lZCBpbnQgbmhhc2g7CisJdW5zaWduZWQgY2hhciBuc2l6ZTsKKwl1bnNpZ25lZCBjaGFyIHR5cGU7Cit9OworCitzdHJ1Y3QgYl9saXN0IHsKKwlzdHJ1Y3QgYl9ub2RlICpsaXN0VGFpbDsKKwlzdHJ1Y3QgYl9ub2RlICpsaXN0SGVhZDsKKwl1bnNpZ25lZCBpbnQgbGlzdENvdW50OworCXN0cnVjdCBtZW1fYmxvY2sgKmxpc3RNZW1CYXNlOworfTsKKworc3RydWN0IGJfbGlzdHMgeworCWNoYXIgKnBhcnRPZmZzZXQ7CisJc3RydWN0IGJfbGlzdCBkaXI7CisJc3RydWN0IGJfbGlzdCBmcmFnOworfTsKKworc3RydWN0IGJfY29tcHJfaW5mbyB7CisJdTMyIG51bV9mcmFnczsKKwl1MzIgY29tcHJfc3VtOworCXUzMiBkZWNvbXByX3N1bTsKK307CisKK3N0cnVjdCBiX2pmZnMyX2luZm8geworCXN0cnVjdCBiX2NvbXByX2luZm8gY29tcHJfaW5mb1tKRkZTMl9OVU1fQ09NUFJdOworfTsKKworc3RhdGljIGlubGluZSBpbnQKK2hkcl9jcmMoc3RydWN0IGpmZnMyX3Vua25vd25fbm9kZSAqbm9kZSkKK3sKKyNpZiAxCisJdTMyIGNyYyA9IGNyYzMyX25vX2NvbXAoMCwgKHVuc2lnbmVkIGNoYXIgKilub2RlLCBzaXplb2Yoc3RydWN0IGpmZnMyX3Vua25vd25fbm9kZSkgLSA0KTsKKyNlbHNlCisJLyogd2hhdCdzIHRoZSBzZW1hbnRpY3Mgb2YgdGhpcz8gd2h5IGlzIHRoaXMgaGVyZT8gKi8KKwl1MzIgY3JjID0gY3JjMzJfbm9fY29tcCh+MCwgKHVuc2lnbmVkIGNoYXIgKilub2RlLCBzaXplb2Yoc3RydWN0IGpmZnMyX3Vua25vd25fbm9kZSkgLSA0KTsKKworCWNyYyBePSB+MDsKKyNlbmRpZgorCWlmIChub2RlLT5oZHJfY3JjICE9IGNyYykgeworCQlyZXR1cm4gMDsKKwl9IGVsc2UgeworCQlyZXR1cm4gMTsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitkaXJlbnRfY3JjKHN0cnVjdCBqZmZzMl9yYXdfZGlyZW50ICpub2RlKQoreworCWlmIChub2RlLT5ub2RlX2NyYyAhPSBjcmMzMl9ub19jb21wKDAsICh1bnNpZ25lZCBjaGFyICopbm9kZSwgc2l6ZW9mKHN0cnVjdCBqZmZzMl9yYXdfZGlyZW50KSAtIDgpKSB7CisJCXJldHVybiAwOworCX0gZWxzZSB7CisJCXJldHVybiAxOworCX0KK30KKworc3RhdGljIGlubGluZSBpbnQKK2RpcmVudF9uYW1lX2NyYyhzdHJ1Y3QgamZmczJfcmF3X2RpcmVudCAqbm9kZSkKK3sKKwlpZiAobm9kZS0+bmFtZV9jcmMgIT0gY3JjMzJfbm9fY29tcCgwLCAodW5zaWduZWQgY2hhciAqKSYobm9kZS0+bmFtZSksIG5vZGUtPm5zaXplKSkgeworCQlyZXR1cm4gMDsKKwl9IGVsc2UgeworCQlyZXR1cm4gMTsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50Citpbm9kZV9jcmMoc3RydWN0IGpmZnMyX3Jhd19pbm9kZSAqbm9kZSkKK3sKKwlpZiAobm9kZS0+bm9kZV9jcmMgIT0gY3JjMzJfbm9fY29tcCgwLCAodW5zaWduZWQgY2hhciAqKW5vZGUsIHNpemVvZihzdHJ1Y3QgamZmczJfcmF3X2lub2RlKSAtIDgpKSB7CisJCXJldHVybiAwOworCX0gZWxzZSB7CisJCXJldHVybiAxOworCX0KK30KKworLyogQm9ycm93ZWQgZnJvbSBpbmNsdWRlL2xpbnV4L2RjYWNoZS5oICovCisKKy8qIE5hbWUgaGFzaGluZyByb3V0aW5lcy4gSW5pdGlhbCBoYXNoIHZhbHVlICovCisvKiBIYXNoIGNvdXJ0ZXN5IG9mIHRoZSBSNSBoYXNoIGluIHJlaXNlcmZzIG1vZHVsbyBzaWduIGJpdHMgKi8KKyNkZWZpbmUgaW5pdF9uYW1lX2hhc2goKQkJMAorCisvKiBwYXJ0aWFsIGhhc2ggdXBkYXRlIGZ1bmN0aW9uLiBBc3N1bWUgcm91Z2hseSA0IGJpdHMgcGVyIGNoYXJhY3RlciAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCitwYXJ0aWFsX25hbWVfaGFzaCh1bnNpZ25lZCBsb25nIGMsIHVuc2lnbmVkIGxvbmcgcHJldmhhc2gpCit7CisJcmV0dXJuIChwcmV2aGFzaCArIChjIDw8IDQpICsgKGMgPj4gNCkpICogMTE7Cit9CisKKy8qCisgKiBGaW5hbGx5OiBjdXQgZG93biB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gYSBpbnQgdmFsdWUgKGFuZCB0cnkgdG8gYXZvaWQKKyAqIGxvc2luZyBiaXRzKQorICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZW5kX25hbWVfaGFzaCh1bnNpZ25lZCBsb25nIGhhc2gpCit7CisJcmV0dXJuICh1bnNpZ25lZCBpbnQpIGhhc2g7Cit9CisKKy8qIENvbXB1dGUgdGhlIGhhc2ggZm9yIGEgbmFtZSBzdHJpbmcuICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAorZnVsbF9uYW1lX2hhc2goY29uc3QgdW5zaWduZWQgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGxlbikKK3sKKwl1bnNpZ25lZCBsb25nIGhhc2ggPSBpbml0X25hbWVfaGFzaCgpOworCXdoaWxlIChsZW4tLSkKKwkJaGFzaCA9IHBhcnRpYWxfbmFtZV9oYXNoKCpuYW1lKyssIGhhc2gpOworCXJldHVybiBlbmRfbmFtZV9oYXNoKGhhc2gpOworfQorCisjZW5kaWYgLyogamZmczJfcHJpdmF0ZS5oICovCmRpZmYgLS1naXQgYS9mcy9qZmZzMi9qZmZzMl9wcml2YXRlLmggYi9mcy9qZmZzMi9qZmZzMl9wcml2YXRlLmgKaW5kZXggNjVjYTZlYi4uM2UxZmZmNCAxMDA2NDQKLS0tIGEvZnMvamZmczIvamZmczJfcHJpdmF0ZS5oCisrKyBiL2ZzL2pmZnMyL2pmZnMyX3ByaXZhdGUuaApAQCAtODUsNCArODUsMTYgQEAKIAl9CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50CitkYXRhX2NyYyhzdHJ1Y3QgamZmczJfcmF3X2lub2RlICpub2RlKQoreworCWlmIChub2RlLT5kYXRhX2NyYyAhPSBjcmMzMl9ub19jb21wKDAsICh1bnNpZ25lZCBjaGFyICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaW50KSAmbm9kZS0+bm9kZV9jcmMgKyBzaXplb2YgKG5vZGUtPm5vZGVfY3JjKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jc2l6ZSkpIHsKKwkJcmV0dXJuIDA7CisJfSBlbHNlIHsKKwkJcmV0dXJuIDE7CisJfQorfQorCiAjZW5kaWYgLyogamZmczJfcHJpdmF0ZS5oICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hcm03MjB0L3MzYzQ1MTBiLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hcm03MjB0L3MzYzQ1MTBiLmgKaW5kZXggNTE3YjFhZC4uNzNhM2I2ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXJtNzIwdC9zM2M0NTEwYi5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWFybTcyMHQvczNjNDUxMGIuaApAQCAtMjY3LDggKzI2Nyw2IEBACiAJdm9pZCAoKm1fZnVuYykoIHZvaWQgKmRhdGEpOwogfTsKIAotZXh0ZXJuIHN0cnVjdCBfaXJxX2hhbmRsZXIgSVJRX0hBTkRMRVJbXTsKLQogI2VuZGlmCiAKICNlbmRpZiAvKiBfX1MzQzQ1MTBfaCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvaGFyZHdhcmUuaAppbmRleCAzZmYxZDI2Li5jOGM0NzlhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvaGFyZHdhcmUuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvaGFyZHdhcmUuaApAQCAtOTIsNiArOTIsMTAgQEAKICMgIGRlZmluZSBfX1JFRzIoeCx5KQkoKih2b2xhdGlsZSB1MzIgKikoKHUzMikmX19SRUcoeCkgKyAoeSkpKQogIyBlbHNlCiAjICBkZWZpbmUgX19SRUcoeCkgKHgpCisjICBpZmRlZiBDT05GSUdfQ1BVX01PTkFIQU5TIC8qIEhhY2sgdG8gbWFrZSB0aGlzIHdvcmsgd2l0aCBtb25hJ3MgcHhhLXJlZ3MuaCAqLworIyAgIGRlZmluZSBfX1JFR18yKHgpICh4KQorIyAgIGRlZmluZSBfX1JFR18zKHgpICh4KQorIyAgZW5kaWYKICMgZW5kaWYKICNlbmRpZiAvKiBVQk9PVF9SRUdfRklYICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3B4YS1yZWdzLmgKaW5kZXggNDFkMzdkNy4uODNhZTVlMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3B4YS1yZWdzLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3B4YS1yZWdzLmgKQEAgLTMzLDEyICszMywyMSBAQAogLyoKICAqIFBYQSBDaGlwIHNlbGVjdHMKICAqLworI2lmZGVmIENPTkZJR19DUFVfTU9OQUhBTlMKKyNkZWZpbmUgUFhBX0NTMF9QSFlTICAgMHgwMDAwMDAwMCAvKiBmb3IgYm90aCBzbWFsbCBhbmQgbGFyZ2Ugc2FtZSBzdGFydCAqLworI2RlZmluZSBQWEFfQ1MxX1BIWVMgICAweDA0MDAwMDAwIC8qIFNtYWxsIHBhcnRpdGlvbiBzdGFydCBhZGRyZXNzICg2NE1CKSAqLworI2RlZmluZSBQWEFfQ1MxX0xQSFlTICAweDMwMDAwMDAwIC8qIExhcmdlIHBhcnRpdGlvbiBzdGFydCBhZGRyZXNzICgyNTZNQikgKi8KKyNkZWZpbmUgUFhBX0NTMl9QSFlTICAgMHgxMDAwMDAwMCAvKiAoNjRNQikgKi8KKyNkZWZpbmUgUFhBX0NTM19QSFlTICAgMHgxNDAwMDAwMCAvKiAoNjRNQikgKi8KKyNkZWZpbmUgUFhBX1BDTUNJQV9QSFlTICAgICAgICAweDIwMDAwMDAwIC8qICgyNTZNQikgKi8KKyNlbHNlCiAjZGVmaW5lIFBYQV9DUzBfUEhZUwkweDAwMDAwMDAwCiAjZGVmaW5lIFBYQV9DUzFfUEhZUwkweDA0MDAwMDAwCiAjZGVmaW5lIFBYQV9DUzJfUEhZUwkweDA4MDAwMDAwCiAjZGVmaW5lIFBYQV9DUzNfUEhZUwkweDBDMDAwMDAwCiAjZGVmaW5lIFBYQV9DUzRfUEhZUwkweDEwMDAwMDAwCiAjZGVmaW5lIFBYQV9DUzVfUEhZUwkweDE0MDAwMDAwCisjZW5kaWYgLyogQ09ORklHX0NQVV9NT05BSEFOUyAqLwogCiAvKgogICogUGVyc29uYWwgQ29tcHV0ZXIgTWVtb3J5IENhcmQgSW50ZXJuYXRpb25hbCBBc3NvY2lhdGlvbiAoUENNQ0lBKSBzb2NrZXRzCkBAIC00OSwxMCArNTgsMTIgQEAKICNkZWZpbmUgUENNQ0lBQXR0clNwCVBDTUNJQVBydFNwCS8qIFBDTUNJQSBBdHRyaWJ1dGUgU3BhY2UgW2J5dGVdICAgKi8KICNkZWZpbmUgUENNQ0lBTWVtU3AJUENNQ0lBUHJ0U3AJLyogUENNQ0lBIE1lbW9yeSBTcGFjZSBbYnl0ZV0JICAgKi8KIAorI2lmbmRlZiBDT05GSUdfQ1BVX01PTkFIQU5TICAgICAgICAgICAgIC8qIE1vbmFoYW5zIHN1cHBvcnRzIG9ubHkgb25lIHNsb3QgKi8KICNkZWZpbmUgUENNQ0lBMFNwCVBDTUNJQVNwCS8qIFBDTUNJQSAwIFNwYWNlIFtieXRlXQkgICAqLwogI2RlZmluZSBQQ01DSUEwSU9TcAlQQ01DSUFJT1NwCS8qIFBDTUNJQSAwIEkvTyBTcGFjZSBbYnl0ZV0JICAgKi8KICNkZWZpbmUgUENNQ0lBMEF0dHJTcAlQQ01DSUFBdHRyU3AJLyogUENNQ0lBIDAgQXR0cmlidXRlIFNwYWNlIFtieXRlXSAqLwogI2RlZmluZSBQQ01DSUEwTWVtU3AJUENNQ0lBTWVtU3AJLyogUENNQ0lBIDAgTWVtb3J5IFNwYWNlIFtieXRlXQkgICAqLworI2VuZGlmCiAKICNkZWZpbmUgUENNQ0lBMVNwCVBDTUNJQVNwCS8qIFBDTUNJQSAxIFNwYWNlIFtieXRlXQkgICAqLwogI2RlZmluZSBQQ01DSUExSU9TcAlQQ01DSUFJT1NwCS8qIFBDTUNJQSAxIEkvTyBTcGFjZSBbYnl0ZV0JICAgKi8KQEAgLTcyLDEwICs4MywxMiBAQAogI2RlZmluZSBfUENNQ0lBMEF0dHIJX1BDTUNJQUF0dHIgKDApIC8qIFBDTUNJQSAwIEF0dHJpYnV0ZQkJICAgKi8KICNkZWZpbmUgX1BDTUNJQTBNZW0JX1BDTUNJQU1lbSAoMCkJLyogUENNQ0lBIDAgTWVtb3J5CQkgICAqLwogCisjaWZuZGVmIENPTkZJR19DUFVfTU9OQUhBTlMgICAgICAgICAgICAgLyogTW9uYWhhbnMgc3VwcG9ydHMgb25seSBvbmUgc2xvdCAqLwogI2RlZmluZSBfUENNQ0lBMQlfUENNQ0lBICgxKQkvKiBQQ01DSUEgMQkJCSAgICovCiAjZGVmaW5lIF9QQ01DSUExSU8JX1BDTUNJQUlPICgxKQkvKiBQQ01DSUEgMSBJL08JCQkgICAqLwogI2RlZmluZSBfUENNQ0lBMUF0dHIJX1BDTUNJQUF0dHIgKDEpIC8qIFBDTUNJQSAxIEF0dHJpYnV0ZQkJICAgKi8KICNkZWZpbmUgX1BDTUNJQTFNZW0JX1BDTUNJQU1lbSAoMSkJLyogUENNQ0lBIDEgTWVtb3J5CQkgICAqLworI2VuZGlmCiAKIC8qCiAgKiBETUEgQ29udHJvbGxlcgpAQCAtOTYsNiArMTA5LDI0IEBACiAjZGVmaW5lIERDU1IxMwkJX19SRUcoMHg0MDAwMDAzNCkgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIGZvciBDaGFubmVsIDEzICovCiAjZGVmaW5lIERDU1IxNAkJX19SRUcoMHg0MDAwMDAzOCkgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIGZvciBDaGFubmVsIDE0ICovCiAjZGVmaW5lIERDU1IxNQkJX19SRUcoMHg0MDAwMDAzYykgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIGZvciBDaGFubmVsIDE1ICovCisjaWZkZWYgQ09ORklHX0NQVV9NT05BSEFOUworI2RlZmluZSBEQ1NSMTYJCV9fUkVHKDB4NDAwMDAwNDApICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAxNiAqLworI2RlZmluZSBEQ1NSMTcJCV9fUkVHKDB4NDAwMDAwNDQpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAxNyAqLworI2RlZmluZSBEQ1NSMTgJCV9fUkVHKDB4NDAwMDAwNDgpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAxOCAqLworI2RlZmluZSBEQ1NSMTkJCV9fUkVHKDB4NDAwMDAwNGMpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAxOSAqLworI2RlZmluZSBEQ1NSMjAJCV9fUkVHKDB4NDAwMDAwNTApICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyMCAqLworI2RlZmluZSBEQ1NSMjEJCV9fUkVHKDB4NDAwMDAwNTQpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyMSAqLworI2RlZmluZSBEQ1NSMjIJCV9fUkVHKDB4NDAwMDAwNTgpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyMiAqLworI2RlZmluZSBEQ1NSMjMJCV9fUkVHKDB4NDAwMDAwNWMpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyMyAqLworI2RlZmluZSBEQ1NSMjQJCV9fUkVHKDB4NDAwMDAwNjApICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyNCAqLworI2RlZmluZSBEQ1NSMjUJCV9fUkVHKDB4NDAwMDAwNjQpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyNSAqLworI2RlZmluZSBEQ1NSMjYJCV9fUkVHKDB4NDAwMDAwNjgpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyNiAqLworI2RlZmluZSBEQ1NSMjcJCV9fUkVHKDB4NDAwMDAwNmMpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyNyAqLworI2RlZmluZSBEQ1NSMjgJCV9fUkVHKDB4NDAwMDAwNzApICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyOCAqLworI2RlZmluZSBEQ1NSMjkJCV9fUkVHKDB4NDAwMDAwNzQpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAyOSAqLworI2RlZmluZSBEQ1NSMzAJCV9fUkVHKDB4NDAwMDAwNzgpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAzMCAqLworI2RlZmluZSBEQ1NSMzEJCV9fUkVHKDB4NDAwMDAwN2MpICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAzMSAqLworI2VuZGlmIC8qIENPTkZJR19DUFVfTU9OQUhBTlMgKi8KIAogI2RlZmluZSBEQ1NSKHgpCQlfX1JFRzIoMHg0MDAwMDAwMCwgKHgpIDw8IDIpCiAKQEAgLTEwMyw3ICsxMzQsNyBAQAogI2RlZmluZSBEQ1NSX05PREVTQwkoMSA8PCAzMCkJLyogTm8tRGVzY3JpcHRvciBGZXRjaCAocmVhZCAvIHdyaXRlKSAqLwogI2RlZmluZSBEQ1NSX1NUT1BJUlFFTgkoMSA8PCAyOSkJLyogU3RvcCBJbnRlcnJ1cHQgRW5hYmxlIChyZWFkIC8gd3JpdGUpICovCiAKLSNpZiBkZWZpbmVkKENPTkZJR19QWEEyN1gpCisjaWYgZGVmaW5lZChDT05GSUdfUFhBMjdYKSB8fCBkZWZpbmVkIChDT05GSUdfQ1BVX01PTkFIQU5TKQogI2RlZmluZSBEQ1NSX0VPUklSUUVOCSgxIDw8IDI4KQkvKiBFbmQgb2YgUmVjZWl2ZSBJbnRlcnJ1cHQgRW5hYmxlIChSL1cpICovCiAjZGVmaW5lIERDU1JfRU9SSk1QRU4JKDEgPDwgMjcpCS8qIEp1bXAgdG8gbmV4dCBkZXNjcmlwdG9yIG9uIEVPUiAqLwogI2RlZmluZSBEQ1NSX0VPUlNUT1BFTgkoMSA8PCAyNikJLyogU1RPUCBvbiBhbiBFT1IgKi8KQEAgLTgxMywxNSArODQ0LDQ3IEBACiAvKgogICogT1MgVGltZXIgJiBNYXRjaCBSZWdpc3RlcnMKICAqLwotI2RlZmluZSBPU01SMAkJX19SRUcoMHg0MEEwMDAwMCkgIC8qICovCi0jZGVmaW5lIE9TTVIxCQlfX1JFRygweDQwQTAwMDA0KSAgLyogKi8KLSNkZWZpbmUgT1NNUjIJCV9fUkVHKDB4NDBBMDAwMDgpICAvKiAqLwotI2RlZmluZSBPU01SMwkJX19SRUcoMHg0MEEwMDAwQykgIC8qICovCisjZGVmaW5lIE9TTVIwCQlfX1JFRygweDQwQTAwMDAwKSAgLyogT1MgVGltZXIgTWF0Y2ggUmVnaXN0ZXIgMCAqLworI2RlZmluZSBPU01SMQkJX19SRUcoMHg0MEEwMDAwNCkgIC8qIE9TIFRpbWVyIE1hdGNoIFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgT1NNUjIJCV9fUkVHKDB4NDBBMDAwMDgpICAvKiBPUyBUaW1lciBNYXRjaCBSZWdpc3RlciAyICovCisjZGVmaW5lIE9TTVIzCQlfX1JFRygweDQwQTAwMDBDKSAgLyogT1MgVGltZXIgTWF0Y2ggUmVnaXN0ZXIgMyAqLwogI2RlZmluZSBPU0NSCQlfX1JFRygweDQwQTAwMDEwKSAgLyogT1MgVGltZXIgQ291bnRlciBSZWdpc3RlciAqLwogI2RlZmluZSBPU1NSCQlfX1JFRygweDQwQTAwMDE0KSAgLyogT1MgVGltZXIgU3RhdHVzIFJlZ2lzdGVyICovCiAjZGVmaW5lIE9XRVIJCV9fUkVHKDB4NDBBMDAwMTgpICAvKiBPUyBUaW1lciBXYXRjaGRvZyBFbmFibGUgUmVnaXN0ZXIgKi8KICNkZWZpbmUgT0lFUgkJX19SRUcoMHg0MEEwMDAxQykgIC8qIE9TIFRpbWVyIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgKi8KIAorI2lmZGVmIENPTkZJR19DUFVfTU9OQUhBTlMKKyNkZWZpbmUgT1NDUjQJCV9fUkVHKDB4NDBBMDAwNDApICAvKiBPUyBUaW1lciBDb3VudGVyIFJlZ2lzdGVyIDQgKi8KKyNkZWZpbmUgT1NDUjUJCV9fUkVHKDB4NDBBMDAwNDQpICAvKiBPUyBUaW1lciBDb3VudGVyIFJlZ2lzdGVyIDUgKi8KKyNkZWZpbmUgT1NDUjYJCV9fUkVHKDB4NDBBMDAwNDgpICAvKiBPUyBUaW1lciBDb3VudGVyIFJlZ2lzdGVyIDYgKi8KKyNkZWZpbmUgT1NDUjcJCV9fUkVHKDB4NDBBMDAwNEMpICAvKiBPUyBUaW1lciBDb3VudGVyIFJlZ2lzdGVyIDcgKi8KKyNkZWZpbmUgT1NDUjgJCV9fUkVHKDB4NDBBMDAwNTApICAvKiBPUyBUaW1lciBDb3VudGVyIFJlZ2lzdGVyIDggKi8KKyNkZWZpbmUgT1NDUjkJCV9fUkVHKDB4NDBBMDAwNTQpICAvKiBPUyBUaW1lciBDb3VudGVyIFJlZ2lzdGVyIDkgKi8KKyNkZWZpbmUgT1NDUjEwCQlfX1JFRygweDQwQTAwMDU4KSAgLyogT1MgVGltZXIgQ291bnRlciBSZWdpc3RlciAxMCAqLworI2RlZmluZSBPU0NSMTEJCV9fUkVHKDB4NDBBMDAwNUMpICAvKiBPUyBUaW1lciBDb3VudGVyIFJlZ2lzdGVyIDExICovCisKKyNkZWZpbmUgT1NNUjQJCV9fUkVHKDB4NDBBMDAwODApICAvKiBPUyBUaW1lciBNYXRjaCBSZWdpc3RlciA0ICovCisjZGVmaW5lIE9TTVI1CQlfX1JFRygweDQwQTAwMDg0KSAgLyogT1MgVGltZXIgTWF0Y2ggUmVnaXN0ZXIgNSAqLworI2RlZmluZSBPU01SNgkJX19SRUcoMHg0MEEwMDA4OCkgIC8qIE9TIFRpbWVyIE1hdGNoIFJlZ2lzdGVyIDYgKi8KKyNkZWZpbmUgT1NNUjcJCV9fUkVHKDB4NDBBMDAwOEMpICAvKiBPUyBUaW1lciBNYXRjaCBSZWdpc3RlciA3ICovCisjZGVmaW5lIE9TTVI4CQlfX1JFRygweDQwQTAwMDkwKSAgLyogT1MgVGltZXIgTWF0Y2ggUmVnaXN0ZXIgOCAqLworI2RlZmluZSBPU01SOQkJX19SRUcoMHg0MEEwMDA5NCkgIC8qIE9TIFRpbWVyIE1hdGNoIFJlZ2lzdGVyIDkgKi8KKyNkZWZpbmUgT1NNUjEwCQlfX1JFRygweDQwQTAwMDk4KSAgLyogT1MgVGltZXIgTWF0Y2ggUmVnaXN0ZXIgMTAgKi8KKyNkZWZpbmUgT1NNUjExCQlfX1JFRygweDQwQTAwMDlDKSAgLyogT1MgVGltZXIgTWF0Y2ggUmVnaXN0ZXIgMTEgKi8KKworI2RlZmluZSBPTUNSNAkJX19SRUcoMHg0MEEwMDBDMCkgIC8qIE9TIE1hdGNoIENvbnRyb2wgUmVnaXN0ZXIgNCAqLworI2RlZmluZSBPTUNSNQkJX19SRUcoMHg0MEEwMDBDNCkgIC8qIE9TIE1hdGNoIENvbnRyb2wgUmVnaXN0ZXIgNSAqLworI2RlZmluZSBPTUNSNgkJX19SRUcoMHg0MEEwMDBDOCkgIC8qIE9TIE1hdGNoIENvbnRyb2wgUmVnaXN0ZXIgNiAqLworI2RlZmluZSBPTUNSNwkJX19SRUcoMHg0MEEwMDBDQykgIC8qIE9TIE1hdGNoIENvbnRyb2wgUmVnaXN0ZXIgNyAqLworI2RlZmluZSBPTUNSOAkJX19SRUcoMHg0MEEwMDBEMCkgIC8qIE9TIE1hdGNoIENvbnRyb2wgUmVnaXN0ZXIgOCAqLworI2RlZmluZSBPTUNSOQkJX19SRUcoMHg0MEEwMDBENCkgIC8qIE9TIE1hdGNoIENvbnRyb2wgUmVnaXN0ZXIgOSAqLworI2RlZmluZSBPTUNSMTAJCV9fUkVHKDB4NDBBMDAwRDgpICAvKiBPUyBNYXRjaCBDb250cm9sIFJlZ2lzdGVyIDEwICovCisjZGVmaW5lIE9NQ1IxMQkJX19SRUcoMHg0MEEwMDBEQykgIC8qIE9TIE1hdGNoIENvbnRyb2wgUmVnaXN0ZXIgMTEgKi8KKworI2RlZmluZSBPU0NSX0NMS19GUkVRCSAzLjI1MAkJICAgLyogTUh6ICovCisjZW5kaWYgLyogQ09ORklHX0NQVV9NT05BSEFOUyAqLworCisjZGVmaW5lIE9TU1JfTTQJCSgxIDw8IDQpCS8qIE1hdGNoIHN0YXR1cyBjaGFubmVsIDQgKi8KICNkZWZpbmUgT1NTUl9NMwkJKDEgPDwgMykJLyogTWF0Y2ggc3RhdHVzIGNoYW5uZWwgMyAqLwogI2RlZmluZSBPU1NSX00yCQkoMSA8PCAyKQkvKiBNYXRjaCBzdGF0dXMgY2hhbm5lbCAyICovCiAjZGVmaW5lIE9TU1JfTTEJCSgxIDw8IDEpCS8qIE1hdGNoIHN0YXR1cyBjaGFubmVsIDEgKi8KQEAgLTgyOSw2ICs4OTIsNyBAQAogCiAjZGVmaW5lIE9XRVJfV01FCSgxIDw8IDApCS8qIFdhdGNoZG9nIE1hdGNoIEVuYWJsZSAqLwogCisjZGVmaW5lIE9JRVJfRTQJCSgxIDw8IDQpCS8qIEludGVycnVwdCBlbmFibGUgY2hhbm5lbCA0ICovCiAjZGVmaW5lIE9JRVJfRTMJCSgxIDw8IDMpCS8qIEludGVycnVwdCBlbmFibGUgY2hhbm5lbCAzICovCiAjZGVmaW5lIE9JRVJfRTIJCSgxIDw8IDIpCS8qIEludGVycnVwdCBlbmFibGUgY2hhbm5lbCAyICovCiAjZGVmaW5lIE9JRVJfRTEJCSgxIDw8IDEpCS8qIEludGVycnVwdCBlbmFibGUgY2hhbm5lbCAxICovCkBAIC04NTUsNiArOTE5LDE5IEBACiAjZGVmaW5lIElDUFIJCV9fUkVHKDB4NDBEMDAwMTApICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBQZW5kaW5nIFJlZ2lzdGVyICovCiAjZGVmaW5lIElDQ1IJCV9fUkVHKDB4NDBEMDAwMTQpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBDb250cm9sIFJlZ2lzdGVyICovCiAKKyNpZmRlZiBDT05GSUdfQ1BVX01PTkFIQU5TCisjZGVmaW5lIElDSFAJCV9fUkVHKDB4NDBEMDAwMTgpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBIaWdoZXN0IFByaW9yaXR5IFJlZ2lzdGVyICovCisvKiBNaXNzaW5nOiAzMiBJbnRlcnJ1cHQgcHJpb3JpdHkgcmVnaXN0ZXJzICovCisvKiBta0B0YmQ6IFRoZXNlIGFyZSB0aGUgc2FtZSBhcyBiZW5lYXRoIGZvciBQWEEyN3g6IG1heWJlIGNhbiBiZQorICogbWVyZ2VkIGlmIEdQSU8gU3R1ZmYgaXMgc2FtZSB0b28uICovCisjZGVmaW5lIElDSVAyCQlfX1JFRygweDQwRDAwMDlDKSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgSVJRIFBlbmRpbmcgUmVnaXN0ZXIgMiAqLworI2RlZmluZSBJQ01SMgkJX19SRUcoMHg0MEQwMDBBMCkgIC8qIEludGVycnVwdCBDb250cm9sbGVyIE1hc2sgUmVnaXN0ZXIgMiAqLworI2RlZmluZSBJQ0xSMgkJX19SRUcoMHg0MEQwMDBBNCkgIC8qIEludGVycnVwdCBDb250cm9sbGVyIExldmVsIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgSUNGUDIJCV9fUkVHKDB4NDBEMDAwQTgpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBGSVEgUGVuZGluZyBSZWdpc3RlciAyICovCisjZGVmaW5lIElDUFIyCQlfX1JFRygweDQwRDAwMEFDKSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgUGVuZGluZyBSZWdpc3RlciAyICovCisvKiBNaXNzaW5nOiAyIEludGVycnVwdCBwcmlvcml0eSByZWdpc3RlcnMgKi8KKyNlbmRpZiAvKiBDT05GSUdfQ1BVX01PTkFIQU5TICovCisKIC8qCiAgKiBHZW5lcmFsIFB1cnBvc2UgSS9PCiAgKi8KQEAgLTg4NiwxMiArOTYzLDI4NyBAQAogI2RlZmluZSBHRURSMQkJX19SRUcoMHg0MEUwMDA0QykgIC8qIEdQSU8gRWRnZSBEZXRlY3QgU3RhdHVzIFJlZ2lzdGVyIEdQSU88NjM6MzI+ICovCiAjZGVmaW5lIEdFRFIyCQlfX1JFRygweDQwRTAwMDUwKSAgLyogR1BJTyBFZGdlIERldGVjdCBTdGF0dXMgUmVnaXN0ZXIgR1BJTzw4MDo2ND4gKi8KIAorI2lmZGVmIENPTkZJR19DUFVfTU9OQUhBTlMKKyNkZWZpbmUgR1BMUjMJCV9fUkVHKDB4NDBFMDAxMDApICAvKiBHUElPIFBpbi1MZXZlbCBSZWdpc3RlciBHUElPPDEyNzo5Nj4gKi8KKyNkZWZpbmUgR1BEUjMJCV9fUkVHKDB4NDBFMDAxMEMpICAvKiBHUElPIFBpbiBEaXJlY3Rpb24gUmVnaXN0ZXIgR1BJTzwxMjc6OTY+ICovCisjZGVmaW5lIEdQU1IzCQlfX1JFRygweDQwRTAwMTE4KSAgLyogR1BJTyBQaW4gT3V0cHV0IFNldCBSZWdpc3RlciBHUElPPDEyNzo5Nj4gKi8KKyNkZWZpbmUgR1BDUjMJCV9fUkVHKDB4NDBFMDAxMjQpICAvKiBHUElPIFBpbiBPdXRwdXQgQ2xlYXIgUmVnaXN0ZXIgR1BJTzwxMjc6OTY+ICovCisjZGVmaW5lIEdSRVIzCQlfX1JFRygweDQwRTAwMTMwKSAgLyogR1BJTyBSaXNpbmctRWRnZSBEZXRlY3QgUmVnaXN0ZXIgR1BJTzwxMjc6OTY+ICovCisjZGVmaW5lIEdGRVIzCQlfX1JFRygweDQwRTAwMTNDKSAgLyogR1BJTyBGYWxsaW5nLUVkZ2UgRGV0ZWN0IFJlZ2lzdGVyIEdQSU88MTI3Ojk2PiAqLworI2RlZmluZSBHRURSMwkJX19SRUcoMHg0MEUwMDE0OCkgIC8qIEdQSU8gRWRnZSBEZXRlY3QgU3RhdHVzIFJlZ2lzdGVyIEdQSU88MTI3Ojk2PiAqLworCisjZGVmaW5lIEdTRFIwCQlfX1JFRygweDQwRTAwNDAwKSAvKiBCaXQtd2lzZSBTZXQgb2YgR1BEUlszMTowXSAqLworI2RlZmluZSBHU0RSMQkJX19SRUcoMHg0MEUwMDQwNCkgLyogQml0LXdpc2UgU2V0IG9mIEdQRFJbNjM6MzJdICovCisjZGVmaW5lIEdTRFIyCQlfX1JFRygweDQwRTAwNDA4KSAvKiBCaXQtd2lzZSBTZXQgb2YgR1BEUls5NTo2NF0gKi8KKyNkZWZpbmUgR1NEUjMJCV9fUkVHKDB4NDBFMDA0MEMpIC8qIEJpdC13aXNlIFNldCBvZiBHUERSWzEyNzo5Nl0gKi8KKworI2RlZmluZSBHQ0RSMAkJX19SRUcoMHg0MEUwMDQyMCkgLyogQml0LXdpc2UgQ2xlYXIgb2YgR1BEUlszMTowXSAqLworI2RlZmluZSBHQ0RSMQkJX19SRUcoMHg0MEUwMDQyNCkgLyogQml0LXdpc2UgQ2xlYXIgb2YgR1BEUls2MzozMl0gKi8KKyNkZWZpbmUgR0NEUjIJCV9fUkVHKDB4NDBFMDA0MjgpIC8qIEJpdC13aXNlIENsZWFyIG9mIEdQRFJbOTU6NjRdICovCisjZGVmaW5lIEdDRFIzCQlfX1JFRygweDQwRTAwNDJDKSAvKiBCaXQtd2lzZSBDbGVhciBvZiBHUERSWzEyNzo5Nl0gKi8KKworI2RlZmluZSBHU1JFUjAJCV9fUkVHKDB4NDBFMDA0NDApIC8qIFNldCBSaXNpbmcgRWRnZSBEZXQuIEVuYWJsZSBbMzE6MF0gKi8KKyNkZWZpbmUgR1NSRVIxICAJX19SRUcoMHg0MEUwMDQ0NCkgLyogU2V0IFJpc2luZyBFZGdlIERldC4gRW5hYmxlIFs2MzozMl0gKi8KKyNkZWZpbmUgR1NSRVIyCQlfX1JFRygweDQwRTAwNDQ4KSAvKiBTZXQgUmlzaW5nIEVkZ2UgRGV0LiBFbmFibGUgWzk1OjY0XSAqLworI2RlZmluZSBHU1JFUjMgIAlfX1JFRygweDQwRTAwNDRDKSAvKiBTZXQgUmlzaW5nIEVkZ2UgRGV0LiBFbmFibGUgWzEyNzo5Nl0gKi8KKworI2RlZmluZSBHQ1JFUjAJCV9fUkVHKDB4NDBFMDA0NjApIC8qIENsZWFyIFJpc2luZyBFZGdlIERldC4gRW5hYmxlIFszMTowXSAqLworI2RlZmluZSBHQ1JFUjEgIAlfX1JFRygweDQwRTAwNDY0KSAvKiBDbGVhciBSaXNpbmcgRWRnZSBEZXQuIEVuYWJsZSBbNjM6MzJdICovCisjZGVmaW5lIEdDUkVSMgkJX19SRUcoMHg0MEUwMDQ2OCkgLyogQ2xlYXIgUmlzaW5nIEVkZ2UgRGV0LiBFbmFibGUgWzk1OjY0XSAqLworI2RlZmluZSBHQ1JFUjMgIAlfX1JFRygweDQwRTAwNDZDKSAvKiBDbGVhciBSaXNpbmcgRWRnZSBEZXQuIEVuYWJsZVsxMjc6OTZdICovCisKKyNkZWZpbmUgR1NGRVIwCQlfX1JFRygweDQwRTAwNDgwKSAvKiBTZXQgRmFsbGluZyBFZGdlIERldC4gRW5hYmxlIFszMTowXSAqLworI2RlZmluZSBHU0ZFUjEgIAlfX1JFRygweDQwRTAwNDg0KSAvKiBTZXQgRmFsbGluZyBFZGdlIERldC4gRW5hYmxlIFs2MzozMl0gKi8KKyNkZWZpbmUgR1NGRVIyCQlfX1JFRygweDQwRTAwNDg4KSAvKiBTZXQgRmFsbGluZyBFZGdlIERldC4gRW5hYmxlIFs5NTo2NF0gKi8KKyNkZWZpbmUgR1NGRVIzICAJX19SRUcoMHg0MEUwMDQ4QykgLyogU2V0IEZhbGxpbmcgRWRnZSBEZXQuIEVuYWJsZVsxMjc6OTZdICovCisKKyNkZWZpbmUgR0NGRVIwCQlfX1JFRygweDQwRTAwNEEwKSAvKiBDbHIgRmFsbGluZyBFZGdlIERldC4gRW5hYmxlIFszMTowXSAqLworI2RlZmluZSBHQ0ZFUjEgIAlfX1JFRygweDQwRTAwNEE0KSAvKiBDbHIgRmFsbGluZyBFZGdlIERldC4gRW5hYmxlIFs2MzozMl0gKi8KKyNkZWZpbmUgR0NGRVIyCQlfX1JFRygweDQwRTAwNEE4KSAvKiBDbHIgRmFsbGluZyBFZGdlIERldC4gRW5hYmxlIFs5NTo2NF0gKi8KKyNkZWZpbmUgR0NGRVIzICAJX19SRUcoMHg0MEUwMDRBQykgLyogQ2xyIEZhbGxpbmcgRWRnZSBEZXQuIEVuYWJsZVsxMjc6OTZdICovCisKKyNkZWZpbmUgR1NEUih4KQkJX19SRUcyKDB4NDBFMDA0MDAsICgoeCkgJiAweDYwKSA+PiAzKQorI2RlZmluZSBHQ0RSKHgpCQlfX1JFRzIoMHg0MDMwMDQyMCwgKCh4KSAmIDB4NjApID4+IDMpCisKKy8qIE11bHRpLWZ1bmt0aW9uIFBpbiBSZWdpc3RlcnMsIHVuY29tcGxldGUsIG9ubHk6CisgKiAgICAtIEdQSU8KKyAqICAgIC0gRGF0YSBGbGFzaCBERl8qIHBpbnMgZGVmaW5lZC4KKyAqLworI2RlZmluZSBHUElPMAkJX19SRUcoMHg0MGUxMDEyNCkKKyNkZWZpbmUgR1BJTzEJCV9fUkVHKDB4NDBlMTAxMjgpCisjZGVmaW5lIEdQSU8yCQlfX1JFRygweDQwZTEwMTJjKQorI2RlZmluZSBHUElPMwkJX19SRUcoMHg0MGUxMDEzMCkKKyNkZWZpbmUgR1BJTzQJCV9fUkVHKDB4NDBlMTAxMzQpCisjZGVmaW5lIG5YQ1ZSRU4JCV9fUkVHKDB4NDBlMTAxMzgpCisKKyNkZWZpbmUgREZfQ0xFX05PRQlfX1JFRygweDQwZTEwMjA0KQorI2RlZmluZSBERl9BTEVfV0UxCV9fUkVHKDB4NDBlMTAyMDgpCisKKyNkZWZpbmUgREZfU0NMS19FCV9fUkVHKDB4NDBlMTAyMTApCisjZGVmaW5lIG5CRTAJCV9fUkVHKDB4NDBlMTAyMTQpCisjZGVmaW5lIG5CRTEJCV9fUkVHKDB4NDBlMTAyMTgpCisjZGVmaW5lIERGX0FMRV9XRTIJX19SRUcoMHg0MGUxMDIxYykKKyNkZWZpbmUgREZfSU5UX1JuQglfX1JFRygweDQwZTEwMjIwKQorI2RlZmluZSBERl9uQ1MwCQlfX1JFRygweDQwZTEwMjI0KQorI2RlZmluZSBERl9uQ1MxCQlfX1JFRygweDQwZTEwMjI4KQorI2RlZmluZSBERl9uV0UJCV9fUkVHKDB4NDBlMTAyMmMpCisjZGVmaW5lIERGX25SRQkJX19SRUcoMHg0MGUxMDIzMCkKKyNkZWZpbmUgbkxVQQkJX19SRUcoMHg0MGUxMDIzNCkKKyNkZWZpbmUgbkxMQQkJX19SRUcoMHg0MGUxMDIzOCkKKyNkZWZpbmUgREZfQUREUjAJX19SRUcoMHg0MGUxMDIzYykKKyNkZWZpbmUgREZfQUREUjEJX19SRUcoMHg0MGUxMDI0MCkKKyNkZWZpbmUgREZfQUREUjIJX19SRUcoMHg0MGUxMDI0NCkKKyNkZWZpbmUgREZfQUREUjMJX19SRUcoMHg0MGUxMDI0OCkKKyNkZWZpbmUgREZfSU8wCQlfX1JFRygweDQwZTEwMjRjKQorI2RlZmluZSBERl9JTzgJCV9fUkVHKDB4NDBlMTAyNTApCisjZGVmaW5lIERGX0lPMQkJX19SRUcoMHg0MGUxMDI1NCkKKyNkZWZpbmUgREZfSU85CQlfX1JFRygweDQwZTEwMjU4KQorI2RlZmluZSBERl9JTzIJCV9fUkVHKDB4NDBlMTAyNWMpCisjZGVmaW5lIERGX0lPMTAJCV9fUkVHKDB4NDBlMTAyNjApCisjZGVmaW5lIERGX0lPMwkJX19SRUcoMHg0MGUxMDI2NCkKKyNkZWZpbmUgREZfSU8xMQkJX19SRUcoMHg0MGUxMDI2OCkKKyNkZWZpbmUgREZfSU80CQlfX1JFRygweDQwZTEwMjZjKQorI2RlZmluZSBERl9JTzEyCQlfX1JFRygweDQwZTEwMjcwKQorI2RlZmluZSBERl9JTzUJCV9fUkVHKDB4NDBlMTAyNzQpCisjZGVmaW5lIERGX0lPMTMJCV9fUkVHKDB4NDBlMTAyNzgpCisjZGVmaW5lIERGX0lPNgkJX19SRUcoMHg0MGUxMDI3YykKKyNkZWZpbmUgREZfSU8xNAkJX19SRUcoMHg0MGUxMDI4MCkKKyNkZWZpbmUgREZfSU83CQlfX1JFRygweDQwZTEwMjg0KQorI2RlZmluZSBERl9JTzE1CQlfX1JFRygweDQwZTEwMjg4KQorCisjZGVmaW5lIEdQSU81CQlfX1JFRygweDQwZTEwMjhjKQorI2RlZmluZSBHUElPNgkJX19SRUcoMHg0MGUxMDI5MCkKKyNkZWZpbmUgR1BJTzcJCV9fUkVHKDB4NDBlMTAyOTQpCisjZGVmaW5lIEdQSU84CQlfX1JFRygweDQwZTEwMjk4KQorI2RlZmluZSBHUElPOQkJX19SRUcoMHg0MGUxMDI5YykKKworI2RlZmluZSBHUElPMTEJCV9fUkVHKDB4NDBlMTAyYTApCisjZGVmaW5lIEdQSU8xMgkJX19SRUcoMHg0MGUxMDJhNCkKKyNkZWZpbmUgR1BJTzEzCQlfX1JFRygweDQwZTEwMmE4KQorI2RlZmluZSBHUElPMTQJCV9fUkVHKDB4NDBlMTAyYWMpCisjZGVmaW5lIEdQSU8xNQkJX19SRUcoMHg0MGUxMDJiMCkKKyNkZWZpbmUgR1BJTzE2CQlfX1JFRygweDQwZTEwMmI0KQorI2RlZmluZSBHUElPMTcJCV9fUkVHKDB4NDBlMTAyYjgpCisjZGVmaW5lIEdQSU8xOAkJX19SRUcoMHg0MGUxMDJiYykKKyNkZWZpbmUgR1BJTzE5CQlfX1JFRygweDQwZTEwMmMwKQorI2RlZmluZSBHUElPMjAJCV9fUkVHKDB4NDBlMTAyYzQpCisjZGVmaW5lIEdQSU8yMQkJX19SRUcoMHg0MGUxMDJjOCkKKyNkZWZpbmUgR1BJTzIyCQlfX1JFRygweDQwZTEwMmNjKQorI2RlZmluZSBHUElPMjMJCV9fUkVHKDB4NDBlMTAyZDApCisjZGVmaW5lIEdQSU8yNAkJX19SRUcoMHg0MGUxMDJkNCkKKyNkZWZpbmUgR1BJTzI1CQlfX1JFRygweDQwZTEwMmQ4KQorI2RlZmluZSBHUElPMjYJCV9fUkVHKDB4NDBlMTAyZGMpCisKKyNkZWZpbmUgR1BJTzI3CQlfX1JFRygweDQwZTEwNDAwKQorI2RlZmluZSBHUElPMjgJCV9fUkVHKDB4NDBlMTA0MDQpCisjZGVmaW5lIEdQSU8yOQkJX19SRUcoMHg0MGUxMDQwOCkKKyNkZWZpbmUgR1BJTzMwCQlfX1JFRygweDQwZTEwNDBjKQorI2RlZmluZSBHUElPMzEJCV9fUkVHKDB4NDBlMTA0MTApCisjZGVmaW5lIEdQSU8zMgkJX19SRUcoMHg0MGUxMDQxNCkKKyNkZWZpbmUgR1BJTzMzCQlfX1JFRygweDQwZTEwNDE4KQorI2RlZmluZSBHUElPMzQJCV9fUkVHKDB4NDBlMTA0MWMpCisjZGVmaW5lIEdQSU8zNQkJX19SRUcoMHg0MGUxMDQyMCkKKyNkZWZpbmUgR1BJTzM2CQlfX1JFRygweDQwZTEwNDI0KQorI2RlZmluZSBHUElPMzcJCV9fUkVHKDB4NDBlMTA0MjgpCisjZGVmaW5lIEdQSU8zOAkJX19SRUcoMHg0MGUxMDQyYykKKyNkZWZpbmUgR1BJTzM5CQlfX1JFRygweDQwZTEwNDMwKQorI2RlZmluZSBHUElPNDAJCV9fUkVHKDB4NDBlMTA0MzQpCisjZGVmaW5lIEdQSU80MQkJX19SRUcoMHg0MGUxMDQzOCkKKyNkZWZpbmUgR1BJTzQyCQlfX1JFRygweDQwZTEwNDNjKQorI2RlZmluZSBHUElPNDMJCV9fUkVHKDB4NDBlMTA0NDApCisjZGVmaW5lIEdQSU80NAkJX19SRUcoMHg0MGUxMDQ0NCkKKyNkZWZpbmUgR1BJTzQ1CQlfX1JFRygweDQwZTEwNDQ4KQorI2RlZmluZSBHUElPNDYJCV9fUkVHKDB4NDBlMTA0NGMpCisjZGVmaW5lIEdQSU80NwkJX19SRUcoMHg0MGUxMDQ1MCkKKyNkZWZpbmUgR1BJTzQ4CQlfX1JFRygweDQwZTEwNDU0KQorCisjZGVmaW5lIEdQSU8xMAkJX19SRUcoMHg0MGUxMDQ1OCkKKworI2RlZmluZSBHUElPNDkJCV9fUkVHKDB4NDBlMTA0NWMpCisjZGVmaW5lIEdQSU81MAkJX19SRUcoMHg0MGUxMDQ2MCkKKyNkZWZpbmUgR1BJTzUxCQlfX1JFRygweDQwZTEwNDY0KQorI2RlZmluZSBHUElPNTIJCV9fUkVHKDB4NDBlMTA0NjgpCisjZGVmaW5lIEdQSU81MwkJX19SRUcoMHg0MGUxMDQ2YykKKyNkZWZpbmUgR1BJTzU0CQlfX1JFRygweDQwZTEwNDcwKQorI2RlZmluZSBHUElPNTUJCV9fUkVHKDB4NDBlMTA0NzQpCisjZGVmaW5lIEdQSU81NgkJX19SRUcoMHg0MGUxMDQ3OCkKKyNkZWZpbmUgR1BJTzU3CQlfX1JFRygweDQwZTEwNDdjKQorI2RlZmluZSBHUElPNTgJCV9fUkVHKDB4NDBlMTA0ODApCisjZGVmaW5lIEdQSU81OQkJX19SRUcoMHg0MGUxMDQ4NCkKKyNkZWZpbmUgR1BJTzYwCQlfX1JFRygweDQwZTEwNDg4KQorI2RlZmluZSBHUElPNjEJCV9fUkVHKDB4NDBlMTA0OGMpCisjZGVmaW5lIEdQSU82MgkJX19SRUcoMHg0MGUxMDQ5MCkKKworI2RlZmluZSBHUElPNl8yCQlfX1JFRygweDQwZTEwNDk0KQorI2RlZmluZSBHUElPN18yCQlfX1JFRygweDQwZTEwNDk4KQorI2RlZmluZSBHUElPOF8yCQlfX1JFRygweDQwZTEwNDljKQorI2RlZmluZSBHUElPOV8yCQlfX1JFRygweDQwZTEwNGEwKQorI2RlZmluZSBHUElPMTBfMglfX1JFRygweDQwZTEwNGE0KQorI2RlZmluZSBHUElPMTFfMglfX1JFRygweDQwZTEwNGE4KQorI2RlZmluZSBHUElPMTJfMglfX1JFRygweDQwZTEwNGFjKQorI2RlZmluZSBHUElPMTNfMglfX1JFRygweDQwZTEwNGIwKQorCisjZGVmaW5lIEdQSU82MwkJX19SRUcoMHg0MGUxMDRiNCkKKyNkZWZpbmUgR1BJTzY0CQlfX1JFRygweDQwZTEwNGI4KQorI2RlZmluZSBHUElPNjUJCV9fUkVHKDB4NDBlMTA0YmMpCisjZGVmaW5lIEdQSU82NgkJX19SRUcoMHg0MGUxMDRjMCkKKyNkZWZpbmUgR1BJTzY3CQlfX1JFRygweDQwZTEwNGM0KQorI2RlZmluZSBHUElPNjgJCV9fUkVHKDB4NDBlMTA0YzgpCisjZGVmaW5lIEdQSU82OQkJX19SRUcoMHg0MGUxMDRjYykKKyNkZWZpbmUgR1BJTzcwCQlfX1JFRygweDQwZTEwNGQwKQorI2RlZmluZSBHUElPNzEJCV9fUkVHKDB4NDBlMTA0ZDQpCisjZGVmaW5lIEdQSU83MgkJX19SRUcoMHg0MGUxMDRkOCkKKyNkZWZpbmUgR1BJTzczCQlfX1JFRygweDQwZTEwNGRjKQorCisjZGVmaW5lIEdQSU8xNF8yCV9fUkVHKDB4NDBlMTA0ZTApCisjZGVmaW5lIEdQSU8xNV8yCV9fUkVHKDB4NDBlMTA0ZTQpCisjZGVmaW5lIEdQSU8xNl8yCV9fUkVHKDB4NDBlMTA0ZTgpCisjZGVmaW5lIEdQSU8xN18yCV9fUkVHKDB4NDBlMTA0ZWMpCisKKyNkZWZpbmUgR1BJTzc0CQlfX1JFRygweDQwZTEwNGYwKQorI2RlZmluZSBHUElPNzUJCV9fUkVHKDB4NDBlMTA0ZjQpCisjZGVmaW5lIEdQSU83NgkJX19SRUcoMHg0MGUxMDRmOCkKKyNkZWZpbmUgR1BJTzc3CQlfX1JFRygweDQwZTEwNGZjKQorI2RlZmluZSBHUElPNzgJCV9fUkVHKDB4NDBlMTA1MDApCisjZGVmaW5lIEdQSU83OQkJX19SRUcoMHg0MGUxMDUwNCkKKyNkZWZpbmUgR1BJTzgwCQlfX1JFRygweDQwZTEwNTA4KQorI2RlZmluZSBHUElPODEJCV9fUkVHKDB4NDBlMTA1MGMpCisjZGVmaW5lIEdQSU84MgkJX19SRUcoMHg0MGUxMDUxMCkKKyNkZWZpbmUgR1BJTzgzCQlfX1JFRygweDQwZTEwNTE0KQorI2RlZmluZSBHUElPODQJCV9fUkVHKDB4NDBlMTA1MTgpCisjZGVmaW5lIEdQSU84NQkJX19SRUcoMHg0MGUxMDUxYykKKyNkZWZpbmUgR1BJTzg2CQlfX1JFRygweDQwZTEwNTIwKQorI2RlZmluZSBHUElPODcJCV9fUkVHKDB4NDBlMTA1MjQpCisjZGVmaW5lIEdQSU84OAkJX19SRUcoMHg0MGUxMDUyOCkKKyNkZWZpbmUgR1BJTzg5CQlfX1JFRygweDQwZTEwNTJjKQorI2RlZmluZSBHUElPOTAJCV9fUkVHKDB4NDBlMTA1MzApCisjZGVmaW5lIEdQSU85MQkJX19SRUcoMHg0MGUxMDUzNCkKKyNkZWZpbmUgR1BJTzkyCQlfX1JFRygweDQwZTEwNTM4KQorI2RlZmluZSBHUElPOTMJCV9fUkVHKDB4NDBlMTA1M2MpCisjZGVmaW5lIEdQSU85NAkJX19SRUcoMHg0MGUxMDU0MCkKKyNkZWZpbmUgR1BJTzk1CQlfX1JFRygweDQwZTEwNTQ0KQorI2RlZmluZSBHUElPOTYJCV9fUkVHKDB4NDBlMTA1NDgpCisjZGVmaW5lIEdQSU85NwkJX19SRUcoMHg0MGUxMDU0YykKKyNkZWZpbmUgR1BJTzk4CQlfX1JFRygweDQwZTEwNTUwKQorCisjZGVmaW5lIEdQSU85OQkJX19SRUcoMHg0MGUxMDYwMCkKKyNkZWZpbmUgR1BJTzEwMAkJX19SRUcoMHg0MGUxMDYwNCkKKyNkZWZpbmUgR1BJTzEwMQkJX19SRUcoMHg0MGUxMDYwOCkKKyNkZWZpbmUgR1BJTzEwMgkJX19SRUcoMHg0MGUxMDYwYykKKyNkZWZpbmUgR1BJTzEwMwkJX19SRUcoMHg0MGUxMDYxMCkKKyNkZWZpbmUgR1BJTzEwNAkJX19SRUcoMHg0MGUxMDYxNCkKKyNkZWZpbmUgR1BJTzEwNQkJX19SRUcoMHg0MGUxMDYxOCkKKyNkZWZpbmUgR1BJTzEwNgkJX19SRUcoMHg0MGUxMDYxYykKKyNkZWZpbmUgR1BJTzEwNwkJX19SRUcoMHg0MGUxMDYyMCkKKyNkZWZpbmUgR1BJTzEwOAkJX19SRUcoMHg0MGUxMDYyNCkKKyNkZWZpbmUgR1BJTzEwOQkJX19SRUcoMHg0MGUxMDYyOCkKKyNkZWZpbmUgR1BJTzExMAkJX19SRUcoMHg0MGUxMDYyYykKKyNkZWZpbmUgR1BJTzExMQkJX19SRUcoMHg0MGUxMDYzMCkKKyNkZWZpbmUgR1BJTzExMgkJX19SRUcoMHg0MGUxMDYzNCkKKworI2RlZmluZSBHUElPMTEzCQlfX1JFRygweDQwZTEwNjM4KQorI2RlZmluZSBHUElPMTE0CQlfX1JFRygweDQwZTEwNjNjKQorI2RlZmluZSBHUElPMTE1CQlfX1JFRygweDQwZTEwNjQwKQorI2RlZmluZSBHUElPMTE2CQlfX1JFRygweDQwZTEwNjQ0KQorI2RlZmluZSBHUElPMTE3CQlfX1JFRygweDQwZTEwNjQ4KQorI2RlZmluZSBHUElPMTE4CQlfX1JFRygweDQwZTEwNjRjKQorI2RlZmluZSBHUElPMTE5CQlfX1JFRygweDQwZTEwNjUwKQorI2RlZmluZSBHUElPMTIwCQlfX1JFRygweDQwZTEwNjU0KQorI2RlZmluZSBHUElPMTIxCQlfX1JFRygweDQwZTEwNjU4KQorI2RlZmluZSBHUElPMTIyCQlfX1JFRygweDQwZTEwNjVjKQorI2RlZmluZSBHUElPMTIzCQlfX1JFRygweDQwZTEwNjYwKQorI2RlZmluZSBHUElPMTI0CQlfX1JFRygweDQwZTEwNjY0KQorI2RlZmluZSBHUElPMTI1CQlfX1JFRygweDQwZTEwNjY4KQorI2RlZmluZSBHUElPMTI2CQlfX1JFRygweDQwZTEwNjZjKQorI2RlZmluZSBHUElPMTI3CQlfX1JFRygweDQwZTEwNjcwKQorCisjZGVmaW5lIEdQSU8wXzIJCV9fUkVHKDB4NDBlMTA2NzQpCisjZGVmaW5lIEdQSU8xXzIJCV9fUkVHKDB4NDBlMTA2NzgpCisjZGVmaW5lIEdQSU8yXzIJCV9fUkVHKDB4NDBlMTA2N2MpCisjZGVmaW5lIEdQSU8zXzIJCV9fUkVHKDB4NDBlMTA2ODApCisjZGVmaW5lIEdQSU80XzIJCV9fUkVHKDB4NDBlMTA2ODQpCisjZGVmaW5lIEdQSU81XzIJCV9fUkVHKDB4NDBlMTA2ODgpCisKKy8qIE1GUFIgQml0IERlZmluaXRpb25zLCBzZWUgNC0xMCwgVm9sLiAxICovCisjZGVmaW5lIFBVTExfU0VMCTB4ODAwMAorI2RlZmluZSBQVUxMVVBfRU4JMHg0MDAwCisjZGVmaW5lIFBVTExET1dOX0VOCTB4MjAwMAorCisjZGVmaW5lIERSSVZFX0ZBU1RfMW1BCTB4MAorI2RlZmluZSBEUklWRV9GQVNUXzJtQQkweDQwMAorI2RlZmluZSBEUklWRV9GQVNUXzNtQQkweDgwMAorI2RlZmluZSBEUklWRV9GQVNUXzRtQQkweEMwMAorI2RlZmluZSBEUklWRV9TTE9XXzZtQQkweDEwMDAKKyNkZWZpbmUgRFJJVkVfRkFTVF82bUEJMHgxNDAwCisjZGVmaW5lIERSSVZFX1NMT1dfMTBtQQkweDE4MDAKKyNkZWZpbmUgRFJJVkVfRkFTVF8xMG1BCTB4MUMwMAorCisjZGVmaW5lIFNMRUVQX1NFTAkweDIwMAorI2RlZmluZSBTTEVFUF9EQVRBCTB4MTAwCisjZGVmaW5lIFNMRUVQX09FX04JMHg4MAorI2RlZmluZSBFREdFX0NMRUFSCTB4NDAKKyNkZWZpbmUgRURHRV9GQUxMX0VOCTB4MjAKKyNkZWZpbmUgRURHRV9SSVNFX0VOCTB4MTAKKworI2RlZmluZSBBRl9TRUxfMAkweDAJLyogQWx0ZXJuYXRlIGZ1bmN0aW9uIDAgKHJlc2V0IHN0YXRlKSAqLworI2RlZmluZSBBRl9TRUxfMQkweDEJLyogQWx0ZXJuYXRlIGZ1bmN0aW9uIDEgKi8KKyNkZWZpbmUgQUZfU0VMXzIJMHgyCS8qIEFsdGVybmF0ZSBmdW5jdGlvbiAyICovCisjZGVmaW5lIEFGX1NFTF8zCTB4MwkvKiBBbHRlcm5hdGUgZnVuY3Rpb24gMyAqLworI2RlZmluZSBBRl9TRUxfNAkweDQJLyogQWx0ZXJuYXRlIGZ1bmN0aW9uIDQgKi8KKyNkZWZpbmUgQUZfU0VMXzUJMHg1CS8qIEFsdGVybmF0ZSBmdW5jdGlvbiA1ICovCisjZGVmaW5lIEFGX1NFTF82CTB4NgkvKiBBbHRlcm5hdGUgZnVuY3Rpb24gNiAqLworI2RlZmluZSBBRl9TRUxfNwkweDcJLyogQWx0ZXJuYXRlIGZ1bmN0aW9uIDcgKi8KKworCisjZWxzZSAvKiBDT05GSUdfQ1BVX01PTkFIQU5TICovCisKICNkZWZpbmUgR0FGUjBfTAkJX19SRUcoMHg0MEUwMDA1NCkgIC8qIEdQSU8gQWx0ZXJuYXRlIEZ1bmN0aW9uIFNlbGVjdCBSZWdpc3RlciBHUElPPDE1OjA+ICovCiAjZGVmaW5lIEdBRlIwX1UJCV9fUkVHKDB4NDBFMDAwNTgpICAvKiBHUElPIEFsdGVybmF0ZSBGdW5jdGlvbiBTZWxlY3QgUmVnaXN0ZXIgR1BJTzwzMToxNj4gKi8KICNkZWZpbmUgR0FGUjFfTAkJX19SRUcoMHg0MEUwMDA1QykgIC8qIEdQSU8gQWx0ZXJuYXRlIEZ1bmN0aW9uIFNlbGVjdCBSZWdpc3RlciBHUElPPDQ3OjMyPiAqLwogI2RlZmluZSBHQUZSMV9VCQlfX1JFRygweDQwRTAwMDYwKSAgLyogR1BJTyBBbHRlcm5hdGUgRnVuY3Rpb24gU2VsZWN0IFJlZ2lzdGVyIEdQSU88NjM6NDg+ICovCiAjZGVmaW5lIEdBRlIyX0wJCV9fUkVHKDB4NDBFMDAwNjQpICAvKiBHUElPIEFsdGVybmF0ZSBGdW5jdGlvbiBTZWxlY3QgUmVnaXN0ZXIgR1BJTzw3OTo2ND4gKi8KICNkZWZpbmUgR0FGUjJfVQkJX19SRUcoMHg0MEUwMDA2OCkgIC8qIEdQSU8gQWx0ZXJuYXRlIEZ1bmN0aW9uIFNlbGVjdCBSZWdpc3RlciBHUElPIDgwICovCisjZW5kaWYgLyogQ09ORklHX0NQVV9NT05BSEFOUyAqLwogCiAvKiBNb3JlIGhhbmR5IG1hY3Jvcy4gIFRoZSBhcmd1bWVudCBpcyBhIGxpdGVyYWwgR1BJTyBudW1iZXIuICovCiAKQEAgLTExNDIsNiArMTQ5NCw3OSBAQAogLyoKICAqIFBvd2VyIE1hbmFnZXIKICAqLworI2lmZGVmIENPTkZJR19DUFVfTU9OQUhBTlMKKworI2RlZmluZSBBU0NSCQlfX1JFRygweDQwRjQwMDAwKSAgLyogQXBwbGljYXRpb24gU3Vic3lzdGVtIFBvd2VyIFN0YXR1cy9Db250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIEFSU1IJCV9fUkVHKDB4NDBGNDAwMDQpICAvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gUmVzZXQgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIEFEM0VSCQlfX1JFRygweDQwRjQwMDA4KSAgLyogQXBwbGljYXRpb24gU3Vic3lzdGVtIEQzIHN0YXRlIFdha2V1cCBFbmFibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQUQzU1IJCV9fUkVHKDB4NDBGNDAwMEMpICAvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gRDMgc3RhdGUgV2FrZXVwIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBBRDJEMEVSCQlfX1JFRygweDQwRjQwMDEwKSAgLyogQXBwbGljYXRpb24gU3Vic3lzdGVtIEQyIHRvIEQwIHN0YXRlIFdha2V1cCBFbmFibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQUQyRDBTUgkJX19SRUcoMHg0MEY0MDAxNCkgIC8qIEFwcGxpY2F0aW9uIFN1YnN5c3RlbSBEMiB0byBEMCBzdGF0ZSBXYWtldXAgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIEFEMkQxRVIJCV9fUkVHKDB4NDBGNDAwMTgpICAvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gRDIgdG8gRDEgc3RhdGUgV2FrZXVwIEVuYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBBRDJEMVNSCQlfX1JFRygweDQwRjQwMDFDKSAgLyogQXBwbGljYXRpb24gU3Vic3lzdGVtIEQyIHRvIEQxIHN0YXRlIFdha2V1cCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQUQxRDBFUgkJX19SRUcoMHg0MEY0MDAyMCkgIC8qIEFwcGxpY2F0aW9uIFN1YnN5c3RlbSBEMSB0byBEMCBzdGF0ZSBXYWtldXAgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIEFEMUQwU1IJCV9fUkVHKDB4NDBGNDAwMjQpICAvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gRDEgdG8gRDAgc3RhdGUgV2FrZXVwIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBBU0RDTlQJCV9fUkVHKDB4NDBGNDAwMjgpICAvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gU1JBTSBEcm93c3kgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQUQzUgkJX19SRUcoMHg0MEY0MDAzMCkgIC8qIEFwcGxpY2F0aW9uIFN1YnN5c3RlbSBEMyBTdGF0ZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lIEFEMlIJCV9fUkVHKDB4NDBGNDAwMzQpICAvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gRDIgU3RhdGUgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBBRDFSCQlfX1JFRygweDQwRjQwMDM4KSAgLyogQXBwbGljYXRpb24gU3Vic3lzdGVtIEQxIFN0YXRlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKworI2RlZmluZSBQTUNSCQlfX1JFRygweDQwRjUwMDAwKSAgLyogUG93ZXIgTWFuYWdlciBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFBTUgkJX19SRUcoMHg0MEY1MDAwNCkgIC8qIFBvd2VyIE1hbmFnZXIgUzIgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFBTUFIJCV9fUkVHKDB4NDBGNTAwMDgpICAvKiBQb3dlciBNYW5hZ2VyIFNjcmF0Y2ggUGFkIFJlZ2lzdGVyICovCisjZGVmaW5lIFBDRlIJCV9fUkVHKDB4NDBGNTAwMEMpICAvKiBQb3dlciBNYW5hZ2VyIEdlbmVyYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBQV0VSCQlfX1JFRygweDQwRjUwMDEwKSAgLyogUG93ZXIgTWFuYWdlciBXYWtlLXVwIEVuYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBQV1NSCQlfX1JFRygweDQwRjUwMDE0KSAgLyogUG93ZXIgTWFuYWdlciBXYWtlLXVwIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBQRUNSCQlfX1JFRygweDQwRjUwMDE4KSAgLyogUG93ZXIgTWFuYWdlciBFWFRfV0FLRVVQWzE6MF0gQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBEQ0RDU1IJCV9fUkVHKDB4NDBGNTAwODApICAvKiBEQy1EQyBDb250cm9sbGVyIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBQVkNSCQlfX1JFRygweDQwRjUwMTAwKSAgLyogUG93ZXIgTWFuYWdlciBWb2x0YWdlIENoYW5nZSBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lICAgIFBDTUQoeCkgX19SRUcoMHg0MEY1MDExMCArIHgqNCkKKyNkZWZpbmUgICAgUENNRDAgICBfX1JFRygweDQwRjUwMTEwICsgMCAqIDQpCisjZGVmaW5lICAgIFBDTUQxICAgX19SRUcoMHg0MEY1MDExMCArIDEgKiA0KQorI2RlZmluZSAgICBQQ01EMiAgIF9fUkVHKDB4NDBGNTAxMTAgKyAyICogNCkKKyNkZWZpbmUgICAgUENNRDMgICBfX1JFRygweDQwRjUwMTEwICsgMyAqIDQpCisjZGVmaW5lICAgIFBDTUQ0ICAgX19SRUcoMHg0MEY1MDExMCArIDQgKiA0KQorI2RlZmluZSAgICBQQ01ENSAgIF9fUkVHKDB4NDBGNTAxMTAgKyA1ICogNCkKKyNkZWZpbmUgICAgUENNRDYgICBfX1JFRygweDQwRjUwMTEwICsgNiAqIDQpCisjZGVmaW5lICAgIFBDTUQ3ICAgX19SRUcoMHg0MEY1MDExMCArIDcgKiA0KQorI2RlZmluZSAgICBQQ01EOCAgIF9fUkVHKDB4NDBGNTAxMTAgKyA4ICogNCkKKyNkZWZpbmUgICAgUENNRDkgICBfX1JFRygweDQwRjUwMTEwICsgOSAqIDQpCisjZGVmaW5lICAgIFBDTUQxMCAgX19SRUcoMHg0MEY1MDExMCArIDEwICogNCkKKyNkZWZpbmUgICAgUENNRDExICBfX1JFRygweDQwRjUwMTEwICsgMTEgKiA0KQorI2RlZmluZSAgICBQQ01EMTIgIF9fUkVHKDB4NDBGNTAxMTAgKyAxMiAqIDQpCisjZGVmaW5lICAgIFBDTUQxMyAgX19SRUcoMHg0MEY1MDExMCArIDEzICogNCkKKyNkZWZpbmUgICAgUENNRDE0ICBfX1JFRygweDQwRjUwMTEwICsgMTQgKiA0KQorI2RlZmluZSAgICBQQ01EMTUgIF9fUkVHKDB4NDBGNTAxMTAgKyAxNSAqIDQpCisjZGVmaW5lICAgIFBDTUQxNiAgX19SRUcoMHg0MEY1MDExMCArIDE2ICogNCkKKyNkZWZpbmUgICAgUENNRDE3ICBfX1JFRygweDQwRjUwMTEwICsgMTcgKiA0KQorI2RlZmluZSAgICBQQ01EMTggIF9fUkVHKDB4NDBGNTAxMTAgKyAxOCAqIDQpCisjZGVmaW5lICAgIFBDTUQxOSAgX19SRUcoMHg0MEY1MDExMCArIDE5ICogNCkKKyNkZWZpbmUgICAgUENNRDIwICBfX1JFRygweDQwRjUwMTEwICsgMjAgKiA0KQorI2RlZmluZSAgICBQQ01EMjEgIF9fUkVHKDB4NDBGNTAxMTAgKyAyMSAqIDQpCisjZGVmaW5lICAgIFBDTUQyMiAgX19SRUcoMHg0MEY1MDExMCArIDIyICogNCkKKyNkZWZpbmUgICAgUENNRDIzICBfX1JFRygweDQwRjUwMTEwICsgMjMgKiA0KQorI2RlZmluZSAgICBQQ01EMjQgIF9fUkVHKDB4NDBGNTAxMTAgKyAyNCAqIDQpCisjZGVmaW5lICAgIFBDTUQyNSAgX19SRUcoMHg0MEY1MDExMCArIDI1ICogNCkKKyNkZWZpbmUgICAgUENNRDI2ICBfX1JFRygweDQwRjUwMTEwICsgMjYgKiA0KQorI2RlZmluZSAgICBQQ01EMjcgIF9fUkVHKDB4NDBGNTAxMTAgKyAyNyAqIDQpCisjZGVmaW5lICAgIFBDTUQyOCAgX19SRUcoMHg0MEY1MDExMCArIDI4ICogNCkKKyNkZWZpbmUgICAgUENNRDI5ICBfX1JFRygweDQwRjUwMTEwICsgMjkgKiA0KQorI2RlZmluZSAgICBQQ01EMzAgIF9fUkVHKDB4NDBGNTAxMTAgKyAzMCAqIDQpCisjZGVmaW5lICAgIFBDTUQzMSAgX19SRUcoMHg0MEY1MDExMCArIDMxICogNCkKKworI2RlZmluZSAgICBQQ01EX01CQyAgICAoMTw8MTIpCisjZGVmaW5lICAgIFBDTURfRENFICAgICgxPDwxMSkKKyNkZWZpbmUgICAgUENNRF9MQyAgICAgKDE8PDEwKQorI2RlZmluZSAgICBQQ01EX1NRQyAgICAoMzw8OCkgIC8qIG9ubHkgMDAgYW5kIDAxIGFyZSB2YWxpZCAqLworCisjZGVmaW5lIFBWQ1JfRlZDICAgICAgICAgICAgICAgICAgICgweDEgPDwgMjgpCisjZGVmaW5lIFBWQ1JfVkNTQSAgICAgICAgICAgICAgICAgICgweDE8PDE0KQorI2RlZmluZSBQVkNSX0NvbW1hbmREZWxheSAgICAgICAgICAoMHhmODApCisjZGVmaW5lIFBWQ1JfUmVhZFBvaW50ZXIgICAgICAgICAgICgweDAxZjAwMDAwKQorI2RlZmluZSBQVkNSX1NsYXZlQWRkcmVzcyAgICAgICAgICAoMHg3ZikKKworI2Vsc2UgLyogaWZkZWYgQ09ORklHX0NQVV9NT05BSEFOUyAqLworCiAjZGVmaW5lIFBNQ1IJCV9fUkVHKDB4NDBGMDAwMDApICAvKiBQb3dlciBNYW5hZ2VyIENvbnRyb2wgUmVnaXN0ZXIgKi8KICNkZWZpbmUgUFNTUgkJX19SRUcoMHg0MEYwMDAwNCkgIC8qIFBvd2VyIE1hbmFnZXIgU2xlZXAgU3RhdHVzIFJlZ2lzdGVyICovCiAjZGVmaW5lIFBTUFIJCV9fUkVHKDB4NDBGMDAwMDgpICAvKiBQb3dlciBNYW5hZ2VyIFNjcmF0Y2ggUGFkIFJlZ2lzdGVyICovCkBAIC0xMjI1LDYgKzE2NTAsOCBAQAogI2RlZmluZSBSQ1NSX1dEUgkoMSA8PCAxKQkvKiBXYXRjaGRvZyBSZXNldCAqLwogI2RlZmluZSBSQ1NSX0hXUgkoMSA8PCAwKQkvKiBIYXJkd2FyZSBSZXNldCAqLwogCisjZW5kaWYgLyogQ09ORklHX0NQVV9NT05BSEFOUyAqLworCiAvKgogICogU1NQIFNlcmlhbCBQb3J0IFJlZ2lzdGVycwogICovCkBAIC0xMjU5LDYgKzE2ODYsNjcgQEAKIC8qCiAgKiBDb3JlIENsb2NrCiAgKi8KKworI2lmIGRlZmluZWQoQ09ORklHX0NQVV9NT05BSEFOUykKKyNkZWZpbmUgQUNDUgkJX19SRUcoMHg0MTM0MDAwMCkgIC8qIEFwcGxpY2F0aW9uIFN1YnN5c3RlbSBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lIEFDU1IJCV9fUkVHKDB4NDEzNDAwMDQpICAvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gQ2xvY2sgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIEFJQ1NSCQlfX1JFRygweDQxMzQwMDA4KSAgLyogQXBwbGljYXRpb24gU3Vic3lzdGVtIEludGVycnVwdCBDb250cm9sL1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBDS0VOQQkJX19SRUcoMHg0MTM0MDAwQykgIC8qIEEgQ2xvY2sgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIENLRU5CCQlfX1JFRygweDQxMzQwMDEwKSAgLyogQiBDbG9jayBFbmFibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQUM5N19ESVYJX19SRUcoMHg0MTM0MDAxNCkgIC8qIEFDOTcgY2xvY2sgZGl2aXNvciB2YWx1ZSByZWdpc3RlciAqLworCisjZGVmaW5lIEFDQ1JfU01DX01BU0sJMHgwMzgwMDAwMAkvKiBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgRnJlcXVlbmN5IFNlbGVjdCAqLworI2RlZmluZSBBQ0NSX1NSQU1fTUFTSwkweDAwMGMwMDAwCS8qIFNSQU0gQ29udHJvbGxlciBGcmVxdWVuY3kgU2VsZWN0ICovCisjZGVmaW5lIEFDQ1JfRkNfTUFTSwkweDAwMDMwMDAwCS8qIEZyZXF1ZW5jeSBDaGFuZ2UgRnJlcXVlbmN5IFNlbGVjdCAqLworI2RlZmluZSBBQ0NSX0hTSU9fTUFTSwkweDAwMDBjMDAwCS8qIEhpZ2ggU3BlZWQgSU8gRnJlcXVlbmN5IFNlbGVjdCAqLworI2RlZmluZSBBQ0NSX0REUl9NQVNLCTB4MDAwMDMwMDAJLyogRERSIE1lbW9yeSBDb250cm9sbGVyIEZyZXF1ZW5jeSBTZWxlY3QgKi8KKyNkZWZpbmUgQUNDUl9YTl9NQVNLCTB4MDAwMDA3MDAJLyogUnVuIE1vZGUgRnJlcXVlbmN5IHRvIFR1cmJvIE1vZGUgRnJlcXVlbmN5IE11bHRpcGxpZXIgKi8KKyNkZWZpbmUgQUNDUl9YTF9NQVNLCTB4MDAwMDAwMWYJLyogQ3J5c3RhbCBGcmVxdWVuY3kgdG8gTWVtb3J5IEZyZXF1ZW5jeSBNdWx0aXBsaWVyICovCisjZGVmaW5lIEFDQ1JfWFBESVMJKDEgPDwgMzEpCisjZGVmaW5lIEFDQ1JfU1BESVMJKDEgPDwgMzApCisjZGVmaW5lIEFDQ1JfMTNNRU5EMQkoMSA8PCAyNykKKyNkZWZpbmUgQUNDUl9EMENTCSgxIDw8IDI2KQorI2RlZmluZSBBQ0NSXzEzTUVORDIJKDEgPDwgMjEpCisjZGVmaW5lIEFDQ1JfUENDRQkoMSA8PCAxMSkKKworI2RlZmluZSBDS0VOQV8zMF9NU0wwCSgxIDw8IDMwKSAJLyogTVNMMCBJbnRlcmZhY2UgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMjlfU1NQNAkoMSA8PCAyOSkgCS8qIFNTUDMgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMjhfU1NQMwkoMSA8PCAyOCkgCS8qIFNTUDIgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMjdfU1NQMgkoMSA8PCAyNykgIAkvKiBTU1AxIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzI2X1NTUDEJKDEgPDwgMjYpCS8qIFNTUDAgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMjVfVFNJCSgxIDw8IDI1KQkvKiBUU0kgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzI0X0FDOTcJKDEgPDwgMjQpCS8qIEFDOTcgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMjNfU1RVQVJUCSgxIDw8IDIzKQkvKiBTVFVBUlQgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMjJfRkZVQVJUCSgxIDw8IDIyKQkvKiBGRlVBUlQgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMjFfQlRVQVJUCSgxIDw8IDIxKQkvKiBCVFVBUlQgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMjBfVURDCSgxIDw8IDIwKQkvKiBVREMgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzE5X1RQTQkoMSA8PCAxOSkgCS8qIFRQTSBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOQV8xOF9VU0lNMQkoMSA8PCAxOCkgCS8qIFVTSU0xIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzE3X1VTSU0wCSgxIDw8IDE3KSAJLyogVVNJTTAgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMTVfQ0lSCSgxIDw8IDE1KSAJLyogQ29uc3VtZXIgSVIgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzE0X0tFWQkoMSA8PCAxNCkgCS8qIEtleXBhZCBDb250cm9sbGVyIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOQV8xM19NTUMxCSgxIDw8IDEzKSAJLyogTU1DMSBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMTJfTU1DMAkoMSA8PCAxMikgCS8qIE1NQzAgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzExX0ZMQVNICSgxIDw8IDExKSAJLyogQm9vdCBST00gQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzEwX1NSQU0JKDEgPDwgMTApIAkvKiBTUkFNIENvbnRyb2xsZXIgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzlfU01DCSgxIDw8IDkpIAkvKiBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgQ0tFTkFfOF9ETUMJKDEgPDwgOCkgCS8qIER5bmFtaWMgTWVtb3J5IENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgQ0tFTkFfN19HUkFQSElDUyAoMSA8PCA3KSAJLyogMkQgR3JhcGhpY3MgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzZfVVNCQ0xJCSgxIDw8IDYpCS8qIFVTQiBDbGllbnQgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfNF9OQU5ECSgxIDw8IDQpIAkvKiBOQU5EIEZsYXNoIENvbnRyb2xsZXIgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5BXzNfQ0FNRVJBCSgxIDw8IDMpIAkvKiBDYW1lcmEgSW50ZXJmYWNlIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOQV8yX1VTQkhPU1QJKDEgPDwgMikJLyogVVNCIEhvc3QgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkFfMV9MQ0QJKDEgPDwgMSkJLyogTENEIFVuaXQgQ2xvY2sgRW5hYmxlICovCisKKyNkZWZpbmUgQ0tFTkJfOF8xV0lSRQkoKDEgPDwgOCkgKyAzMikgLyogT25lIFdpcmUgSW50ZXJmYWNlIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5CXzdfR1BJTwkoKDEgPDwgNykgKyAzMikgCS8qIEdQSU8gQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5CXzZfSVJRCSgoMSA8PCA2KSArIDMyKSAJLyogSW50ZXJydXB0IENvbnRyb2xsZXIgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU5CXzRfSTJDCSgoMSA8PCA0KSArIDMyKQkvKiBJMkMgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkJfMV9QV00xCSgoMSA8PCAxKSArIDMyKQkvKiBQV00yICYgUFdNMyBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTkJfMF9QV00wCSgoMSA8PCAwKSArIDMyKQkvKiBQV00wICYgUFdNMSBDbG9jayBFbmFibGUgKi8KKworI2Vsc2UgLyogaWYgZGVmaW5lZCBDT05GSUdfQ1BVX01PTkFIQU5TICovCisKICNkZWZpbmUgQ0NDUgkJX19SRUcoMHg0MTMwMDAwMCkgIC8qIENvcmUgQ2xvY2sgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLwogI2RlZmluZSBDS0VOCQlfX1JFRygweDQxMzAwMDA0KSAgLyogQ2xvY2sgRW5hYmxlIFJlZ2lzdGVyICovCiAjZGVmaW5lIE9TQ0MJCV9fUkVHKDB4NDEzMDAwMDgpICAvKiBPc2NpbGxhdG9yIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KQEAgLTEzMTgsNiArMTgwNiw4IEBACiAjZGVmaW5lCSBDQ0NSX04zMCAgICAgICgweDYgPDwgNykKICNlbmRpZgogCisjZW5kaWYgLyogQ09ORklHX0NQVV9NT05BSEFOUyAqLworCiAvKgogICogTENECiAgKi8KQEAgLTE1MDIsNiArMTk5MiwxNjMgQEAKIC8qCiAgKiBNZW1vcnkgY29udHJvbGxlcgogICovCisKKyNpZmRlZiBDT05GSUdfQ1BVX01PTkFIQU5TCisvKiBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgUmVnaXN0ZXJzICovCisjZGVmaW5lIE1TQzAJCV9fUkVHXzIoMHg0QTAwMDAwOCkgIC8qIFN0YXRpYyBNZW1vcnkgQ29udHJvbCBSZWdpc3RlciAwICovCisjZGVmaW5lIE1TQzEJCV9fUkVHXzIoMHg0QTAwMDAwQykgIC8qIFN0YXRpYyBNZW1vcnkgQ29udHJvbCBSZWdpc3RlciAxICovCisjZGVmaW5lIE1FQ1IJCV9fUkVHXzIoMHg0QTAwMDAxNCkgIC8qIEV4cGFuc2lvbiBNZW1vcnkgKFBDTUNJQS9Db21wYWN0IEZsYXNoKSBCdXMgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBTWENORkcJCV9fUkVHXzIoMHg0QTAwMDAxQykgIC8qIFN5bmNocm9ub3VzIFN0YXRpYyBNZW1vcnkgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBNQ01FTTAJCV9fUkVHXzIoMHg0QTAwMDAyOCkgIC8qIENhcmQgaW50ZXJmYWNlIENvbW1vbiBNZW1vcnkgU3BhY2UgU29ja2V0IDAgVGltaW5nICovCisjZGVmaW5lIE1DQVRUMAkJX19SRUdfMigweDRBMDAwMDMwKSAgLyogQ2FyZCBpbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFNvY2tldCAwIFRpbWluZyBDb25maWd1cmF0aW9uICovCisjZGVmaW5lIE1DSU8wCQlfX1JFR18yKDB4NEEwMDAwMzgpICAvKiBDYXJkIGludGVyZmFjZSBJL08gU3BhY2UgU29ja2V0IDAgVGltaW5nIENvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgTUVNQ0xLQ0ZHCV9fUkVHXzIoMHg0QTAwMDA2OCkgIC8qIFNDTEsgc3BlZWQgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBDU0FEUkNGRzAJX19SRUdfMigweDRBMDAwMDgwKSAgLyogQWRkcmVzcyBDb25maWd1cmF0aW9uIGZvciBjaGlwIHNlbGVjdCAwICovCisjZGVmaW5lIENTQURSQ0ZHMQlfX1JFR18yKDB4NEEwMDAwODQpICAvKiBBZGRyZXNzIENvbmZpZ3VyYXRpb24gZm9yIGNoaXAgc2VsZWN0IDEgKi8KKyNkZWZpbmUgQ1NBRFJDRkcyCV9fUkVHXzIoMHg0QTAwMDA4OCkgIC8qIEFkZHJlc3MgQ29uZmlndXJhdGlvbiBmb3IgY2hpcCBzZWxlY3QgMiAqLworI2RlZmluZSBDU0FEUkNGRzMJX19SRUdfMigweDRBMDAwMDhDKSAgLyogQWRkcmVzcyBDb25maWd1cmF0aW9uIGZvciBjaGlwIHNlbGVjdCAzICovCisjZGVmaW5lIENTQURSQ0ZHX1AJX19SRUdfMigweDRBMDAwMDkwKSAgLyogQWRkcmVzcyBDb25maWd1cmF0aW9uIGZvciBwY21jaWEgY2FyZCBpbnRlcmZhY2UgKi8KKyNkZWZpbmUgQ1NNU0FEUkNGRwlfX1JFR18yKDB4NEEwMDAwQTApICAvKiBNYXN0ZXIgQWRkcmVzcyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lIENMS19SRVRfREVMCV9fUkVHXzIoMHg0QTAwMDBCMCkgIC8qIERlbGF5IGxpbmUgYW5kIG11eCBzZWxlY3RzIGZvciByZXR1cm4gZGF0YSBsYXRjaGluZyBmb3Igc3luYy4gZmxhc2ggKi8KKyNkZWZpbmUgQURWX1JFVF9ERUwJX19SRUdfMigweDRBMDAwMEI0KSAgLyogRGVsYXkgbGluZSBhbmQgbXV4IHNlbGVjdHMgZm9yIHJldHVybiBkYXRhIGxhdGNoaW5nIGZvciBzeW5jLiBmbGFzaCAqLworCisvKiBEeW5hbWljIE1lbW9yeSBDb250cm9sbGVyIFJlZ2lzdGVycyAqLworI2RlZmluZSBNRENORkcJCV9fUkVHXzIoMHg0ODEwMDAwMCkgIC8qIFNEUkFNIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMCAqLworI2RlZmluZSBNRFJFRlIJCV9fUkVHXzIoMHg0ODEwMDAwNCkgIC8qIFNEUkFNIFJlZnJlc2ggQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBGTFlDTkZHCQlfX1JFR18yKDB4NDgxMDAwMjApICAvKiBGbHktYnkgRE1BIERWQUxbMTowXSBwb2xhcml0aWVzICovCisjZGVmaW5lIE1ETVJTCQlfX1JFR18yKDB4NDgxMDAwNDApICAvKiBNUlMgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byBTRFJBTSAqLworI2RlZmluZQlERFJfU0NBTAlfX1JFR18yKDB4NDgxMDAwNTApICAvKiBTb2Z0d2FyZSBEZWxheSBMaW5lIENhbGlicmF0aW9uL0NvbmZpZ3VyYXRpb24gZm9yIGV4dGVybmFsIEREUiBtZW1vcnkuICovCisjZGVmaW5lCUREUl9IQ0FMCV9fUkVHXzIoMHg0ODEwMDA2MCkgIC8qIEhhcmR3YXJlIERlbGF5IExpbmUgQ2FsaWJyYXRpb24vQ29uZmlndXJhdGlvbiBmb3IgZXh0ZXJuYWwgRERSIG1lbW9yeS4gKi8KKyNkZWZpbmUJRERSX1dDQUwJX19SRUdfMigweDQ4MTAwMDY4KSAgLyogRERSIFdyaXRlIFN0cm9iZSBDYWxpYnJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZQlETUNJRVIJCV9fUkVHXzIoMHg0ODEwMDA3MCkgIC8qIER5bmFtaWMgTUMgSW50ZXJydXB0IEVuYWJsZSBSZWdpc3Rlci4gKi8KKyNkZWZpbmUJRE1DSVNSCQlfX1JFR18yKDB4NDgxMDAwNzgpICAvKiBEeW5hbWljIE1DIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIuICovCisjZGVmaW5lCUREUl9ETFMJCV9fUkVHXzIoMHg0ODEwMDA4MCkgIC8qIEREUiBEZWxheSBMaW5lIFZhbHVlIFN0YXR1cyByZWdpc3RlciBmb3IgZXh0ZXJuYWwgRERSIG1lbW9yeS4gKi8KKyNkZWZpbmUJRU1QSQkJX19SRUdfMigweDQ4MTAwMDkwKSAgLyogRU1QSSBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFJDT01QICAgICAgICAgICBfX1JFR18yKDB4NDgxMDAxMDApCisjZGVmaW5lIFBBRF9NQSAgICAgICAgICBfX1JFR18yKDB4NDgxMDAxMTApCisjZGVmaW5lIFBBRF9NRE1TQiAgICAgICBfX1JFR18yKDB4NDgxMDAxMTQpCisjZGVmaW5lIFBBRF9NRExTQiAgICAgICBfX1JFR18yKDB4NDgxMDAxMTgpCisjZGVmaW5lIFBBRF9ETUVNICAgICAgICBfX1JFR18yKDB4NDgxMDAxMWMpCisjZGVmaW5lIFBBRF9TRENMSyAgICAgICBfX1JFR18yKDB4NDgxMDAxMjApCisjZGVmaW5lIFBBRF9TRENTICAgICAgICBfX1JFR18yKDB4NDgxMDAxMjQpCisjZGVmaW5lIFBBRF9TTUVNICAgICAgICBfX1JFR18yKDB4NDgxMDAxMjgpCisjZGVmaW5lIFBBRF9TQ0xLICAgICAgICBfX1JFR18yKDB4NDgxMDAxMkMpCisjZGVmaW5lIFRBSQkJX19SRUdfMigweDQ4MTAwRjAwKSAvKiBUQUkgVGF2b3IgQWRkcmVzcyBJc29sYXRpb24gUmVnaXN0ZXIgKi8KKworLyogU29tZSBmcmVxdWVudGx5IHVzZWQgYml0cyAqLworI2RlZmluZSBNRENORkdfRE1BUAkweDgwMDAwMDAwCS8qIFNEUkFNIDFHQiBNZW1vcnkgTWFwIEVuYWJsZSAqLworI2RlZmluZSBNRENORkdfRE1DRU4JMHg0MDAwMDAwMAkvKiBFbmFibGUgRHluYW1pYyBNZW1vcnkgQ29udHJvbGxlciAqLworI2RlZmluZSBNRENORkdfSFdGUkVRCTB4MjAwMDAwMDAJLyogSGFyZHdhcmUgRnJlcXVlbmN5IENoYW5nZSBDYWxpYnJhdGlvbiAqLworI2RlZmluZSBNRENORkdfRFRZUEUJMHg0MDAJCS8qIFNEUkFNIFR5cGU6IDE9RERSIFNEUkFNICovCisKKyNkZWZpbmUgTURDTkZHX0RUQ18wCTB4MAkJLyogVGltaW5nIENhdGVnb3J5IG9mIFNEUkFNICovCisjZGVmaW5lIE1EQ05GR19EVENfMQkweDEwMAorI2RlZmluZSBNRENORkdfRFRDXzIJMHgyMDAKKyNkZWZpbmUgTURDTkZHX0RUQ18zCTB4MzAwCisKKyNkZWZpbmUgTURDTkZHX0RSQUNfMTIJMHgwCQkvKiBOdW1iZXIgb2YgUm93IEFjY2VzcyBCaXRzICovCisjZGVmaW5lIE1EQ05GR19EUkFDXzEzCTB4MjAKKyNkZWZpbmUgTURDTkZHX0RSQUNfMTQJMHg0MAorCisjZGVmaW5lIE1EQ05GR19EQ0FDXzkJMHgwCQkvKiBOdW1iZXIgb2YgQ29sdW1uIEFjZXNzIEJpdHMgKi8KKyNkZWZpbmUgTURDTkZHX0RDQUNfMTAJMHgwOAorI2RlZmluZSBNRENORkdfRENBQ18xMQkweDEwCisKKyNkZWZpbmUgTURDTkZHX0RCV18xNgkweDQJCS8qIFNEUkFNIERhdGEgQnVzIHdpZHRoIDE2Yml0ICovCisjZGVmaW5lIE1EQ05GR19EQ1NFMQkweDIJCS8qIFNEUkFNIENTIDEgRW5hYmxlICovCisjZGVmaW5lIE1EQ05GR19EQ1NFMAkweDEJCS8qIFNEUkFNIENTIDAgRW5hYmxlICovCisKKworLyogRGF0YSBGbGFzaCBDb250cm9sbGVyIFJlZ2lzdGVycyAqLworCisjZGVmaW5lIE5EQ1IJCV9fUkVHKDB4NDMxMDAwMDApICAvKiBEYXRhIEZsYXNoIENvbnRyb2wgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgTkRUUjBDUzAJX19SRUcoMHg0MzEwMDAwNCkgIC8qIERhdGEgQ29udHJvbGxlciBUaW1pbmcgUGFyYW1ldGVyIDAgUmVnaXN0ZXIgZm9yIE5EX25DUzAgKi8KKy8qICNkZWZpbmUgTkRUUjBDUzEJX19SRUcoMHg0MzEwMDAwOCkgIC9cKiBEYXRhIENvbnRyb2xsZXIgVGltaW5nIFBhcmFtZXRlciAwIFJlZ2lzdGVyIGZvciBORF9uQ1MxICpcLyAqLworI2RlZmluZSBORFRSMUNTMAlfX1JFRygweDQzMTAwMDBDKSAgLyogRGF0YSBDb250cm9sbGVyIFRpbWluZyBQYXJhbWV0ZXIgMSBSZWdpc3RlciBmb3IgTkRfbkNTMCAqLworLyogI2RlZmluZSBORFRSMUNTMQlfX1JFRygweDQzMTAwMDEwKSAgL1wqIERhdGEgQ29udHJvbGxlciBUaW1pbmcgUGFyYW1ldGVyIDEgUmVnaXN0ZXIgZm9yIE5EX25DUzEgKlwvICovCisjZGVmaW5lIE5EU1IJCV9fUkVHKDB4NDMxMDAwMTQpICAvKiBEYXRhIENvbnRyb2xsZXIgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIE5EUENSCQlfX1JFRygweDQzMTAwMDE4KSAgLyogRGF0YSBDb250cm9sbGVyIFBhZ2UgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTkRCRFIwCQlfX1JFRygweDQzMTAwMDFDKSAgLyogRGF0YSBDb250cm9sbGVyIEJhZCBCbG9jayBSZWdpc3RlciAwICovCisjZGVmaW5lIE5EQkRSMQkJX19SRUcoMHg0MzEwMDAyMCkgIC8qIERhdGEgQ29udHJvbGxlciBCYWQgQmxvY2sgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBORERCCQlfX1JFRygweDQzMTAwMDQwKSAgLyogRGF0YSBDb250cm9sbGVyIERhdGEgQnVmZmVyICovCisjZGVmaW5lIE5EQ0IwCQlfX1JFRygweDQzMTAwMDQ4KSAgLyogRGF0YSBDb250cm9sbGVyIENvbW1hbmQgQnVmZmVyMCAqLworI2RlZmluZSBORENCMQkJX19SRUcoMHg0MzEwMDA0QykgIC8qIERhdGEgQ29udHJvbGxlciBDb21tYW5kIEJ1ZmZlcjEgKi8KKyNkZWZpbmUgTkRDQjIJCV9fUkVHKDB4NDMxMDAwNTApICAvKiBEYXRhIENvbnRyb2xsZXIgQ29tbWFuZCBCdWZmZXIyICovCisKKyNkZWZpbmUgTkRDUl9TUEFSRV9FTgkoMHgxPDwzMSkKKyNkZWZpbmUgTkRDUl9FQ0NfRU4JKDB4MTw8MzApCisjZGVmaW5lIE5EQ1JfRE1BX0VOCSgweDE8PDI5KQorI2RlZmluZSBORENSX05EX1JVTgkoMHgxPDwyOCkKKyNkZWZpbmUgTkRDUl9EV0lEVEhfQwkoMHgxPDwyNykKKyNkZWZpbmUgTkRDUl9EV0lEVEhfTQkoMHgxPDwyNikKKyNkZWZpbmUgTkRDUl9QQUdFX1NaCSgweDM8PDI0KQorI2RlZmluZSBORENSX05DU1gJKDB4MTw8MjMpCisjZGVmaW5lIE5EQ1JfTkRfU1RPUAkoMHgxPDwyMikKKy8qIHJlc2VydmVkOgorICogI2RlZmluZSBORENSX05EX01PREUJKDB4Mzw8MjEpCisgKiAjZGVmaW5lIE5EQ1JfTkFORF9NT0RFICAgMHgwICovCisjZGVmaW5lIE5EQ1JfQ0xSX1BHX0NOVAkoMHgxPDwyMCkKKyNkZWZpbmUgTkRDUl9DTFJfRUNDCSgweDE8PDE5KQorI2RlZmluZSBORENSX1JEX0lEX0NOVAkoMHg3PDwxNikKKyNkZWZpbmUgTkRDUl9SQV9TVEFSVAkoMHgxPDwxNSkKKyNkZWZpbmUgTkRDUl9QR19QRVJfQkxLCSgweDE8PDE0KQorI2RlZmluZSBORENSX05EX0FSQl9FTgkoMHgxPDwxMikKKyNkZWZpbmUgTkRDUl9SRFlNCSgweDE8PDExKQorI2RlZmluZSBORENSX0NTMF9QQUdFRE0JKDB4MTw8MTApCisjZGVmaW5lIE5EQ1JfQ1MxX1BBR0VETQkoMHgxPDw5KQorI2RlZmluZSBORENSX0NTMF9DTURETQkoMHgxPDw4KQorI2RlZmluZSBORENSX0NTMV9DTURETQkoMHgxPDw3KQorI2RlZmluZSBORENSX0NTMF9CQkRNCSgweDE8PDYpCisjZGVmaW5lIE5EQ1JfQ1MxX0JCRE0JKDB4MTw8NSkKKyNkZWZpbmUgTkRDUl9EQkVSUk0JKDB4MTw8NCkKKyNkZWZpbmUgTkRDUl9TQkVSUk0JKDB4MTw8MykKKyNkZWZpbmUgTkRDUl9XUkRSRVFNCSgweDE8PDIpCisjZGVmaW5lIE5EQ1JfUkREUkVRTQkoMHgxPDwxKQorI2RlZmluZSBORENSX1dSQ01EUkVRTQkoMHgxKQorCisjZGVmaW5lIE5EU1JfUkRZCSgweDE8PDExKQorI2RlZmluZSBORFNSX0NTMF9QQUdFRAkoMHgxPDwxMCkKKyNkZWZpbmUgTkRTUl9DUzFfUEFHRUQJKDB4MTw8OSkKKyNkZWZpbmUgTkRTUl9DUzBfQ01ERAkoMHgxPDw4KQorI2RlZmluZSBORFNSX0NTMV9DTURECSgweDE8PDcpCisjZGVmaW5lIE5EU1JfQ1MwX0JCRAkoMHgxPDw2KQorI2RlZmluZSBORFNSX0NTMV9CQkQJKDB4MTw8NSkKKyNkZWZpbmUgTkRTUl9EQkVSUgkoMHgxPDw0KQorI2RlZmluZSBORFNSX1NCRVJSCSgweDE8PDMpCisjZGVmaW5lIE5EU1JfV1JEUkVRCSgweDE8PDIpCisjZGVmaW5lIE5EU1JfUkREUkVRCSgweDE8PDEpCisjZGVmaW5lIE5EU1JfV1JDTURSRVEJKDB4MSkKKworI2RlZmluZSBORENCMF9BVVRPX1JTCSgweDE8PDI1KQorI2RlZmluZSBORENCMF9DU0VMCSgweDE8PDI0KQorI2RlZmluZSBORENCMF9DTURfVFlQRQkoMHg3PDwyMSkKKyNkZWZpbmUgTkRDQjBfTkMJKDB4MTw8MjApCisjZGVmaW5lIE5EQ0IwX0RCQwkoMHgxPDwxOSkKKyNkZWZpbmUgTkRDQjBfQUREUl9DWUMJKDB4Nzw8MTYpCisjZGVmaW5lIE5EQ0IwX0NNRDIJKDB4ZmY8PDgpCisjZGVmaW5lIE5EQ0IwX0NNRDEJKDB4ZmYpCisjZGVmaW5lIE1DTUVNKHMpIE1DTUVNMAorI2RlZmluZSBNQ0FUVChzKSBNQ0FUVDAKKyNkZWZpbmUgTUNJTyhzKSBNQ0lPMAorI2RlZmluZSBNRUNSX0NJVAkoMSA8PCAxKS8qIENhcmQgSXMgVGhlcmU6IDAgLT4gbm8gY2FyZCwgMSAtPiBjYXJkIGluc2VydGVkICovCisKKy8qIE1heGltdW0gdmFsdWVzIGZvciBOQU5EIEludGVyZmFjZSBUaW1pbmcgUmVnaXN0ZXJzIGluIERGQyBjbG9jaworICogcGVyaW9kcyAqLworI2RlZmluZSBERkNfTUFYX3RDSAk3CisjZGVmaW5lIERGQ19NQVhfdENTCTcKKyNkZWZpbmUgREZDX01BWF90V0gJNworI2RlZmluZSBERkNfTUFYX3RXUAk3CisjZGVmaW5lIERGQ19NQVhfdFJICTcKKyNkZWZpbmUgREZDX01BWF90UlAJMTUKKyNkZWZpbmUgREZDX01BWF90Ugk2NTUzNQorI2RlZmluZSBERkNfTUFYX3RXSFIJMTUKKyNkZWZpbmUgREZDX01BWF90QVIJMTUKKworI2RlZmluZSBERkNfQ0xPQ0sJMTA0CQkvKiBERkMgQ2xvY2sgaXMgMTA0IE1IeiAqLworI2RlZmluZSBERkNfQ0xLX1BFUl9VUwlERkNfQ0xPQ0svMTAwMAkvKiBjbG9jayBwZXJpb2QgaW4gbnMgKi8KKworI2Vsc2UgLyogQ09ORklHX0NQVV9NT05BSEFOUyAqLworCiAjZGVmaW5lIE1FTUNfQkFTRQlfX1JFRygweDQ4MDAwMDAwKSAgLyogQmFzZSBvZiBNZW1vcnkgQ29udHJvbGxlciAqLwogI2RlZmluZSBNRENORkdfT0ZGU0VUCTB4MAogI2RlZmluZSBNRFJFRlJfT0ZGU0VUCTB4NApAQCAtMTU3Myw2ICsyMjIwLDggQEAKICNkZWZpbmUgQVJCX0NPUkVfUEFSSwkJKDE8PDI0KQkgICAvKiBCZSBwYXJrZWQgd2l0aCBjb3JlIHdoZW4gaWRsZSAqLwogI2RlZmluZSBBUkJfTE9DS19GTEFHCQkoMTw8MjMpCSAgIC8qIE9ubHkgTG9ja2luZyBtYXN0ZXJzIGdhaW4gYWNjZXNzIHRvIHRoZSBidXMgKi8KIAorI2VuZGlmIC8qIENPTkZJR19DUFVfTU9OQUhBTlMgKi8KKwogLyogSW50ZXJydXB0IENvbnRyb2xsZXIgKi8KIAogI2RlZmluZSBJQ0lQMgkJX19SRUcoMHg0MEQwMDA5QykgIC8qIEludGVycnVwdCBDb250cm9sbGVyIElSUSBQZW5kaW5nIFJlZ2lzdGVyIDIgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9pby5oIGIvaW5jbHVkZS9hc20tYXJtL2lvLmgKaW5kZXggYzJiNjlmYi4uNjQ4YTEwZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2lvLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2lvLmgKQEAgLTU4LDYgKzU4LDE0IEBACiAjZGVmaW5lIF9fcmF3X3JlYWR3KGEpCQkJX19hcmNoX2dldHcoYSkKICNkZWZpbmUgX19yYXdfcmVhZGwoYSkJCQlfX2FyY2hfZ2V0bChhKQogCisjZGVmaW5lIHdyaXRlYih2LGEpCQkJX19hcmNoX3B1dGIodixhKQorI2RlZmluZSB3cml0ZXcodixhKQkJCV9fYXJjaF9wdXR3KHYsYSkKKyNkZWZpbmUgd3JpdGVsKHYsYSkJCQlfX2FyY2hfcHV0bCh2LGEpCisKKyNkZWZpbmUgcmVhZGIoYSkJCQlfX2FyY2hfZ2V0YihhKQorI2RlZmluZSByZWFkdyhhKQkJCV9fYXJjaF9nZXR3KGEpCisjZGVmaW5lIHJlYWRsKGEpCQkJX19hcmNoX2dldGwoYSkKKwogLyoKICAqIFRoZSBjb21waWxlciBzZWVtcyB0byBiZSBpbmNhcGFibGUgb2Ygb3B0aW1pc2luZyBjb25zdGFudHMKICAqIHByb3Blcmx5LiAgU3BlbGwgaXQgb3V0IHRvIHRoZSBjb21waWxlciBpbiBzb21lIGNhc2VzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vYml0b3BzLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9iaXRvcHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWQyYzI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vYml0b3BzLmgKQEAgLTAsMCArMSwzODAgQEAKKy8qCisgKiBVLWJvb3QgLSBiaXRvcHMuaCBSb3V0aW5lcyBmb3IgYml0IG9wZXJhdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9CTEFDS0ZJTl9CSVRPUFNfSAorI2RlZmluZSBfQkxBQ0tGSU5fQklUT1BTX0gKKworLyoKKyAqIENvcHlyaWdodCAxOTkyLCBMaW51cyBUb3J2YWxkcy4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKworI2lmZGVmIF9fS0VSTkVMX18KKy8qCisgKiBGdW5jdGlvbiBwcm90b3R5cGVzIHRvIGtlZXAgZ2NjIC1XYWxsIGhhcHB5CisgKi8KKworLyoKKyAqIFRoZSBfXyBmdW5jdGlvbnMgYXJlIG5vdCBhdG9taWMKKyAqLworCisvKgorICogZmZ6ID0gRmluZCBGaXJzdCBaZXJvIGluIHdvcmQuIFVuZGVmaW5lZCBpZiBubyB6ZXJvIGV4aXN0cywKKyAqIHNvIGNvZGUgc2hvdWxkIGNoZWNrIGFnYWluc3QgfjBVTCBmaXJzdC4uCisgKi8KK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgZmZ6KHVuc2lnbmVkIGxvbmcgd29yZCkKK3sKKwl1bnNpZ25lZCBsb25nIHJlc3VsdCA9IDA7CisKKwl3aGlsZSAod29yZCAmIDEpIHsKKwkJcmVzdWx0Kys7CisJCXdvcmQgPj49IDE7CisJfQorCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCit7CisJaW50ICphID0gKGludCAqKSBhZGRyOworCWludCBtYXNrOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlhICs9IG5yID4+IDU7CisJbWFzayA9IDEgPDwgKG5yICYgMHgxZik7CisJc2F2ZV9hbmRfY2xpKGZsYWdzKTsKKwkqYSB8PSBtYXNrOworCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOworfQorCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCit7CisJaW50ICphID0gKGludCAqKSBhZGRyOworCWludCBtYXNrOworCisJYSArPSBuciA+PiA1OworCW1hc2sgPSAxIDw8IChuciAmIDB4MWYpOworCSphIHw9IG1hc2s7Cit9CisKKy8qCisgKiBjbGVhcl9iaXQoKSBkb2Vzbid0IHByb3ZpZGUgYW55IGJhcnJpZXIgZm9yIHRoZSBjb21waWxlci4KKyAqLworI2RlZmluZSBzbXBfbWJfX2JlZm9yZV9jbGVhcl9iaXQoKQliYXJyaWVyKCkKKyNkZWZpbmUgc21wX21iX19hZnRlcl9jbGVhcl9iaXQoKQliYXJyaWVyKCkKKworc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQoreworCWludCAqYSA9IChpbnQgKikgYWRkcjsKKwlpbnQgbWFzazsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJYSArPSBuciA+PiA1OworCW1hc2sgPSAxIDw8IChuciAmIDB4MWYpOworCXNhdmVfYW5kX2NsaShmbGFncyk7CisJKmEgJj0gfm1hc2s7CisJcmVzdG9yZV9mbGFncyhmbGFncyk7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCit7CisJaW50IG1hc2ssIGZsYWdzOworCXVuc2lnbmVkIGxvbmcgKkFERFIgPSAodW5zaWduZWQgbG9uZyAqKSBhZGRyOworCisJQUREUiArPSBuciA+PiA1OworCW1hc2sgPSAxIDw8IChuciAmIDMxKTsKKwlzYXZlX2FuZF9jbGkoZmxhZ3MpOworCSpBRERSIF49IG1hc2s7CisJcmVzdG9yZV9mbGFncyhmbGFncyk7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKK3sKKwlpbnQgbWFzazsKKwl1bnNpZ25lZCBsb25nICpBRERSID0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcjsKKworCUFERFIgKz0gbnIgPj4gNTsKKwltYXNrID0gMSA8PCAobnIgJiAzMSk7CisJKkFERFIgXj0gbWFzazsKK30KKworc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQoreworCWludCBtYXNrLCByZXR2YWw7CisJdm9sYXRpbGUgdW5zaWduZWQgaW50ICphID0gKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBhZGRyOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlhICs9IG5yID4+IDU7CisJbWFzayA9IDEgPDwgKG5yICYgMHgxZik7CisJc2F2ZV9hbmRfY2xpKGZsYWdzKTsKKwlyZXR2YWwgPSAobWFzayAmICphKSAhPSAwOworCSphIHw9IG1hc2s7CisJcmVzdG9yZV9mbGFncyhmbGFncyk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKK3sKKwlpbnQgbWFzaywgcmV0dmFsOworCXZvbGF0aWxlIHVuc2lnbmVkIGludCAqYSA9ICh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgYWRkcjsKKworCWEgKz0gbnIgPj4gNTsKKwltYXNrID0gMSA8PCAobnIgJiAweDFmKTsKKwlyZXR2YWwgPSAobWFzayAmICphKSAhPSAwOworCSphIHw9IG1hc2s7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCit7CisJaW50IG1hc2ssIHJldHZhbDsKKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKmEgPSAodm9sYXRpbGUgdW5zaWduZWQgaW50ICopIGFkZHI7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWEgKz0gbnIgPj4gNTsKKwltYXNrID0gMSA8PCAobnIgJiAweDFmKTsKKwlzYXZlX2FuZF9jbGkoZmxhZ3MpOworCXJldHZhbCA9IChtYXNrICYgKmEpICE9IDA7CisJKmEgJj0gfm1hc2s7CisJcmVzdG9yZV9mbGFncyhmbGFncyk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQoreworCWludCBtYXNrLCByZXR2YWw7CisJdm9sYXRpbGUgdW5zaWduZWQgaW50ICphID0gKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBhZGRyOworCisJYSArPSBuciA+PiA1OworCW1hc2sgPSAxIDw8IChuciAmIDB4MWYpOworCXJldHZhbCA9IChtYXNrICYgKmEpICE9IDA7CisJKmEgJj0gfm1hc2s7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQoreworCWludCBtYXNrLCByZXR2YWw7CisJdm9sYXRpbGUgdW5zaWduZWQgaW50ICphID0gKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBhZGRyOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlhICs9IG5yID4+IDU7CisJbWFzayA9IDEgPDwgKG5yICYgMHgxZik7CisJc2F2ZV9hbmRfY2xpKGZsYWdzKTsKKwlyZXR2YWwgPSAobWFzayAmICphKSAhPSAwOworCSphIF49IG1hc2s7CisJcmVzdG9yZV9mbGFncyhmbGFncyk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKK3sKKwlpbnQgbWFzaywgcmV0dmFsOworCXZvbGF0aWxlIHVuc2lnbmVkIGludCAqYSA9ICh2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgYWRkcjsKKworCWEgKz0gbnIgPj4gNTsKKwltYXNrID0gMSA8PCAobnIgJiAweDFmKTsKKwlyZXR2YWwgPSAobWFzayAmICphKSAhPSAwOworCSphIF49IG1hc2s7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFRoaXMgcm91dGluZSBkb2Vzbid0IG5lZWQgdG8gYmUgYXRvbWljLgorICovCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19jb25zdGFudF90ZXN0X2JpdChpbnQgbnIsCisJCQkJCSAgY29uc3Qgdm9sYXRpbGUgdm9pZCAqYWRkcikKK3sKKwlyZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmCisJCSgoKGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKK3sKKwlpbnQgKmEgPSAoaW50ICopIGFkZHI7CisJaW50IG1hc2s7CisKKwlhICs9IG5yID4+IDU7CisJbWFzayA9IDEgPDwgKG5yICYgMHgxZik7CisJcmV0dXJuICgobWFzayAmICphKSAhPSAwKTsKK30KKworI2RlZmluZQl0ZXN0X2JpdChucixhZGRyKSBcCisoX19idWlsdGluX2NvbnN0YW50X3AobnIpID8gXAorIF9fY29uc3RhbnRfdGVzdF9iaXQoKG5yKSwoYWRkcikpIDogXAorIF9fdGVzdF9iaXQoKG5yKSwoYWRkcikpKQorCisjZGVmaW5lCWZpbmRfZmlyc3RfemVyb19iaXQoYWRkciwgc2l6ZSkgXAorCWZpbmRfbmV4dF96ZXJvX2JpdCgoYWRkciksIChzaXplKSwgMCkKKworc3RhdGljIF9faW5saW5lX18gaW50IGZpbmRfbmV4dF96ZXJvX2JpdCh2b2lkICphZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkKK3sKKwl1bnNpZ25lZCBsb25nICpwID0gKCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKKwl1bnNpZ25lZCBsb25nIHJlc3VsdCA9IG9mZnNldCAmIH4zMVVMOworCXVuc2lnbmVkIGxvbmcgdG1wOworCisJaWYgKG9mZnNldCA+PSBzaXplKQorCQlyZXR1cm4gc2l6ZTsKKwlzaXplIC09IHJlc3VsdDsKKwlvZmZzZXQgJj0gMzFVTDsKKwlpZiAob2Zmc2V0KSB7CisJCXRtcCA9ICoocCsrKTsKKwkJdG1wIHw9IH4wVUwgPj4gKDMyIC0gb2Zmc2V0KTsKKwkJaWYgKHNpemUgPCAzMikKKwkJCWdvdG8gZm91bmRfZmlyc3Q7CisJCWlmICh+dG1wKQorCQkJZ290byBmb3VuZF9taWRkbGU7CisJCXNpemUgLT0gMzI7CisJCXJlc3VsdCArPSAzMjsKKwl9CisJd2hpbGUgKHNpemUgJiB+MzFVTCkgeworCQlpZiAofih0bXAgPSAqKHArKykpKQorCQkJZ290byBmb3VuZF9taWRkbGU7CisJCXJlc3VsdCArPSAzMjsKKwkJc2l6ZSAtPSAzMjsKKwl9CisJaWYgKCFzaXplKQorCQlyZXR1cm4gcmVzdWx0OworCXRtcCA9ICpwOworCisgICAgICBmb3VuZF9maXJzdDoKKwl0bXAgfD0gfjBVTCA+PiBzaXplOworICAgICAgZm91bmRfbWlkZGxlOgorCXJldHVybiByZXN1bHQgKyBmZnoodG1wKTsKK30KKworLyoKKyAqIGZmczogZmluZCBmaXJzdCBiaXQgc2V0LiBUaGlzIGlzIGRlZmluZWQgdGhlIHNhbWUgd2F5IGFzCisgKiB0aGUgbGliYyBhbmQgY29tcGlsZXIgYnVpbHRpbiBmZnMgcm91dGluZXMsIHRoZXJlZm9yZQorICogZGlmZmVycyBpbiBzcGlyaXQgZnJvbSB0aGUgYWJvdmUgZmZ6IChtYW4gZmZzKS4KKyAqLworCisjZGVmaW5lIGZmcyh4KQkJZ2VuZXJpY19mZnMoeCkKKworLyoKKyAqIGh3ZWlnaHROOiByZXR1cm5zIHRoZSBoYW1taW5nIHdlaWdodCAoaS5lLiB0aGUgbnVtYmVyCisgKiBvZiBiaXRzIHNldCkgb2YgYSBOLWJpdCB3b3JkCisgKi8KKworI2RlZmluZSBod2VpZ2h0MzIoeCkJZ2VuZXJpY19od2VpZ2h0MzIoeCkKKyNkZWZpbmUgaHdlaWdodDE2KHgpCWdlbmVyaWNfaHdlaWdodDE2KHgpCisjZGVmaW5lIGh3ZWlnaHQ4KHgpCWdlbmVyaWNfaHdlaWdodDgoeCkKKworc3RhdGljIF9faW5saW5lX18gaW50IGV4dDJfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCit7CisJaW50IG1hc2ssIHJldHZhbDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKkFERFIgPSAodW5zaWduZWQgY2hhciAqKSBhZGRyOworCisJQUREUiArPSBuciA+PiAzOworCW1hc2sgPSAxIDw8IChuciAmIDB4MDcpOworCXNhdmVfYW5kX2NsaShmbGFncyk7CisJcmV0dmFsID0gKG1hc2sgJiAqQUREUikgIT0gMDsKKwkqQUREUiB8PSBtYXNrOworCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIGludCBleHQyX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCit7CisJaW50IG1hc2ssIHJldHZhbDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKkFERFIgPSAodW5zaWduZWQgY2hhciAqKSBhZGRyOworCisJQUREUiArPSBuciA+PiAzOworCW1hc2sgPSAxIDw8IChuciAmIDB4MDcpOworCXNhdmVfYW5kX2NsaShmbGFncyk7CisJcmV0dmFsID0gKG1hc2sgJiAqQUREUikgIT0gMDsKKwkqQUREUiAmPSB+bWFzazsKKwlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgZXh0Ml90ZXN0X2JpdChpbnQgbnIsIGNvbnN0IHZvbGF0aWxlIHZvaWQgKmFkZHIpCit7CisJaW50IG1hc2s7CisJY29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgY2hhciAqQUREUiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIGFkZHI7CisKKwlBRERSICs9IG5yID4+IDM7CisJbWFzayA9IDEgPDwgKG5yICYgMHgwNyk7CisJcmV0dXJuICgobWFzayAmICpBRERSKSAhPSAwKTsKK30KKworI2RlZmluZSBleHQyX2ZpbmRfZmlyc3RfemVyb19iaXQoYWRkciwgc2l6ZSkgXAorCWV4dDJfZmluZF9uZXh0X3plcm9fYml0KChhZGRyKSwgKHNpemUpLCAwKQorCitzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGV4dDJfZmluZF9uZXh0X3plcm9fYml0KHZvaWQgKmFkZHIsCisJCQkJCQkJdW5zaWduZWQgbG9uZyBzaXplLAorCQkJCQkJCXVuc2lnbmVkIGxvbmcKKwkJCQkJCQlvZmZzZXQpCit7CisJdW5zaWduZWQgbG9uZyAqcCA9ICgodW5zaWduZWQgbG9uZyAqKSBhZGRyKSArIChvZmZzZXQgPj4gNSk7CisJdW5zaWduZWQgbG9uZyByZXN1bHQgPSBvZmZzZXQgJiB+MzFVTDsKKwl1bnNpZ25lZCBsb25nIHRtcDsKKworCWlmIChvZmZzZXQgPj0gc2l6ZSkKKwkJcmV0dXJuIHNpemU7CisJc2l6ZSAtPSByZXN1bHQ7CisJb2Zmc2V0ICY9IDMxVUw7CisJaWYgKG9mZnNldCkgeworCQl0bXAgPSAqKHArKyk7CisJCXRtcCB8PSB+MFVMID4+ICgzMiAtIG9mZnNldCk7CisJCWlmIChzaXplIDwgMzIpCisJCQlnb3RvIGZvdW5kX2ZpcnN0OworCQlpZiAofnRtcCkKKwkJCWdvdG8gZm91bmRfbWlkZGxlOworCQlzaXplIC09IDMyOworCQlyZXN1bHQgKz0gMzI7CisJfQorCXdoaWxlIChzaXplICYgfjMxVUwpIHsKKwkJaWYgKH4odG1wID0gKihwKyspKSkKKwkJCWdvdG8gZm91bmRfbWlkZGxlOworCQlyZXN1bHQgKz0gMzI7CisJCXNpemUgLT0gMzI7CisJfQorCWlmICghc2l6ZSkKKwkJcmV0dXJuIHJlc3VsdDsKKwl0bXAgPSAqcDsKKworICAgICAgZm91bmRfZmlyc3Q6CisJdG1wIHw9IH4wVUwgPj4gc2l6ZTsKKyAgICAgIGZvdW5kX21pZGRsZToKKwlyZXR1cm4gcmVzdWx0ICsgZmZ6KHRtcCk7Cit9CisKKy8qIEJpdG1hcCBmdW5jdGlvbnMgZm9yIHRoZSBtaW5peCBmaWxlc3lzdGVtLiAqLworI2RlZmluZSBtaW5peF90ZXN0X2FuZF9zZXRfYml0KG5yLGFkZHIpCQl0ZXN0X2FuZF9zZXRfYml0KG5yLGFkZHIpCisjZGVmaW5lIG1pbml4X3NldF9iaXQobnIsYWRkcikJCQlzZXRfYml0KG5yLGFkZHIpCisjZGVmaW5lIG1pbml4X3Rlc3RfYW5kX2NsZWFyX2JpdChucixhZGRyKQl0ZXN0X2FuZF9jbGVhcl9iaXQobnIsYWRkcikKKyNkZWZpbmUgbWluaXhfdGVzdF9iaXQobnIsYWRkcikJCQl0ZXN0X2JpdChucixhZGRyKQorI2RlZmluZSBtaW5peF9maW5kX2ZpcnN0X3plcm9fYml0KGFkZHIsc2l6ZSkJZmluZF9maXJzdF96ZXJvX2JpdChhZGRyLHNpemUpCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2JsYWNrZmluLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9ibGFja2Zpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZGJmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9ibGFja2Zpbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBVLWJvb3QgLSBibGFja2Zpbi5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fSF8KKyNkZWZpbmUgX0JMQUNLRklOX0hfCisKKyNpbmNsdWRlIDxhc20vY3B1L2RlZkJGNTMzLmg+CisjaW5jbHVkZSA8YXNtL2NwdS9iZjUzM19zZXJpYWwuaD4KKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKyNpZm5kZWYgQVNTRU1CTFkKKworI2lmZGVmIFNIQVJFRF9SRVNPVVJDRVMKKyAjaW5jbHVkZSA8YXNtL3NoYXJlZF9yZXNvdXJjZXMuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGFzbS9jcHUvY2RlZkJGNTN4Lmg+CisKKyNlbmRpZgorI2VuZGlmCisKKyNpbmNsdWRlIDxhc20vY3B1L2RlZkJGNTMzLmg+CisjaW5jbHVkZSA8YXNtL2NwdS9kZWZCRjUzM19leHRuLmg+CisjaW5jbHVkZSA8YXNtL2NwdS9iZjUzM19zZXJpYWwuaD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9ibGFja2Zpbl9kZWZzLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9ibGFja2Zpbl9kZWZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE5MDIxNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2JsYWNrZmluX2RlZnMuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogVS1ib290IC0gYmxhY2tmaW5fZGVmcy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0JMQUNLRklOX0RFRlNfSF9fCisjZGVmaW5lIF9fQkxBQ0tGSU5fREVGU19IX18KKworI2RlZmluZSBUU19NQUdJQ0tFWQkJMHg1YTVhNWE1YQorI2RlZmluZSBUQVNLX1NUQVRFCQkwCisjZGVmaW5lIFRBU0tfRkxBR1MJCTQKKyNkZWZpbmUgVEFTS19QVFJBQ0UJCTI0CisjZGVmaW5lIFRBU0tfQkxPQ0tFRAkJNjM2CisjZGVmaW5lIFRBU0tfQ09VTlRFUgkJMzIKKyNkZWZpbmUgVEFTS19TSUdQRU5ESU5HCQk4CisjZGVmaW5lIFRBU0tfTkVFRFJFU0NIRUQJMjAKKyNkZWZpbmUgVEFTS19USFJFQUQJCTYwMAorI2RlZmluZSBUQVNLX01NCQkJNDQKKyNkZWZpbmUgVEFTS19BQ1RJVkVfTU0JCTgwCisjZGVmaW5lIFRIUkVBRF9LU1AJCTAKKyNkZWZpbmUgVEhSRUFEX1VTUAkJNAorI2RlZmluZSBUSFJFQURfU1IJCTgKKyNkZWZpbmUgVEhSRUFEX0VTUDAJCTEyCisjZGVmaW5lIFRIUkVBRF9QQwkJMTYKKyNkZWZpbmUgUFRfT1JJR19SMAkJMjA4CisjZGVmaW5lIFBUX1IwCQkJMjA0CisjZGVmaW5lIFBUX1IxCQkJMjAwCisjZGVmaW5lIFBUX1IyCQkJMTk2CisjZGVmaW5lIFBUX1IzCQkJMTkyCisjZGVmaW5lIFBUX1I0CQkJMTg4CisjZGVmaW5lIFBUX1I1CQkJMTg0CisjZGVmaW5lIFBUX1I2CQkJMTgwCisjZGVmaW5lIFBUX1I3CQkJMTc2CisjZGVmaW5lIFBUX1AwCQkJMTcyCisjZGVmaW5lIFBUX1AxCQkJMTY4CisjZGVmaW5lIFBUX1AyCQkJMTY0CisjZGVmaW5lIFBUX1AzCQkJMTYwCisjZGVmaW5lIFBUX1A0CQkJMTU2CisjZGVmaW5lIFBUX1A1CQkJMTUyCisjZGVmaW5lIFBUX0EwdwkJCTcyCisjZGVmaW5lIFBUX0ExdwkJCTY0CisjZGVmaW5lIFBUX0EweAkJCTc2CisjZGVmaW5lIFBUX0ExeAkJCTY4CisjZGVmaW5lIFBUX1JFVFMJCQkyOAorI2RlZmluZSBQVF9SRVNFUlZFRAkJMzIKKyNkZWZpbmUgUFRfQVNUQVQJCTM2CisjZGVmaW5lIFBUX1NFUVNUQVQJCTgKKyNkZWZpbmUgUFRfUEMJCQkyNAorI2RlZmluZSBQVF9JUEVORAkJMAorI2RlZmluZSBQVF9VU1AJCQkxNDQKKyNkZWZpbmUgUFRfRlAJCQkxNDgKKyNkZWZpbmUgUFRfU1lTQ0ZHCQk0CisjZGVmaW5lIElSUV9IQU5ETEVSCQkwCisjZGVmaW5lIElSUV9ERVZJRAkJOAorI2RlZmluZSBJUlFfTkVYVAkJMTYKKyNkZWZpbmUgU1RBVF9JUlEJCTUxNDgKKyNkZWZpbmUgU0lHU0VHVgkJCTExCisjZGVmaW5lIFNFR1ZfTUFQRVJSCQkxOTY2MDkKKyNkZWZpbmUgU0lHVFJBUAkJCTUKKyNkZWZpbmUgUFRfUFRSQUNFRAkJMQorI2RlZmluZSBQVF9UUkFDRVNZUwkJMgorI2RlZmluZSBQVF9EVFJBQ0UJCTQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9ieXRlb3JkZXIuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2J5dGVvcmRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNGRmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9ieXRlb3JkZXIuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogVS1ib290IC0gIGJ5dGVvcmRlci5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fQllURU9SREVSX0gKKyNkZWZpbmUgX0JMQUNLRklOX0JZVEVPUkRFUl9ICisKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgfHwgZGVmaW5lZChfX0tFUk5FTF9fKQorIyAgZGVmaW5lIF9fQllURU9SREVSX0hBU19VNjRfXworIyAgZGVmaW5lIF9fU1dBQl82NF9USFJVXzMyX18KKyNlbmRpZgorCisjaW5jbHVkZSA8bGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcGxiLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcGxiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcxNWY2NAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwbGIuaApAQCAtMCwwICsxLDQ4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogY3BsYi5oCisgKgorICogKGMpIENvcHlyaWdodCAyMDAyLTIwMDMgQW5hbG9nIERldmljZXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogRGVmaW5lcyBuZWNlc3NhcnkgZm9yIGNwbGIgaW5pdGlhbGlzYXRpb24gcm91dGluZXMuICovCisKKyNpZm5kZWYgX0NQTEJfSAorI2RlZmluZSBfQ1BMQl9ICisKKyNkZWZpbmUgQ1BMQl9FTkFCTEVfSUNBQ0hFX1AJMAorI2RlZmluZSBDUExCX0VOQUJMRV9EQ0FDSEVfUAkxCisjZGVmaW5lIENQTEJfRU5BQkxFX0RDQUNIRTJfUAkyCisjZGVmaW5lIENQTEJfRU5BQkxFX0NQTEJTX1AJMwkvKiBEZXByZWNhdGVkISovCisjZGVmaW5lIENQTEJfRU5BQkxFX0lDUExCU19QCTQKKyNkZWZpbmUgQ1BMQl9FTkFCTEVfRENQTEJTX1AJNQorCisjZGVmaW5lIENQTEJfRU5BQkxFX0lDQUNIRQkoMTw8Q1BMQl9FTkFCTEVfSUNBQ0hFX1ApCisjZGVmaW5lIENQTEJfRU5BQkxFX0RDQUNIRQkoMTw8Q1BMQl9FTkFCTEVfRENBQ0hFX1ApCisjZGVmaW5lIENQTEJfRU5BQkxFX0RDQUNIRTIJKDE8PENQTEJfRU5BQkxFX0RDQUNIRTJfUCkKKyNkZWZpbmUgQ1BMQl9FTkFCTEVfQ1BMQlMJKDE8PENQTEJfRU5BQkxFX0NQTEJTX1ApCisjZGVmaW5lIENQTEJfRU5BQkxFX0lDUExCUwkoMTw8Q1BMQl9FTkFCTEVfSUNQTEJTX1ApCisjZGVmaW5lIENQTEJfRU5BQkxFX0RDUExCUwkoMTw8Q1BMQl9FTkFCTEVfRENQTEJTX1ApCisjZGVmaW5lIENQTEJfRU5BQkxFX0FOWV9DUExCUwlDUExCX0VOQUJMRV9DUExCUyB8IFwKKwkJCQlDUExCX0VOQUJMRV9JQ1BMQlMgfCBcCisJCQkJQ1BMQl9FTkFCTEVfRENQTEJTCisKKyNkZWZpbmUgQ1BMQl9SRUxPQURFRAkJMHgwMDAwCisjZGVmaW5lIENQTEJfTk9fVU5MT0NLRUQJMHgwMDAxCisjZGVmaW5lIENQTEJfTk9fQUREUl9NQVRDSAkweDAwMDIKKyNkZWZpbmUgQ1BMQl9QUk9UX1ZJT0wJCTB4MDAwMworCisjZGVmaW5lIENQTEJfREVGX0NBQ0hFCQlDUExCX0wxX0NIQkwgfCBDUExCX1dUCisjZGVmaW5lIENQTEJfQ0FDSEVfRU5BQkxFRAlDUExCX0wxX0NIQkwgfCBDUExCX0RJUlRZCisKKyNkZWZpbmUgQ1BMQl9BTExfQUNDRVNTCUNQTEJfU1VQVl9XUiB8IENQTEJfVVNFUl9SRCB8IENQTEJfVVNFUl9XUgorCisjZGVmaW5lIENQTEJfSV9QQUdFX01HTVQJQ1BMQl9MT0NLIHwgQ1BMQl9WQUxJRAorI2RlZmluZSBDUExCX0RfUEFHRV9NR01UCUNQTEJfTE9DSyB8IENQTEJfQUxMX0FDQ0VTUyB8IENQTEJfVkFMSUQKKyNkZWZpbmUgQ1BMQl9ETk9DQUNIRQkJQ1BMQl9BTExfQUNDRVNTIHwgQ1BMQl9WQUxJRAorI2RlZmluZSBDUExCX0RET0NBQ0hFCQlDUExCX0ROT0NBQ0hFIHwgQ1BMQl9ERUZfQ0FDSEUKKyNkZWZpbmUgQ1BMQl9JTk9DQUNIRSAgIAlDUExCX1VTRVJfUkQgfCBDUExCX1ZBTElECisjZGVmaW5lIENQTEJfSURPQ0FDSEUgICAJQ1BMQl9JTk9DQUNIRSB8IENQTEJfTDFfQ0hCTAorCisjZW5kaWYgLyogX0NQTEJfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3BsYnRhYi5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3BsYnRhYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiN2Q5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcGxidGFiLmgKQEAgLTAsMCArMSw1NzIgQEAKKy8qVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKgorICogQmxhY2tmaW4gQkY1MzMvMi42IHN1cHBvcnQgOiBMRyBTb2Z0IEluZGlhCisgKiBVcGRhdGVkIDogQXNodXRvc2ggU2luZ2ggLyBKYWhpZCBLaGFuIDogUnJhcCBTb2Z0d2FyZSBQdnQgTHRkCisgKiBVcGRhdGVkIDogMS4gU0RSQU1fS0VSTkVMLCBTRFJBTV9ES0VORUwgYXJlIGFkZGVkIGFzIGluaXRpYWwgY3BsYidzCisgKgkgICAgICAgIHNob3VsZG4ndCBiZSB2aWN0aW1pemVkLiBjcGxibWdyLlMgc2VhcmNoIGxvZ2ljIGlzIGNvcnJlY3RlZAorICoJICAgICAgICB0byBmaW5kb3V0IHRoZSBhcHByb3ByaWF0ZSB2aWN0aW0uCisgKgkgICAgIDIuIFNEUkFNX0lHRU5FUklDIGluIGRwZHRfdGFibGUgaXMgcmVwbGFjZWQgd2l0aCBTRFJBTV9ER0VORVJJQworICoJICAgICA6IExHIFNvZnQgSW5kaWEKKyAqLworI2luY2x1ZGUgPGNvbmZpZy5oPgorCisjaWZuZGVmIF9fQVJDSF9CRklOTk9NTVVfQ1BMQlRBQl9ICisjZGVmaW5lIF9fQVJDSF9CRklOTk9NTVVfQ1BMQlRBQl9ICisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgCQkJSUNQTEIgVEFCTEUKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisuZGF0YQorCisvKiBUaGlzIHRhYmxlIGlzIGNvbmZpZ3VyYWJsZSAqLworCisuYWxpZ24gNDsKKworLyogRGF0YSBBdHRpYnV0ZXMqLworCisjZGVmaW5lIFNEUkFNX0lHRU5FUklDCQkoUEFHRV9TSVpFXzRNQiB8IENQTEJfTDFfQ0hCTCB8IENQTEJfVVNFUl9SRCB8IENQTEJfVkFMSUQpCisjZGVmaW5lIFNEUkFNX0lLRVJORUwJCShQQUdFX1NJWkVfNE1CIHwgQ1BMQl9MMV9DSEJMIHwgQ1BMQl9VU0VSX1JEIHwgQ1BMQl9WQUxJRCB8IENQTEJfTE9DSykKKyNkZWZpbmUgTDFfSU1FTU9SWSAgICAgICAgICAgIAkoUEFHRV9TSVpFXzFNQiB8IENQTEJfTDFfQ0hCTCB8IENQTEJfVVNFUl9SRCB8IENQTEJfVkFMSUQgfCBDUExCX0xPQ0spCisjZGVmaW5lIFNEUkFNX0lOT05fQ0hCTAkJKFBBR0VfU0laRV80TUIgfCBDUExCX1VTRVJfUkQgfCBDUExCX1ZBTElEKQorCisvKlVzZSB0aGUgbWVudWNvbmZpZyBjYWNoZSBwb2xpY3kgaGVyZSAtIENPTkZJR19CTEtGSU5fV1QvQ09ORklHX0JMS0ZJTl9XQiovCisKKyNkZWZpbmUgQU5PTUFMWV8wNTAwMDE1OAkJMHgyMDAKKyNpZmRlZiBDT05GSUdfQkxLRklOX1dCIAkvKldyaXRlIEJhY2sgUG9saWN5ICovCisJI2RlZmluZSBTRFJBTV9ER0VORVJJQyAgCShQQUdFX1NJWkVfNE1CIHwgQ1BMQl9MMV9DSEJMIHwgQ1BMQl9ESVJUWSB8IENQTEJfU1VQVl9XUiB8IENQTEJfVVNFUl9XUiB8IENQTEJfVVNFUl9SRCB8IENQTEJfVkFMSUQgfCBBTk9NQUxZXzA1MDAwMTU4KQorCSNkZWZpbmUgU0RSQU1fRE5PTl9DSEJMICAgICAgICAgKFBBR0VfU0laRV80TUIgfCBDUExCX0RJUlRZIHwgQ1BMQl9TVVBWX1dSIHwgQ1BMQl9VU0VSX1JEIHwgQ1BMQl9VU0VSX1dSIHwgQ1BMQl9WQUxJRCB8IEFOT01BTFlfMDUwMDAxNTgpCisJI2RlZmluZSBTRFJBTV9ES0VSTkVMIAkJKFBBR0VfU0laRV80TUIgfCBDUExCX0wxX0NIQkwgfCBDUExCX1VTRVJfUkQgfCBDUExCX1VTRVJfV1IgfCBDUExCX0RJUlRZIHwgQ1BMQl9TVVBWX1dSIHwgQ1BMQl9WQUxJRCB8IENQTEJfTE9DSyB8IEFOT01BTFlfMDUwMDAxNTgpCisJI2RlZmluZSBMMV9ETUVNT1JZCQkoUEFHRV9TSVpFXzRLQiB8IENQTEJfTDFfQ0hCTCB8IENQTEJfRElSVFkgfCBDUExCX1NVUFZfV1IgfCBDUExCX1VTRVJfV1IgfCBDUExCX1VTRVJfUkQgfCBDUExCX1ZBTElEIHwgQU5PTUFMWV8wNTAwMDE1OCkKKwkjZGVmaW5lIFNEUkFNX0VCSVUJCShQQUdFX1NJWkVfMU1CIHwgQ1BMQl9ESVJUWSB8IENQTEJfVVNFUl9SRCB8IENQTEJfVVNFUl9XUiB8IENQTEJfU1VQVl9XUiB8IENQTEJfVkFMSUQgfCBBTk9NQUxZXzA1MDAwMTU4KQorCisjZWxzZSAgLypXcml0ZSBUaHJvdWdoKi8KKwkjZGVmaW5lIFNEUkFNX0RHRU5FUklDIAkJKFBBR0VfU0laRV80TUIgfCBDUExCX0wxX0NIQkwgfCBDUExCX1dUIHwgQ1BMQl9MMV9BT1cgfCBDUExCX1NVUFZfV1IgfCBDUExCX1VTRVJfUkQgfCBDUExCX1VTRVJfV1IgfCBDUExCX1ZBTElEIHwgQU5PTUFMWV8wNTAwMDE1OCkKKwkjZGVmaW5lIFNEUkFNX0ROT05fQ0hCTCAgICAgICAgIChQQUdFX1NJWkVfNE1CIHwgQ1BMQl9XVCB8IENQTEJfTDFfQU9XIHwgQ1BMQl9TVVBWX1dSIHwgQ1BMQl9VU0VSX1dSIHwgQ1BMQl9VU0VSX1JEIHwgQ1BMQl9WQUxJRCB8IEFOT01BTFlfMDUwMDAxNTgpCisJI2RlZmluZSBTRFJBTV9ES0VSTkVMIAkJKFBBR0VfU0laRV80TUIgfCBDUExCX0wxX0NIQkwgfCBDUExCX1dUIHwgQ1BMQl9MMV9BT1cgfCBDUExCX1VTRVJfUkQgfCBDUExCX1NVUFZfV1IgfCBDUExCX1VTRVJfV1IgfCBDUExCX1ZBTElEIHwgQ1BMQl9MT0NLIHwgQU5PTUFMWV8wNTAwMDE1OCkKKwkjZGVmaW5lIEwxX0RNRU1PUlkJCShQQUdFX1NJWkVfNEtCIHwgQ1BMQl9MMV9DSEJMIHwgQ1BMQl9MMV9BT1cgfCBDUExCX1dUIHwgQ1BMQl9TVVBWX1dSIHwgQ1BMQl9VU0VSX1dSIHwgQ1BMQl9WQUxJRCB8IEFOT01BTFlfMDUwMDAxNTgpCisJI2RlZmluZSBTRFJBTV9FQklVCQkoUEFHRV9TSVpFXzFNQiB8IENQTEJfV1QgfCBDUExCX0wxX0FPVyB8IENQTEJfVVNFUl9SRCB8IENQTEJfVVNFUl9XUiB8IENQTEJfU1VQVl9XUiB8IENQTEJfVkFMSUQgfCBBTk9NQUxZXzA1MDAwMTU4KQorI2VuZGlmCisKKy5nbG9iYWwgaWNwbGJfdGFibGUKK2ljcGxiX3RhYmxlOgorLmJ5dGU0IDB4RkZBMDAwMDA7CisuYnl0ZTQgKEwxX0lNRU1PUlkpOworLmJ5dGU0IDB4MDAwMDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lLRVJORUwpOwkJCS8qU0RSQU1fUGFnZTEqLworLmJ5dGU0IDB4MDA0MDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lLRVJORUwpOwkJLypTRFJBTV9QYWdlMSovCisuYnl0ZTQgMHgwN0MwMDAwMDsKKy5ieXRlNCAoU0RSQU1fSUtFUk5FTCk7CQkvKlNEUkFNX1BhZ2UxNCovCisuYnl0ZTQgMHgwMDgwMDAwMDsKKy5ieXRlNCAoU0RSQU1fSUdFTkVSSUMpOwkJLypTRFJBTV9QYWdlMiovCisuYnl0ZTQgMHgwMEMwMDAwMDsKKy5ieXRlNCAoU0RSQU1fSUdFTkVSSUMpOwkJLypTRFJBTV9QYWdlMiovCisuYnl0ZTQgMHgwMTAwMDAwMDsKKy5ieXRlNCAoU0RSQU1fSUdFTkVSSUMpOwkJLypTRFJBTV9QYWdlNCovCisuYnl0ZTQgMHgwMTQwMDAwMDsKKy5ieXRlNCAoU0RSQU1fSUdFTkVSSUMpOwkJLypTRFJBTV9QYWdlNSovCisuYnl0ZTQgMHgwMTgwMDAwMDsKKy5ieXRlNCAoU0RSQU1fSUdFTkVSSUMpOwkJLypTRFJBTV9QYWdlNiovCisuYnl0ZTQgMHgwMUMwMDAwMDsKKy5ieXRlNCAoU0RSQU1fSUdFTkVSSUMpOwkJLypTRFJBTV9QYWdlNyovCisjaWZuZGVmIENPTkZJR19FWktJVAkJCS8qU1RBTVAgTWVtb3J5IHJlZ2lvbnMqLworLmJ5dGU0IDB4MDIwMDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsJCS8qU0RSQU1fUGFnZTgqLworLmJ5dGU0IDB4MDI0MDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsJCS8qU0RSQU1fUGFnZTkqLworLmJ5dGU0IDB4MDI4MDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsJCS8qU0RSQU1fUGFnZTEwKi8KKy5ieXRlNCAweDAyQzAwMDAwOworLmJ5dGU0IChTRFJBTV9JR0VORVJJQyk7CQkvKlNEUkFNX1BhZ2UxMSovCisuYnl0ZTQgMHgwMzAwMDAwMDsKKy5ieXRlNCAoU0RSQU1fSUdFTkVSSUMpOwkJLypTRFJBTV9QYWdlMTIqLworLmJ5dGU0IDB4MDM0MDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsJCS8qU0RSQU1fUGFnZTEzKi8KKyNlbmRpZgorLmJ5dGU0IDB4ZmZmZmZmZmY7CQkJLyogZW5kIG9mIHNlY3Rpb24gLSB0ZXJtaW5hdGlvbiovCisKKy5hbGlnbiA0OworLmdsb2JhbCBpcGR0X3RhYmxlCitpcGR0X3RhYmxlOgorI2lmZGVmIENPTkZJR19DUExCX0lORk8KKy5ieXRlNCAweDAwMDAwMDAwOworLmJ5dGU0IChTRFJBTV9JS0VSTkVMKTsgICAgICAgICAgICAgICAvKlNEUkFNX1BhZ2UwKi8KKy5ieXRlNCAweDAwNDAwMDAwOworLmJ5dGU0IChTRFJBTV9JS0VSTkVMKTsgICAgICAgICAgICAgICAvKlNEUkFNX1BhZ2UxKi8KKyNlbmRpZgorLmJ5dGU0IDB4MDA4MDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgICAgICAgIC8qU0RSQU1fUGFnZTIqLworLmJ5dGU0IDB4MDBDMDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgICAgICAgIC8qU0RSQU1fUGFnZTMqLworLmJ5dGU0IDB4MDEwMDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgICAgICAgIC8qU0RSQU1fUGFnZTQqLworLmJ5dGU0IDB4MDE0MDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgICAgICAgIC8qU0RSQU1fUGFnZTUqLworLmJ5dGU0IDB4MDE4MDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgICAgICAgIC8qU0RSQU1fUGFnZTYqLworLmJ5dGU0IDB4MDFDMDAwMDA7CisuYnl0ZTQgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgICAgICAgIC8qU0RSQU1fUGFnZTcqLworI2lmbmRlZiBDT05GSUdfRVpLSVQgICAgICAgICAgICAgICAgICAvKlNUQU1QIE1lbW9yeSByZWdpb25zKi8KKy5ieXRlNCAgMHgwMjAwMDAwMDsKKy5ieXRlNCAgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgICAgICAgIC8qU0RSQU1fUGFnZTgqLworLmJ5dGU0ICAweDAyNDAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOyAgICAgICAgICAgICAgLypTRFJBTV9QYWdlOSovCisuYnl0ZTQgIDB4MDI4MDAwMDA7CisuYnl0ZTQgIChTRFJBTV9JR0VORVJJQyk7ICAgICAgICAgICAgICAvKlNEUkFNX1BhZ2UxMCovCisuYnl0ZTQgIDB4MDJDMDAwMDA7CisuYnl0ZTQgIChTRFJBTV9JR0VORVJJQyk7ICAgICAgICAgICAgICAvKlNEUkFNX1BhZ2UxMSovCisuYnl0ZTQgIDB4MDMwMDAwMDA7CisuYnl0ZTQgIChTRFJBTV9JR0VORVJJQyk7ICAgICAgICAgICAgICAvKlNEUkFNX1BhZ2UxMiovCisuYnl0ZTQgIDB4MDM0MDAwMDA7CisuYnl0ZTQgIChTRFJBTV9JR0VORVJJQyk7ICAgICAgICAgICAgICAvKlNEUkFNX1BhZ2UxMyovCisuYnl0ZTQgIDB4MDM4MDAwMDA7CisuYnl0ZTQgIChTRFJBTV9JR0VORVJJQyk7ICAgICAgICAgICAgICAvKlNEUkFNX1BhZ2UxNCovCisuYnl0ZTQgIDB4MDNDMDAwMDA7CisuYnl0ZTQgIChTRFJBTV9JR0VORVJJQyk7ICAgICAgICAgICAgICAvKlNEUkFNX1BhZ2UxNSovCisjZW5kaWYKKy5ieXRlNCAgMHgyMDIwMDAwMDsKKy5ieXRlNCAgKFNEUkFNX0VCSVUpOyAgICAgIC8qIEFzeW5jIE1lbW9yeSBCYW5rIDIgKFNlY25kKSovCisuYnl0ZTQgIDB4MjAxMDAwMDA7CisuYnl0ZTQgIChTRFJBTV9FQklVKTsgICAgICAvKiBBc3luYyBNZW1vcnkgQmFuayAxIChQcmltIEIpKi8KKy5ieXRlNCAgMHgyMDAwMDAwMDsKKy5ieXRlNCAgKFNEUkFNX0VCSVUpOyAgICAgIC8qIEFzeW5jIE1lbW9yeSBCYW5rIDAgKFByaW0gQSkqLworLmJ5dGU0ICAweDIwMzAwMDAwOyAgICAgICAgICAgICAvKkZpeCBmb3IgTmV0d29yayovCisuYnl0ZTQgIChTRFJBTV9FQklVKTsgICAgLypBc3luYyBNZW1vcnkgYmFuayAzKi8KKworI2lmZGVmIENPTkZJR19TVEFNUAorLmJ5dGU0ICAgICAgICAweDA0MDAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOworLmJ5dGU0ICAgICAgICAweDA0NDAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOworLmJ5dGU0ICAgICAgICAweDA0ODAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOworLmJ5dGU0ICAgICAgICAweDA0QzAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOworLmJ5dGU0ICAgICAgICAweDA1MDAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOworLmJ5dGU0ICAgICAgICAweDA1NDAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOworLmJ5dGU0ICAgICAgICAweDA1ODAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOworLmJ5dGU0ICAgICAgICAweDA1QzAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOworLmJ5dGU0ICAgICAgICAweDA2MDAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOyAgICAgICAvKlNEUkFNX1BhZ2UyNSovCisuYnl0ZTQgICAgICAgIDB4MDY0MDAwMDA7CisuYnl0ZTQgIChTRFJBTV9JR0VORVJJQyk7ICAgICAgIC8qU0RSQU1fUGFnZTI2Ki8KKy5ieXRlNCAgICAgICAgMHgwNjgwMDAwMDsKKy5ieXRlNCAgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgLypTRFJBTV9QYWdlMjcqLworLmJ5dGU0ICAgICAgICAweDA2QzAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOyAgICAgICAvKlNEUkFNX1BhZ2UyOCovCisuYnl0ZTQgICAgICAgIDB4MDcwMDAwMDA7CisuYnl0ZTQgIChTRFJBTV9JR0VORVJJQyk7ICAgICAgIC8qU0RSQU1fUGFnZTI5Ki8KKy5ieXRlNCAgICAgICAgMHgwNzQwMDAwMDsKKy5ieXRlNCAgKFNEUkFNX0lHRU5FUklDKTsgICAgICAgLypTRFJBTV9QYWdlMzAqLworLmJ5dGU0ICAgICAgICAweDA3ODAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUdFTkVSSUMpOyAgICAgICAvKlNEUkFNX1BhZ2UzMSovCisjaWZkZWYgQ09ORklHX0NQTEJfSU5GTworLmJ5dGU0ICAgICAgICAweDA3QzAwMDAwOworLmJ5dGU0ICAoU0RSQU1fSUtFUk5FTCk7ICAgICAgICAvKlNEUkFNX1BhZ2UzMiovCisjZW5kaWYKKyNlbmRpZgorLmJ5dGU0IDB4ZmZmZmZmZmY7ICAgICAgICAgICAgICAgICAgICAvKiBlbmQgb2Ygc2VjdGlvbiAtIHRlcm1pbmF0aW9uKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoJCQlEQ1BMQiBUQUJMRQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisuZ2xvYmFsIGRjcGxiX3RhYmxlCitkY3BsYl90YWJsZToKKy5ieXRlNAkweDAwMDAwMDAwOworLmJ5dGU0CShTRFJBTV9ES0VSTkVMKTsJLypTRFJBTV9QYWdlMSovCisuYnl0ZTQJMHgwMDQwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREtFUk5FTCk7CS8qU0RSQU1fUGFnZTEqLworLmJ5dGU0CTB4MDdDMDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RLRVJORUwpOwkvKlNEUkFNX1BhZ2UxNSovCisuYnl0ZTQJMHgwMDgwMDAwMDsKKy5ieXRlNCAJKFNEUkFNX0RHRU5FUklDKTsJLypTRFJBTV9QYWdlMiovCisuYnl0ZTQgCTB4MDBDMDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RHRU5FUklDKTsJLypTRFJBTV9QYWdlMyovCisuYnl0ZTQJMHgwMTAwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2U0Ki8KKy5ieXRlNAkweDAxNDAwMDAwOworLmJ5dGU0CShTRFJBTV9ER0VORVJJQyk7CS8qU0RSQU1fUGFnZTUqLworLmJ5dGU0CTB4MDE4MDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RHRU5FUklDKTsJLypTRFJBTV9QYWdlNiovCisuYnl0ZTQJMHgwMUMwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2U3Ki8KKyNpZm5kZWYgQ09ORklHX0VaS0lUCisuYnl0ZTQJMHgwMjAwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2U4Ki8KKy5ieXRlNAkweDAyNDAwMDAwOworLmJ5dGU0CShTRFJBTV9ER0VORVJJQyk7CS8qU0RSQU1fUGFnZTkqLworLmJ5dGU0CTB4MDI4MDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RHRU5FUklDKTsJLypTRFJBTV9QYWdlMTAqLworLmJ5dGU0CTB4MDJDMDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RHRU5FUklDKTsJLypTRFJBTV9QYWdlMTEqLworLmJ5dGU0CTB4MDMwMDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RHRU5FUklDKTsJLypTRFJBTV9QYWdlMTIqLworLmJ5dGU0CTB4MDM0MDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RHRU5FUklDKTsJLypTRFJBTV9QYWdlMTMqLworLmJ5dGU0CTB4MDM4MDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RHRU5FUklDKTsJLypTRFJBTV9QYWdlMTQqLworI2VuZGlmCisuYnl0ZTQJMHhmZmZmZmZmZjsJCS8qZW5kIG9mIHNlY3Rpb24gLSB0ZXJtaW5hdGlvbiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgkJUEFHRSBERVNDUklQVE9SIFRBQkxFCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRpbGwgaGVyZSB3ZSBhcmUgZGlzY3Vzc2luZyBhYm91dCB0aGUgc3RhdGljIG1lbW9yeSBtYW5hZ2VtZW50IG1vZGVsLgorICogSG93ZXZlciwgdGhlIG9wZXJhdGluZyBlbnZvcm9ubWVudHMgY29tbW9ubHkgZGVmaW5lIG1vcmUgQ1BMQgorICogZGVzY3JpcHRvcnMgdG8gY292ZXIgdGhlIGVudGlyZSBhZGRyZXNzYWJsZSBtZW1vcnkgdGhhbiB3aWxsIGZpdCBpbnRvCisgKiB0aGUgYXZhaWxhYmxlIG9uLWNoaXAgMTYgQ1BMQiBNTVJzLiBXaGVuIHRoaXMgaGFwcGVucywgdGhlIGJlbG93IHRhYmxlCisgKiB3aWxsIGJlIHVzZWQgd2hpY2ggd2lsbCBob2xkIGFsbCB0aGUgcG90ZW50aWFsbHkgcmVxdWlyZWQgQ1BMQiBkZXNjcmlwdG9ycworICoKKyAqIFRoaXMgaXMgaG93IFBhZ2UgZGVzY3JpcHRvciBUYWJsZSBpcyBpbXBsZW1lbnRlZCBpbiB1Q2xpbnV4L0JsYWNrZmluLgorICovCisuZ2xvYmFsIGRwZHRfdGFibGUKK2RwZHRfdGFibGU6CisjaWZkZWYgQ09ORklHX0NQTEJfSU5GTworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAoU0RSQU1fREtFUk5FTCk7ICAgICAgICAvKlNEUkFNX1BhZ2UwKi8KKy5ieXRlNCAgICAgICAgMHgwMDQwMDAwMDsKKy5ieXRlNCAgICAgICAgKFNEUkFNX0RLRVJORUwpOyAgICAgICAgLypTRFJBTV9QYWdlMSovCisjZW5kaWYKKy5ieXRlNCAgICAgICAgMHgwMDgwMDAwMDsKKy5ieXRlNCAgICAgICAgKFNEUkFNX0RHRU5FUklDKTsgICAgICAgLypTRFJBTV9QYWdlMiovCisuYnl0ZTQgICAgICAgIDB4MDBDMDAwMDA7CisuYnl0ZTQgICAgICAgIChTRFJBTV9ER0VORVJJQyk7ICAgICAgIC8qU0RSQU1fUGFnZTMqLworLmJ5dGU0ICAgICAgICAweDAxMDAwMDAwOworLmJ5dGU0ICAgICAgICAoU0RSQU1fREdFTkVSSUMpOyAgICAgICAvKlNEUkFNX1BhZ2U0Ki8KKy5ieXRlNCAgICAgICAgMHgwMTQwMDAwMDsKKy5ieXRlNCAgICAgICAgKFNEUkFNX0RHRU5FUklDKTsgICAgICAgLypTRFJBTV9QYWdlNSovCisuYnl0ZTQgICAgICAgIDB4MDE4MDAwMDA7CisuYnl0ZTQgICAgICAgIChTRFJBTV9ER0VORVJJQyk7ICAgICAgIC8qU0RSQU1fUGFnZTYqLworLmJ5dGU0ICAgICAgICAweDAxQzAwMDAwOworLmJ5dGU0ICAgICAgICAoU0RSQU1fREdFTkVSSUMpOyAgICAgICAvKlNEUkFNX1BhZ2U3Ki8KKworI2lmbmRlZiBDT05GSUdfRVpLSVQKKy5ieXRlNCAgICAgICAgMHgwMjAwMDAwMDsKKy5ieXRlNCAgICAgICAgKFNEUkFNX0RHRU5FUklDKTsgICAgICAgLypTRFJBTV9QYWdlOCovCisuYnl0ZTQgICAgICAgIDB4MDI0MDAwMDA7CisuYnl0ZTQgICAgICAgIChTRFJBTV9ER0VORVJJQyk7ICAgICAgIC8qU0RSQU1fUGFnZTkqLworLmJ5dGU0ICAgICAgICAweDAyODAwMDAwOworLmJ5dGU0ICAgICAgICAoU0RSQU1fREdFTkVSSUMpOyAgICAgICAvKlNEUkFNX1BhZ2UxMCovCisuYnl0ZTQgICAgICAgIDB4MDJDMDAwMDA7CisuYnl0ZTQgICAgICAgIChTRFJBTV9ER0VORVJJQyk7ICAgICAgIC8qU0RSQU1fUGFnZTExKi8KKy5ieXRlNCAgICAgICAgMHgwMzAwMDAwMDsKKy5ieXRlNCAgICAgICAgKFNEUkFNX0RHRU5FUklDKTsgICAgICAgLypTRFJBTV9QYWdlMTIqLworLmJ5dGU0ICAgICAgICAweDAzNDAwMDAwOworLmJ5dGU0ICAgICAgICAoU0RSQU1fREdFTkVSSUMpOyAgICAgICAvKlNEUkFNX1BhZ2UxMyovCisuYnl0ZTQgICAgICAgIDB4MDM4MDAwMDA7CisuYnl0ZTQgICAgICAgIChTRFJBTV9ER0VORVJJQyk7ICAgICAgIC8qU0RSQU1fUGFnZTE0Ki8KKy5ieXRlNCAgICAgICAgMHgwM0MwMDAwMDsKKy5ieXRlNCAgICAgICAgKFNEUkFNX0RHRU5FUklDKTsgICAgICAgLypTRFJBTV9QYWdlMTUqLworI2VuZGlmCisuYnl0ZTQJMHgyMDIwMDAwMDsKKy5ieXRlNAkoU0RSQU1fRUJJVSk7CS8qIEFzeW5jIE1lbW9yeSBCYW5rIDIgKFNlY25kKSovCisuYnl0ZTQJMHgyMDEwMDAwMDsKKy5ieXRlNAkoU0RSQU1fRUJJVSk7CS8qIEFzeW5jIE1lbW9yeSBCYW5rIDEgKFByaW0gQikqLworLmJ5dGU0CTB4MjAwMDAwMDA7CisuYnl0ZTQJKFNEUkFNX0VCSVUpOwkvKiBBc3luYyBNZW1vcnkgQmFuayAwIChQcmltIEEpKi8KKy5ieXRlNAkweDIwMzAwMDAwOwkJLypGaXggZm9yIE5ldHdvcmsqLworLmJ5dGU0ICAoU0RSQU1fRUJJVSk7CS8qQXN5bmMgTWVtb3J5IGJhbmsgMyovCisKKyNpZmRlZiBDT05GSUdfU1RBTVAKKy5ieXRlNAkweDA0MDAwMDAwOworLmJ5dGU0ICAoU0RSQU1fREdFTkVSSUMpOworLmJ5dGU0CTB4MDQ0MDAwMDA7CisuYnl0ZTQgIChTRFJBTV9ER0VORVJJQyk7CisuYnl0ZTQJMHgwNDgwMDAwMDsKKy5ieXRlNCAgKFNEUkFNX0RHRU5FUklDKTsKKy5ieXRlNAkweDA0QzAwMDAwOworLmJ5dGU0ICAoU0RSQU1fREdFTkVSSUMpOworLmJ5dGU0CTB4MDUwMDAwMDA7CisuYnl0ZTQgIChTRFJBTV9ER0VORVJJQyk7CisuYnl0ZTQJMHgwNTQwMDAwMDsKKy5ieXRlNCAgKFNEUkFNX0RHRU5FUklDKTsKKy5ieXRlNAkweDA1ODAwMDAwOworLmJ5dGU0ICAoU0RSQU1fREdFTkVSSUMpOworLmJ5dGU0CTB4MDVDMDAwMDA7CisuYnl0ZTQgIChTRFJBTV9ER0VORVJJQyk7CisuYnl0ZTQJMHgwNjAwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2UyNSovCisuYnl0ZTQJMHgwNjQwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2UyNiovCisuYnl0ZTQJMHgwNjgwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2UyNyovCisuYnl0ZTQJMHgwNkMwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2UyOCovCisuYnl0ZTQJMHgwNzAwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2UyOSovCisuYnl0ZTQJMHgwNzQwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2UzMCovCisuYnl0ZTQJMHgwNzgwMDAwMDsKKy5ieXRlNAkoU0RSQU1fREdFTkVSSUMpOwkvKlNEUkFNX1BhZ2UzMSovCisjaWZkZWYgQ09ORklHX0NQTEJfSU5GTworLmJ5dGU0CTB4MDdDMDAwMDA7CisuYnl0ZTQJKFNEUkFNX0RLRVJORUwpOwkvKlNEUkFNX1BhZ2UzMiovCisjZW5kaWYKKyNlbmRpZgorCisuYnl0ZTQgIDB4RkY5MDAwMDA7CisuYnl0ZTQgIChMMV9ETUVNT1JZKTsKKy5ieXRlNCAgMHhGRjkwMTAwMDsKKy5ieXRlNCAgKEwxX0RNRU1PUlkpOworLmJ5dGU0ICAweEZGOTAyMDAwOworLmJ5dGU0ICAoTDFfRE1FTU9SWSk7CisuYnl0ZTQgIDB4RkY5MDMwMDA7CisuYnl0ZTQgIChMMV9ETUVNT1JZKTsKKy5ieXRlNCAgMHhGRjkwNDAwMDsKKy5ieXRlNCAgKEwxX0RNRU1PUlkpOworLmJ5dGU0ICAweEZGOTA1MDAwOworLmJ5dGU0ICAoTDFfRE1FTU9SWSk7CisuYnl0ZTQgIDB4RkY5MDYwMDA7CisuYnl0ZTQgIChMMV9ETUVNT1JZKTsKKy5ieXRlNCAgMHhGRjkwNzAwMDsKKy5ieXRlNCAgKEwxX0RNRU1PUlkpOworLmJ5dGU0ICAweEZGODAwMDAwOworLmJ5dGU0ICAoTDFfRE1FTU9SWSk7CisuYnl0ZTQgIDB4RkY4MDEwMDA7CisuYnl0ZTQgIChMMV9ETUVNT1JZKTsKKy5ieXRlNCAgMHhGRjgwMjAwMDsKKy5ieXRlNCAgKEwxX0RNRU1PUlkpOworLmJ5dGU0ICAweEZGODAzMDAwOworLmJ5dGU0ICAoTDFfRE1FTU9SWSk7CisKKy5ieXRlNAkweGZmZmZmZmZmOwkJLyplbmQgb2Ygc2VjdGlvbiAtIHRlcm1pbmF0aW9uKi8KKworI2lmZGVmIENPTkZJR19DUExCX0lORk8KKy5nbG9iYWwgaXBkdF9zd2FwY291bnRfdGFibGU7CS8qIHN3YXBpbiBjb3VudCBmaXJzdCwgdGhlbiBzd2Fwb3V0IGNvdW50Ki8KK2lwZHRfc3dhcGNvdW50X3RhYmxlOgorLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiAxMCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiAyMCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiAzMCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiA0MCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiA1MCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiA2MCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiA3MCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiA4MCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiA5MCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiAxMDAgKi8KKworLmdsb2JhbCBkcGR0X3N3YXBjb3VudF90YWJsZTsJLyogc3dhcGluIGNvdW50IGZpcnN0LCB0aGVuIHN3YXBvdXQgY291bnQqLworZHBkdF9zd2FwY291bnRfdGFibGU6CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDEwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDIwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDMwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDQwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDUwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDYwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDcwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDgwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDgwICovCisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CisuYnl0ZTQgICAgICAgIDB4MDAwMDAwMDA7CS8qIDEwMCAqLworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOworLmJ5dGU0ICAgICAgICAweDAwMDAwMDAwOwkvKiAxMTAgKi8KKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsKKy5ieXRlNCAgICAgICAgMHgwMDAwMDAwMDsJLyogMTIwICovCisKKyNlbmRpZgorCisjZW5kaWYJLypfX0FSQ0hfQkZJTk5PTU1VX0NQTEJUQUJfSCovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvYmY1MzNfaXJxLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvYmY1MzNfaXJxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM1MjMwZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9iZjUzM19pcnEuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIFUtYm9vdCBiZjUzM19pcnEuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbgorICogbGludXgvYXJjaC8kKEFSQ0gpL3BsYXRmb3JtLyQoUExBVEZPUk0pL2lycS5jCisgKiBDaGFuZ2VkIGJ5IEh1VGFvIEFwcjE4LCAyMDAzCisgKgorICogQ29weXJpZ2h0IHdhcyBtaXNzaW5nIHdoZW4gSSBnb3QgdGhlIGNvZGUgc28gdG9vayBmcm9tIE1JUFMgYXJjaCAuLi5NYVRlZC0tLQorICogQ29weXJpZ2h0IChDKSAxOTk0IGJ5IFdhbGRvcmYgR01CSCwgd3JpdHRlbiBieSBSYWxmIEJhZWNobGUKKyAqIENvcHlyaWdodCAoQykgMTk5NSwgOTYsIDk3LCA5OCwgOTksIDIwMDAsIDIwMDEgYnkgUmFsZiBCYWVjaGxlCisgKgorICogQWRhcHRlZCBmb3IgQmxhY2tGaW4gKEFESSkgYnkgVGVkIE1hIDxtYXRlZEBzeW1wYXRpY28uY2E+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgQXJjdHVydXMgTmV0d29ya3MgSW5jLiAod3d3LmFyY3R1cnVzbmV0d29ya3MuY29tKQorICogQ29weXJpZ2h0IChjKSAyMDAyIExpbmVvLCBJbmMuIDxtYXR0d0BsaW5lby5jb20+CisgKgorICogQWRhcHRlZCBmb3IgQmxhY2tGaW4gQkY1MzMgYnkgQmFzIFZlcm1ldWxlbiA8YmFzQGJ1eXdheXMubmw+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDMgQnV5V2F5cyBCLlYuICh3d3cuYnV5d2F5cy5ubCkKKworICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkY1MzNfSVJRX0hfCisjZGVmaW5lIF9CRjUzM19JUlFfSF8KKworLyoKKyAqIEludGVycnVwdCBzb3VyY2UgZGVmaW5pdGlvbnMKKyAqIEV2ZW50IFNvdXJjZQkJCUNvcmUgRXZlbnQgTmFtZQkJTnVtYmVyCisgKiAJCQkJRU1VCQkJMAorICogUmVzZXQJCQlSU1QJCQkxCisgKiBOTUkJCQkJTk1JCQkJMgorICogRXhjZXB0aW9uCQkJRVZYCQkJMworICogUmVzZXJ2ZWQJCQktLQkJCTQKKyAqIEhhcmR3YXJlIEVycm9yCQlJVkhXCQkJNQorICogQ29yZSBUaW1lcgkJCUlWVE1SCQkJNgorICogUExMIFdha2V1cCBJbnRlcnJ1cHQJCUlWRzcJCQk3CisgKiBETUEgRXJyb3IgKGdlbmVyaWMpCQlJVkc3CQkJOAorICogUFBJIEVycm9yIEludGVycnVwdAkJSVZHNwkJCTkKKyAqIFNQT1JUMCBFcnJvciBJbnRlcnJ1cHQJSVZHNwkJCTEwCisgKiBTUE9SVDEgRXJyb3IgSW50ZXJydXB0CUlWRzcJCQkxMQorICogU1BJIEVycm9yIEludGVycnVwdAkJSVZHNwkJCTEyCisgKiBVQVJUIEVycm9yIEludGVycnVwdAkJSVZHNwkJCTEzCisgKiBSVEMgSW50ZXJydXB0CQlJVkc4CQkJMTQKKyAqIERNQTAgSW50ZXJydXB0IChQUEkpCQlJVkc4CQkJMTUKKyAqIERNQTEgKFNQT1JUMCBSWCkJCUlWRzkJCQkxNgorICogRE1BMiAoU1BPUlQwIFRYKQkJSVZHOQkJCTE3CisgKiBETUEzIChTUE9SVDEgUlgpCQlJVkc5CQkJMTgKKyAqIERNQTQgKFNQT1JUMSBUWCkJCUlWRzkJCQkxOQorICogRE1BNSAoUFBJKQkJCUlWRzEwCQkJMjAKKyAqIERNQTYgKFVBUlQgUlgpCQlJVkcxMAkJCTIxCisgKiBETUE3IChVQVJUIFRYKQkJSVZHMTAJCQkyMgorICogVGltZXIwCQkJSVZHMTEJCQkyMworICogVGltZXIxCQkJSVZHMTEJCQkyNAorICogVGltZXIyCQkJSVZHMTEJCQkyNQorICogUEYgSW50ZXJydXB0IEEJCUlWRzEyCQkJMjYKKyAqIFBGIEludGVycnVwdCBCCQlJVkcxMgkJCTI3CisgKiBETUE4LzkgSW50ZXJydXB0CQlJVkcxMwkJCTI4CisgKiBETUExMC8xMSBJbnRlcnJ1cHQJCUlWRzEzCQkJMjkKKyAqIFdhdGNoZG9nIFRpbWVyCQlJVkcxMwkJCTMwCisgKiBTb2Z0d2FyZSBJbnRlcnJ1cHQgMQkJSVZHMTQJCQkzMQorICogU29mdHdhcmUgSW50ZXJydXB0IDIJCS0tCisgKiAobG93ZXN0IHByaW9yaXR5KQkJSVZHMTUJCQkzMgorICovCisKKy8qIFRoZSBBQlNUUkFDVCBJUlEgZGVmaW5pdGlvbnMgKi8KKworLyogVGhlIGZpcnN0IHNldmVuIG9mIHRoZSBmb2xsb3dpbmcgYXJlIGZpeGVkLAorICogdGhlIHJlc3QgeW91IGNoYW5nZSBpZiB5b3UgbmVlZCB0bworICovCisKKyNkZWZpbmUJSVJRX0VNVQkJCTAJLyogRW11bGF0aW9uICovCisjZGVmaW5lCUlSUV9SU1QJCQkxCS8qIHJlc2V0ICovCisjZGVmaW5lCUlSUV9OTUkJCQkyCS8qIE5vbiBNYXNrYWJsZSAqLworI2RlZmluZQlJUlFfRVZYCQkJMwkvKiBFeGNlcHRpb24gKi8KKyNkZWZpbmUJSVJRX1VOVVNFRAkJNAkvKiAgLSB1bnVzZWQgaW50ZXJydXB0ICovCisjZGVmaW5lCUlSUV9IV0VSUgkJNQkvKiBIYXJkd2FyZSBFcnJvciAqLworI2RlZmluZQlJUlFfQ09SRVRNUgkJNgkvKiBDb3JlIHRpbWVyICovCisjZGVmaW5lCUlSUV9QTExfV0FLRVVQCQk3CS8qIFBMTCBXYWtldXAgSW50ZXJydXB0ICovCisjZGVmaW5lCUlSUV9ETUFfRVJST1IJCTgJLyogRE1BIEVycm9yIChnZW5lcmFsKSAqLworI2RlZmluZQlJUlFfUFBJX0VSUk9SCQk5CS8qIFBQSSBFcnJvciBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUJSVJRX1NQT1JUMF9FUlJPUgkxMAkvKiBTUE9SVDAgRXJyb3IgSW50ZXJydXB0ICovCisjZGVmaW5lCUlSUV9TUE9SVDFfRVJST1IJMTEJLyogU1BPUlQxIEVycm9yIEludGVycnVwdCAqLworI2RlZmluZQlJUlFfU1BJX0VSUk9SCQkxMgkvKiBTUEkgRXJyb3IgSW50ZXJydXB0ICovCisjZGVmaW5lCUlSUV9VQVJUX0VSUk9SCQkxMwkvKiBVQVJUIEVycm9yIEludGVycnVwdCAqLworI2RlZmluZQlJUlFfUlRDCQkJMTQJLyogUlRDIEludGVycnVwdCAqLworI2RlZmluZQlJUlFfUFBJCQkJMTUJLyogRE1BMCBJbnRlcnJ1cHQgKFBQSSkgKi8KKyNkZWZpbmUJSVJRX1NQT1JUMAkJMTYJLyogRE1BMSBJbnRlcnJ1cHQgKFNQT1JUMCBSWCkgKi8KKyNkZWZpbmUJSVJRX1NQQVJFMQkJMTcJLyogRE1BMiBJbnRlcnJ1cHQgKFNQT1JUMCBUWCkgKi8KKyNkZWZpbmUJSVJRX1NQT1JUMQkJMTgJLyogRE1BMyBJbnRlcnJ1cHQgKFNQT1JUMSBSWCkgKi8KKyNkZWZpbmUJSVJRX1NQQVJFMgkJMTkJLyogRE1BNCBJbnRlcnJ1cHQgKFNQT1JUMSBUWCkgKi8KKyNkZWZpbmUgSVJRX1NQSQkJCTIwCS8qIERNQTUgSW50ZXJydXB0IChTUEkpICovCisjZGVmaW5lCUlSUV9VQVJUCQkyMQkvKiBETUE2IEludGVycnVwdCAoVUFSVCBSWCkgKi8KKyNkZWZpbmUJSVJRX1NQQVJFMwkJMjIJLyogRE1BNyBJbnRlcnJ1cHQgKFVBUlQgVFgpICovCisjZGVmaW5lCUlSUV9UTVIwCQkyMwkvKiBUaW1lciAwICovCisjZGVmaW5lCUlSUV9UTVIxCQkyNAkvKiBUaW1lciAxICovCisjZGVmaW5lCUlSUV9UTVIyCQkyNQkvKiBUaW1lciAyICovCisjZGVmaW5lCUlSUV9QUk9HX0lOVEEJCTI2CS8qIFByb2dyYW1tYWJsZSBGbGFncyBBICg4KSAqLworI2RlZmluZQlJUlFfUFJPR19JTlRCCQkyNwkvKiBQcm9ncmFtbWFibGUgRmxhZ3MgQiAoOCkgKi8KKyNkZWZpbmUJSVJRX01FTV9ETUEwCQkyOAkvKiBETUE4LzkgSW50ZXJydXB0IChNZW1vcnkgRE1BIFN0cmVhbSAwKSAqLworI2RlZmluZQlJUlFfTUVNX0RNQTEJCTI5CS8qIERNQTEwLzExIEludGVycnVwdCAoTWVtb3J5IERNQSBTdHJlYW0gMSkgKi8KKyNkZWZpbmUJSVJRX1dBVENICSAgIAkzMAkvKiBXYXRjaCBEb2cgVGltZXIgKi8KKyNkZWZpbmUJSVJRX1NXX0lOVDEJCTMxCS8qIFNvZnR3YXJlIEludCAxICovCisjZGVmaW5lCUlSUV9TV19JTlQyCQkzMgkvKiBTb2Z0d2FyZSBJbnQgMiAocmVzZXJ2ZWQgZm9yIFNZU0NBTEwpICovCisKKyNkZWZpbmUgSVJRX1VBUlRfUlhfQklUCQkweDQwMDAKKyNkZWZpbmUgSVJRX1VBUlRfVFhfQklUCQkweDgwMDAKKyNkZWZpbmUgSVJRX1VBUlRfRVJST1JfQklUCTB4NDAKKworI2RlZmluZSBJVkc3CQkJNworI2RlZmluZSBJVkc4CQkJOAorI2RlZmluZSBJVkc5CQkJOQorI2RlZmluZSBJVkcxMAkJCTEwCisjZGVmaW5lIElWRzExCQkJMTEKKyNkZWZpbmUgSVZHMTIJCQkxMgorI2RlZmluZSBJVkcxMwkJCTEzCisjZGVmaW5lIElWRzE0CQkJMTQKKyNkZWZpbmUgSVZHMTUJCQkxNQorI2RlZmluZSBTWVNfSVJRUwkJMzMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvYmY1MzNfcnRjLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvYmY1MzNfcnRjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwOTkyMgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9iZjUzM19ydGMuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogVS1ib290IC0gYmY1MzNfcnRjLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9CRjUzM19SVENfSF8KKyNkZWZpbmUgX0JGNTMzX1JUQ19IXworCit2b2lkIHJ0Y19pbml0KHZvaWQpOwordm9pZCB3YWl0X2Zvcl9jb21wbGV0ZSh2b2lkKTsKK3ZvaWQgcnRjX3Jlc2V0KHZvaWQpOworCisjZGVmaW5lIE1JTl9UT19TRUNTKF94XykJKDYwICogX3hfKQorI2RlZmluZSBIUlNfVE9fU0VDUyhfeF8pCSg2MCAqIDYwICogX3hfKQorI2RlZmluZSBEQVlTX1RPX1NFQ1MoX3hfKQkoMjQgKiA2MCAqIDYwICogX3hfKQorCisjZGVmaW5lIE5VTV9TRUNTX0lOX0RBWQkJKDI0ICogMzYwMCkKKyNkZWZpbmUgTlVNX1NFQ1NfSU5fSE9VUgkoMzYwMCkKKyNkZWZpbmUgTlVNX1NFQ1NfSU5fTUlOCQkoNjApCisKKy8qIFNoaWZ0IHZhbHVlcyBmb3IgUlRDX1NUQVQgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgREFZX0JJVFNfT0ZGCQkxNworI2RlZmluZSBIT1VSX0JJVFNfT0ZGCQkxMgorI2RlZmluZSBNSU5fQklUU19PRkYJCTYKKyNkZWZpbmUgU0VDX0JJVFNfT0ZGCQkwCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2JmNTMzX3NlcmlhbC5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2JmNTMzX3NlcmlhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZTE2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvYmY1MzNfc2VyaWFsLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIFUtYm9vdCBiZjUzM19zZXJpYWwuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKworI2lmbmRlZiBfQkY1MzNfU0VSSUFMX0hfCisjZGVmaW5lIF9CRjUzM19TRVJJQUxfSF8KKworI2RlZmluZSBCWVRFX1JFRihhZGRyKQkJKCooKHZvbGF0aWxlIGNoYXIqKWFkZHIpKQorI2RlZmluZSBIQUxGV09SRF9SRUYoYWRkcikJKCooKHZvbGF0aWxlIHNob3J0KilhZGRyKSkKKyNkZWZpbmUgV09SRF9SRUYoYWRkcikJCSgqKCh2b2xhdGlsZSBsb25nKilhZGRyKSkKKworI2RlZmluZSBVQVJUX1RIUl9MTwkJSEFMRldPUkRfUkVGKFVBUlRfVEhSKQorI2RlZmluZSBVQVJUX1JCUl9MTwkJSEFMRldPUkRfUkVGKFVBUlRfUkJSKQorI2RlZmluZSBVQVJUX0RMTF9MTwkJSEFMRldPUkRfUkVGKFVBUlRfRExMKQorI2RlZmluZSBVQVJUX0lFUl9MTwkJSEFMRldPUkRfUkVGKFVBUlRfSUVSKQorI2RlZmluZSBVQVJUX0lFUl9FUkJGSQkJMHgwMQorI2RlZmluZSBVQVJUX0lFUl9FVEJFSQkJMHgwMgorI2RlZmluZSBVQVJUX0lFUl9FTFNJCQkweDA0CisjZGVmaW5lIFVBUlRfSUVSX0VERFNJCQkweDA4CisKKyNkZWZpbmUgVUFSVF9ETEhfTE8JCUhBTEZXT1JEX1JFRihVQVJUX0RMSCkKKyNkZWZpbmUgVUFSVF9JSVJfTE8JCUhBTEZXT1JEX1JFRihVQVJUX0lJUikKKyNkZWZpbmUgVUFSVF9JSVJfTk9JTlQJCTB4MDEKKyNkZWZpbmUgVUFSVF9JSVJfU1RBVFVTCQkweDA2CisjZGVmaW5lIFVBUlRfSUlSX0xTUgkJMHgwNgorI2RlZmluZSBVQVJUX0lJUl9SQlIJCTB4MDQKKyNkZWZpbmUgVUFSVF9JSVJfVEhSCQkweDAyCisjZGVmaW5lIFVBUlRfSUlSX01TUgkJMHgwMAorCisjZGVmaW5lIFVBUlRfTENSX0xPCQlIQUxGV09SRF9SRUYoVUFSVF9MQ1IpCisjZGVmaW5lIFVBUlRfTENSX1dMUzUJCTAKKyNkZWZpbmUgVUFSVF9MQ1JfV0xTNgkJMHgwMQorI2RlZmluZSBVQVJUX0xDUl9XTFM3CQkweDAyCisjZGVmaW5lIFVBUlRfTENSX1dMUzgJCTB4MDMKKyNkZWZpbmUgVUFSVF9MQ1JfU1RCCQkweDA0CisjZGVmaW5lIFVBUlRfTENSX1BFTgkJMHgwOAorI2RlZmluZSBVQVJUX0xDUl9FUFMJCTB4MTAKKyNkZWZpbmUgVUFSVF9MQ1JfU1AJCTB4MjAKKyNkZWZpbmUgVUFSVF9MQ1JfU0IJCTB4NDAKKyNkZWZpbmUgVUFSVF9MQ1JfRExBQgkJMHg4MAorCisjZGVmaW5lIFVBUlRfTUNSX0xPCQlIQUxGV09SRF9SRUYoVUFSVF9NQ1IpCisKKyNkZWZpbmUgVUFSVF9MU1JfTE8JCUhBTEZXT1JEX1JFRihVQVJUX0xTUikKKyNkZWZpbmUgVUFSVF9MU1JfRFIJCTB4MDEKKyNkZWZpbmUgVUFSVF9MU1JfT0UJCTB4MDIKKyNkZWZpbmUgVUFSVF9MU1JfUEUJCTB4MDQKKyNkZWZpbmUgVUFSVF9MU1JfRkUJCTB4MDgKKyNkZWZpbmUgVUFSVF9MU1JfQkkJCTB4MTAKKyNkZWZpbmUgVUFSVF9MU1JfVEhSRQkJMHgyMAorI2RlZmluZSBVQVJUX0xTUl9URU1UCQkweDQwCisKKyNkZWZpbmUgVUFSVF9NU1JfTE8JCUhBTEZXT1JEX1JFRihVQVJUX01TUikKKyNkZWZpbmUgVUFSVF9TQ1JfTE8JCUhBTEZXT1JEX1JFRihVQVJUX1NDUikKKyNkZWZpbmUgVUFSVF9HQ1RMX0xPCQlIQUxGV09SRF9SRUYoVUFSVF9HQ1RMKQorI2RlZmluZSBVQVJUX0dDVExfVUNFTgkJMHgwMQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9jZGVmQkY1MzEuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9jZGVmQkY1MzEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGQ4NDFkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2NkZWZCRjUzMS5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBjZGVmQkY1MzEuaAorICoKKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4gU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIE5vbi1HUEwgTGljZW5zZSBhbHNvIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIFZpc3VhbERTUCsrCisgKgorICogaHR0cDovL3d3dy5hbmFsb2cuY29tL3Byb2Nlc3NvcnMvcmVzb3VyY2VzL2Nyb3NzY29yZS92aXN1YWxEc3BEZXZTb2Z0d2FyZS5odG1sCisgKgorICogKGMpIENvcHlyaWdodCAyMDAxLTIwMDUgQW5hbG9nIERldmljZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAorICoKKyAqIFRoaXMgZmlsZSB1bmRlciBzb3VyY2UgY29kZSBjb250cm9sLCBwbGVhc2Ugc2VuZCBidWdzIG9yIGNoYW5nZXMgdG86CisgKiBkc3B0b29scy5zdXBwb3J0QGFuYWxvZy5jb20KKyAqCisgKi8KKworI2lmbmRlZiBfQ0RFRkJGNTMxX0gKKyNkZWZpbmUgX0NERUZCRjUzMV9ICisKKyNpbmNsdWRlIDxjZGVmQkY1MzIuaD4KKworI2VuZGlmCS8qIF9DREVGQkY1MzFfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2NkZWZCRjUzMi5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2NkZWZCRjUzMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZDQyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvY2RlZkJGNTMyLmgKQEAgLTAsMCArMSwzOTggQEAKKy8qCisgKiBjZGVmQkY1MzIuaAorICoKKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4gU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIE5vbi1HUEwgTGljZW5zZSBhbHNvIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIFZpc3VhbERTUCsrCisgKgorICogaHR0cDovL3d3dy5hbmFsb2cuY29tL3Byb2Nlc3NvcnMvcmVzb3VyY2VzL2Nyb3NzY29yZS92aXN1YWxEc3BEZXZTb2Z0d2FyZS5odG1sCisgKgorICogKGMpIENvcHlyaWdodCAyMDAxLTIwMDUgQW5hbG9nIERldmljZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAorICoKKyAqIFRoaXMgZmlsZSB1bmRlciBzb3VyY2UgY29kZSBjb250cm9sLCBwbGVhc2Ugc2VuZCBidWdzIG9yIGNoYW5nZXMgdG86CisgKiBkc3B0b29scy5zdXBwb3J0QGFuYWxvZy5jb20KKyAqCisgKi8KKworI2lmbmRlZiBfQ0RFRl9CRjUzMl9ICisjZGVmaW5lIF9DREVGX0JGNTMyX0gKKworLyoKKyAqICNpZiAhZGVmaW5lZChfX0FEU1BMUEJMQUNLRklOX18pCisgKiAjd2FybmluZyBjZGVmQkY1MzIuaCBzaG91bGQgb25seSBiZSBpbmNsdWRlZCBmb3IgNTMyIGNvbXBhdGlibGUgY2hpcHMuCisgKiAjZW5kaWYKKyAqLworCisvKiBpbmNsdWRlIGFsbCBDb3JlIHJlZ2lzdGVycyBhbmQgYml0IGRlZmluaXRpb25zICovCisjaW5jbHVkZSA8YXNtL2NwdS9kZWZCRjUzMi5oPgorCisvKiBpbmNsdWRlIGNvcmUgc3BlY2lmaWMgcmVnaXN0ZXIgcG9pbnRlciBkZWZpbml0aW9ucyAqLworI2luY2x1ZGUgPGFzbS9jcHUvY2RlZl9MUEJsYWNrZmluLmg+CisKKy8qIENsb2NrIGFuZCBTeXN0ZW0gQ29udHJvbCAoMHhGRkMwIDA0MDAtMHhGRkMwIDA3RkYpICovCisjZGVmaW5lIHBQTExfQ1RMICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilQTExfQ1RMKQorI2RlZmluZSBwUExMX1NUQVQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVBMTF9TVEFUKQorI2RlZmluZSBwUExMX0xPQ0tDTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVBMTF9MT0NLQ05UKQorI2RlZmluZSBwQ0hJUElEICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUNISVBJRCkKKyNkZWZpbmUgcFNXUlNUICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTV1JTVCkKKyNkZWZpbmUgcFNZU0NSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTWVNDUikKKyNkZWZpbmUgcFBMTF9ESVYgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVBMTF9ESVYpCisjZGVmaW5lIHBWUl9DVEwgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVZSX0NUTCkKKworLyogU3lzdGVtIEludGVycnVwdCBDb250cm9sbGVyICgweEZGQzAgMEMwMC0weEZGQzAgMEZGRikgKi8KKyNkZWZpbmUgcFNJQ19JQVIwICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNJQ19JQVIwKQorI2RlZmluZSBwU0lDX0lBUjEgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU0lDX0lBUjEpCisjZGVmaW5lIHBTSUNfSUFSMiAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilTSUNfSUFSMikKKyNkZWZpbmUgcFNJQ19JQVIzICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNJQ19JQVIzKQorI2RlZmluZSBwU0lDX0lNQVNLICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNJQ19JTUFTSykKKyNkZWZpbmUgcFNJQ19JU1IgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU0lDX0lTUikKKyNkZWZpbmUgcFNJQ19JV1IgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU0lDX0lXUikKKworLyogV2F0Y2hkb2cgVGltZXIgKDB4RkZDMCAxMDAwLTB4RkZDMCAxM0ZGKSAqLworI2RlZmluZSBwV0RPR19DVEwgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVdET0dfQ1RMKQorI2RlZmluZSBwV0RPR19DTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopV0RPR19DTlQpCisjZGVmaW5lIHBXRE9HX1NUQVQgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopV0RPR19TVEFUKQorCisvKiBSZWFsIFRpbWUgQ2xvY2sgKDB4RkZDMCAxNDAwLTB4RkZDMCAxN0ZGKSAqLworI2RlZmluZSBwUlRDX1NUQVQgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopUlRDX1NUQVQpCisjZGVmaW5lIHBSVENfSUNUTCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopUlRDX0lDVEwpCisjZGVmaW5lIHBSVENfSVNUQVQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVJUQ19JU1RBVCkKKyNkZWZpbmUgcFJUQ19TV0NOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopUlRDX1NXQ05UKQorI2RlZmluZSBwUlRDX0FMQVJNICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVJUQ19BTEFSTSkKKyNkZWZpbmUgcFJUQ19GQVNUICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilSVENfRkFTVCkKKyNkZWZpbmUgcFJUQ19QUkVOICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilSVENfUFJFTikKKworLyogR2VuZXJhbCBQdXJwb3NlIElPICgweEZGQzAgMjQwMC0weEZGQzAgMjdGRikgKi8KKyNkZWZpbmUgcEZJT19ESVIgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUZJT19ESVIpCisjZGVmaW5lIHBGSU9fRkxBR19DICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilGSU9fRkxBR19DKQorI2RlZmluZSBwRklPX0ZMQUdfUyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRklPX0ZMQUdfUykKKyNkZWZpbmUgcEZJT19NQVNLQV9DICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilGSU9fTUFTS0FfQykKKyNkZWZpbmUgcEZJT19NQVNLQV9TICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilGSU9fTUFTS0FfUykKKyNkZWZpbmUgcEZJT19NQVNLQl9DICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilGSU9fTUFTS0JfQykKKyNkZWZpbmUgcEZJT19NQVNLQl9TICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilGSU9fTUFTS0JfUykKKyNkZWZpbmUgcEZJT19QT0xBUiAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRklPX1BPTEFSKQorI2RlZmluZSBwRklPX0VER0UgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUZJT19FREdFKQorI2RlZmluZSBwRklPX0JPVEggKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUZJT19CT1RIKQorI2RlZmluZSBwRklPX0lORU4gKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUZJT19JTkVOKQorI2RlZmluZSBwRklPX0ZMQUdfRCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRklPX0ZMQUdfRCkKKyNkZWZpbmUgcEZJT19GTEFHX1QgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUZJT19GTEFHX1QpCisjZGVmaW5lIHBGSU9fTUFTS0FfRCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRklPX01BU0tBX0QpCisjZGVmaW5lIHBGSU9fTUFTS0FfVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRklPX01BU0tBX1QpCisjZGVmaW5lIHBGSU9fTUFTS0JfRCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRklPX01BU0tCX0QpCisjZGVmaW5lIHBGSU9fTUFTS0JfVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRklPX01BU0tCX1QpCisKKy8qIERNQSBUZXN0IFJlZ2lzdGVycyAqLworI2RlZmluZSBwRE1BX0NDT01QCSgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURNQV9DQ09NUCkKKyNkZWZpbmUJcERNQV9BQ09NUAkoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilETUFfQUNPTVApCisjZGVmaW5lCXBETUFfTUlTUgkoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilETUFfTUlTUikKKyNkZWZpbmUJcERNQV9UQ1BFUgkoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BX1RDUEVSKQorI2RlZmluZQlwRE1BX1RDQ05UCSgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUFfVENDTlQpCisjZGVmaW5lCXBETUFfVE1PREUJKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQV9UTU9ERSkKKyNkZWZpbmUJcERNQV9UTUNIQU4JKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQV9UTUNIQU4pCisjZGVmaW5lCXBETUFfVE1TVEFUCSgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUFfVE1TVEFUKQorI2RlZmluZQlwRE1BX1RNQkQJKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQV9UTUJEKQorI2RlZmluZQlwRE1BX1RNTTBECSgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUFfVE1NMEQpCisjZGVmaW5lCXBETUFfVE1NMUQJKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQV9UTU0xRCkKKyNkZWZpbmUgcERNQV9UTU1BCSgodm9sYXRpbGUgdm9pZCAqKilETUFfVE1NQSkKKworLyogRE1BIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgcERNQTBfQ09ORklHICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUEwX0NPTkZJRykKKyNkZWZpbmUgcERNQTBfTkVYVF9ERVNDX1BUUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BMF9ORVhUX0RFU0NfUFRSKQorI2RlZmluZSBwRE1BMF9TVEFSVF9BRERSICgodm9sYXRpbGUgdm9pZCAqKilETUEwX1NUQVJUX0FERFIpCisjZGVmaW5lIHBETUEwX1hfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTBfWF9DT1VOVCkKKyNkZWZpbmUgcERNQTBfWV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BMF9ZX0NPVU5UKQorI2RlZmluZSBwRE1BMF9YX01PRElGWSAoKHZvbGF0aWxlIHNpZ25lZCBzaG9ydCAqKURNQTBfWF9NT0RJRlkpCisjZGVmaW5lIHBETUEwX1lfTU9ESUZZICgodm9sYXRpbGUgc2lnbmVkIHNob3J0ICopRE1BMF9ZX01PRElGWSkKKyNkZWZpbmUgcERNQTBfQ1VSUl9ERVNDX1BUUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BMF9DVVJSX0RFU0NfUFRSKQorI2RlZmluZSBwRE1BMF9DVVJSX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTBfQ1VSUl9BRERSKQorI2RlZmluZSBwRE1BMF9DVVJSX1hfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTBfQ1VSUl9YX0NPVU5UKQorI2RlZmluZSBwRE1BMF9DVVJSX1lfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTBfQ1VSUl9ZX0NPVU5UKQorI2RlZmluZSBwRE1BMF9JUlFfU1RBVFVTICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUEwX0lSUV9TVEFUVVMpCisjZGVmaW5lIHBETUEwX1BFUklQSEVSQUxfTUFQICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUEwX1BFUklQSEVSQUxfTUFQKQorCisjZGVmaW5lIHBETUExX0NPTkZJRyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BMV9DT05GSUcpCisjZGVmaW5lIHBETUExX05FWFRfREVTQ19QVFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTFfTkVYVF9ERVNDX1BUUikKKyNkZWZpbmUgcERNQTFfU1RBUlRfQUREUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BMV9TVEFSVF9BRERSKQorI2RlZmluZSBwRE1BMV9YX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUExX1hfQ09VTlQpCisjZGVmaW5lIHBETUExX1lfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTFfWV9DT1VOVCkKKyNkZWZpbmUgcERNQTFfWF9NT0RJRlkgKCh2b2xhdGlsZSBzaWduZWQgc2hvcnQgKilETUExX1hfTU9ESUZZKQorI2RlZmluZSBwRE1BMV9ZX01PRElGWSAoKHZvbGF0aWxlIHNpZ25lZCBzaG9ydCAqKURNQTFfWV9NT0RJRlkpCisjZGVmaW5lIHBETUExX0NVUlJfREVTQ19QVFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTFfQ1VSUl9ERVNDX1BUUikKKyNkZWZpbmUgcERNQTFfQ1VSUl9BRERSICgodm9sYXRpbGUgdm9pZCAqKilETUExX0NVUlJfQUREUikKKyNkZWZpbmUgcERNQTFfQ1VSUl9YX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUExX0NVUlJfWF9DT1VOVCkKKyNkZWZpbmUgcERNQTFfQ1VSUl9ZX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUExX0NVUlJfWV9DT1VOVCkKKyNkZWZpbmUgcERNQTFfSVJRX1NUQVRVUyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BMV9JUlFfU1RBVFVTKQorI2RlZmluZSBwRE1BMV9QRVJJUEhFUkFMX01BUCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BMV9QRVJJUEhFUkFMX01BUCkKKworI2RlZmluZSBwRE1BMl9DT05GSUcgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTJfQ09ORklHKQorI2RlZmluZSBwRE1BMl9ORVhUX0RFU0NfUFRSICgodm9sYXRpbGUgdm9pZCAqKilETUEyX05FWFRfREVTQ19QVFIpCisjZGVmaW5lIHBETUEyX1NUQVJUX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTJfU1RBUlRfQUREUikKKyNkZWZpbmUgcERNQTJfWF9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BMl9YX0NPVU5UKQorI2RlZmluZSBwRE1BMl9ZX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUEyX1lfQ09VTlQpCisjZGVmaW5lIHBETUEyX1hfTU9ESUZZICgodm9sYXRpbGUgc2lnbmVkIHNob3J0ICopRE1BMl9YX01PRElGWSkKKyNkZWZpbmUgcERNQTJfWV9NT0RJRlkgKCh2b2xhdGlsZSBzaWduZWQgc2hvcnQgKilETUEyX1lfTU9ESUZZKQorI2RlZmluZSBwRE1BMl9DVVJSX0RFU0NfUFRSICgodm9sYXRpbGUgdm9pZCAqKilETUEyX0NVUlJfREVTQ19QVFIpCisjZGVmaW5lIHBETUEyX0NVUlJfQUREUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BMl9DVVJSX0FERFIpCisjZGVmaW5lIHBETUEyX0NVUlJfWF9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BMl9DVVJSX1hfQ09VTlQpCisjZGVmaW5lIHBETUEyX0NVUlJfWV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BMl9DVVJSX1lfQ09VTlQpCisjZGVmaW5lIHBETUEyX0lSUV9TVEFUVVMgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTJfSVJRX1NUQVRVUykKKyNkZWZpbmUgcERNQTJfUEVSSVBIRVJBTF9NQVAgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTJfUEVSSVBIRVJBTF9NQVApCisKKyNkZWZpbmUgcERNQTNfQ09ORklHICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUEzX0NPTkZJRykKKyNkZWZpbmUgcERNQTNfTkVYVF9ERVNDX1BUUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BM19ORVhUX0RFU0NfUFRSKQorI2RlZmluZSBwRE1BM19TVEFSVF9BRERSICgodm9sYXRpbGUgdm9pZCAqKilETUEzX1NUQVJUX0FERFIpCisjZGVmaW5lIHBETUEzX1hfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTNfWF9DT1VOVCkKKyNkZWZpbmUgcERNQTNfWV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BM19ZX0NPVU5UKQorI2RlZmluZSBwRE1BM19YX01PRElGWSAoKHZvbGF0aWxlIHNpZ25lZCBzaG9ydCAqKURNQTNfWF9NT0RJRlkpCisjZGVmaW5lIHBETUEzX1lfTU9ESUZZICgodm9sYXRpbGUgc2lnbmVkIHNob3J0ICopRE1BM19ZX01PRElGWSkKKyNkZWZpbmUgcERNQTNfQ1VSUl9ERVNDX1BUUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BM19DVVJSX0RFU0NfUFRSKQorI2RlZmluZSBwRE1BM19DVVJSX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTNfQ1VSUl9BRERSKQorI2RlZmluZSBwRE1BM19DVVJSX1hfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTNfQ1VSUl9YX0NPVU5UKQorI2RlZmluZSBwRE1BM19DVVJSX1lfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTNfQ1VSUl9ZX0NPVU5UKQorI2RlZmluZSBwRE1BM19JUlFfU1RBVFVTICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUEzX0lSUV9TVEFUVVMpCisjZGVmaW5lIHBETUEzX1BFUklQSEVSQUxfTUFQICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUEzX1BFUklQSEVSQUxfTUFQKQorCisjZGVmaW5lIHBETUE0X0NPTkZJRyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BNF9DT05GSUcpCisjZGVmaW5lIHBETUE0X05FWFRfREVTQ19QVFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTRfTkVYVF9ERVNDX1BUUikKKyNkZWZpbmUgcERNQTRfU1RBUlRfQUREUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BNF9TVEFSVF9BRERSKQorI2RlZmluZSBwRE1BNF9YX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE0X1hfQ09VTlQpCisjZGVmaW5lIHBETUE0X1lfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTRfWV9DT1VOVCkKKyNkZWZpbmUgcERNQTRfWF9NT0RJRlkgKCh2b2xhdGlsZSBzaWduZWQgc2hvcnQgKilETUE0X1hfTU9ESUZZKQorI2RlZmluZSBwRE1BNF9ZX01PRElGWSAoKHZvbGF0aWxlIHNpZ25lZCBzaG9ydCAqKURNQTRfWV9NT0RJRlkpCisjZGVmaW5lIHBETUE0X0NVUlJfREVTQ19QVFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTRfQ1VSUl9ERVNDX1BUUikKKyNkZWZpbmUgcERNQTRfQ1VSUl9BRERSICgodm9sYXRpbGUgdm9pZCAqKilETUE0X0NVUlJfQUREUikKKyNkZWZpbmUgcERNQTRfQ1VSUl9YX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE0X0NVUlJfWF9DT1VOVCkKKyNkZWZpbmUgcERNQTRfQ1VSUl9ZX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE0X0NVUlJfWV9DT1VOVCkKKyNkZWZpbmUgcERNQTRfSVJRX1NUQVRVUyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BNF9JUlFfU1RBVFVTKQorI2RlZmluZSBwRE1BNF9QRVJJUEhFUkFMX01BUCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BNF9QRVJJUEhFUkFMX01BUCkKKworI2RlZmluZSBwRE1BNV9DT05GSUcgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTVfQ09ORklHKQorI2RlZmluZSBwRE1BNV9ORVhUX0RFU0NfUFRSICgodm9sYXRpbGUgdm9pZCAqKilETUE1X05FWFRfREVTQ19QVFIpCisjZGVmaW5lIHBETUE1X1NUQVJUX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTVfU1RBUlRfQUREUikKKyNkZWZpbmUgcERNQTVfWF9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BNV9YX0NPVU5UKQorI2RlZmluZSBwRE1BNV9ZX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE1X1lfQ09VTlQpCisjZGVmaW5lIHBETUE1X1hfTU9ESUZZICgodm9sYXRpbGUgc2lnbmVkIHNob3J0ICopRE1BNV9YX01PRElGWSkKKyNkZWZpbmUgcERNQTVfWV9NT0RJRlkgKCh2b2xhdGlsZSBzaWduZWQgc2hvcnQgKilETUE1X1lfTU9ESUZZKQorI2RlZmluZSBwRE1BNV9DVVJSX0RFU0NfUFRSICgodm9sYXRpbGUgdm9pZCAqKilETUE1X0NVUlJfREVTQ19QVFIpCisjZGVmaW5lIHBETUE1X0NVUlJfQUREUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BNV9DVVJSX0FERFIpCisjZGVmaW5lIHBETUE1X0NVUlJfWF9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BNV9DVVJSX1hfQ09VTlQpCisjZGVmaW5lIHBETUE1X0NVUlJfWV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BNV9DVVJSX1lfQ09VTlQpCisjZGVmaW5lIHBETUE1X0lSUV9TVEFUVVMgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTVfSVJRX1NUQVRVUykKKyNkZWZpbmUgcERNQTVfUEVSSVBIRVJBTF9NQVAgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTVfUEVSSVBIRVJBTF9NQVApCisKKyNkZWZpbmUgcERNQTZfQ09ORklHICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE2X0NPTkZJRykKKyNkZWZpbmUgcERNQTZfTkVYVF9ERVNDX1BUUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BNl9ORVhUX0RFU0NfUFRSKQorI2RlZmluZSBwRE1BNl9TVEFSVF9BRERSICgodm9sYXRpbGUgdm9pZCAqKilETUE2X1NUQVJUX0FERFIpCisjZGVmaW5lIHBETUE2X1hfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTZfWF9DT1VOVCkKKyNkZWZpbmUgcERNQTZfWV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BNl9ZX0NPVU5UKQorI2RlZmluZSBwRE1BNl9YX01PRElGWSAoKHZvbGF0aWxlIHNpZ25lZCBzaG9ydCAqKURNQTZfWF9NT0RJRlkpCisjZGVmaW5lIHBETUE2X1lfTU9ESUZZICgodm9sYXRpbGUgc2lnbmVkIHNob3J0ICopRE1BNl9ZX01PRElGWSkKKyNkZWZpbmUgcERNQTZfQ1VSUl9ERVNDX1BUUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BNl9DVVJSX0RFU0NfUFRSKQorI2RlZmluZSBwRE1BNl9DVVJSX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTZfQ1VSUl9BRERSKQorI2RlZmluZSBwRE1BNl9DVVJSX1hfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTZfQ1VSUl9YX0NPVU5UKQorI2RlZmluZSBwRE1BNl9DVVJSX1lfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTZfQ1VSUl9ZX0NPVU5UKQorI2RlZmluZSBwRE1BNl9JUlFfU1RBVFVTICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE2X0lSUV9TVEFUVVMpCisjZGVmaW5lIHBETUE2X1BFUklQSEVSQUxfTUFQICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE2X1BFUklQSEVSQUxfTUFQKQorCisjZGVmaW5lIHBETUE3X0NPTkZJRyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BN19DT05GSUcpCisjZGVmaW5lIHBETUE3X05FWFRfREVTQ19QVFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTdfTkVYVF9ERVNDX1BUUikKKyNkZWZpbmUgcERNQTdfU1RBUlRfQUREUiAoKHZvbGF0aWxlIHZvaWQgKiopRE1BN19TVEFSVF9BRERSKQorI2RlZmluZSBwRE1BN19YX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE3X1hfQ09VTlQpCisjZGVmaW5lIHBETUE3X1lfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKURNQTdfWV9DT1VOVCkKKyNkZWZpbmUgcERNQTdfWF9NT0RJRlkgKCh2b2xhdGlsZSBzaWduZWQgc2hvcnQgKilETUE3X1hfTU9ESUZZKQorI2RlZmluZSBwRE1BN19ZX01PRElGWSAoKHZvbGF0aWxlIHNpZ25lZCBzaG9ydCAqKURNQTdfWV9NT0RJRlkpCisjZGVmaW5lIHBETUE3X0NVUlJfREVTQ19QVFIgKCh2b2xhdGlsZSB2b2lkICoqKURNQTdfQ1VSUl9ERVNDX1BUUikKKyNkZWZpbmUgcERNQTdfQ1VSUl9BRERSICgodm9sYXRpbGUgdm9pZCAqKilETUE3X0NVUlJfQUREUikKKyNkZWZpbmUgcERNQTdfQ1VSUl9YX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE3X0NVUlJfWF9DT1VOVCkKKyNkZWZpbmUgcERNQTdfQ1VSUl9ZX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilETUE3X0NVUlJfWV9DT1VOVCkKKyNkZWZpbmUgcERNQTdfSVJRX1NUQVRVUyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BN19JUlFfU1RBVFVTKQorI2RlZmluZSBwRE1BN19QRVJJUEhFUkFMX01BUCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRE1BN19QRVJJUEhFUkFMX01BUCkKKworI2RlZmluZSBwTURNQV9EMV9DT05GSUcgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfRDFfQ09ORklHKQorI2RlZmluZSBwTURNQV9EMV9ORVhUX0RFU0NfUFRSICgodm9sYXRpbGUgdm9pZCAqKilNRE1BX0QxX05FWFRfREVTQ19QVFIpCisjZGVmaW5lIHBNRE1BX0QxX1NUQVJUX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKU1ETUFfRDFfU1RBUlRfQUREUikKKyNkZWZpbmUgcE1ETUFfRDFfWF9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9EMV9YX0NPVU5UKQorI2RlZmluZSBwTURNQV9EMV9ZX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilNRE1BX0QxX1lfQ09VTlQpCisjZGVmaW5lIHBNRE1BX0QxX1hfTU9ESUZZICgodm9sYXRpbGUgc2lnbmVkIHNob3J0ICopTURNQV9EMV9YX01PRElGWSkKKyNkZWZpbmUgcE1ETUFfRDFfWV9NT0RJRlkgKCh2b2xhdGlsZSBzaWduZWQgc2hvcnQgKilNRE1BX0QxX1lfTU9ESUZZKQorI2RlZmluZSBwTURNQV9EMV9DVVJSX0RFU0NfUFRSICgodm9sYXRpbGUgdm9pZCAqKilNRE1BX0QxX0NVUlJfREVTQ19QVFIpCisjZGVmaW5lIHBNRE1BX0QxX0NVUlJfQUREUiAoKHZvbGF0aWxlIHZvaWQgKiopTURNQV9EMV9DVVJSX0FERFIpCisjZGVmaW5lIHBNRE1BX0QxX0NVUlJfWF9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9EMV9DVVJSX1hfQ09VTlQpCisjZGVmaW5lIHBNRE1BX0QxX0NVUlJfWV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9EMV9DVVJSX1lfQ09VTlQpCisjZGVmaW5lIHBNRE1BX0QxX0lSUV9TVEFUVVMgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfRDFfSVJRX1NUQVRVUykKKyNkZWZpbmUgcE1ETUFfRDFfUEVSSVBIRVJBTF9NQVAgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfRDFfUEVSSVBIRVJBTF9NQVApCisKKyNkZWZpbmUgcE1ETUFfUzFfQ09ORklHICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilNRE1BX1MxX0NPTkZJRykKKyNkZWZpbmUgcE1ETUFfUzFfTkVYVF9ERVNDX1BUUiAoKHZvbGF0aWxlIHZvaWQgKiopTURNQV9TMV9ORVhUX0RFU0NfUFRSKQorI2RlZmluZSBwTURNQV9TMV9TVEFSVF9BRERSICgodm9sYXRpbGUgdm9pZCAqKilNRE1BX1MxX1NUQVJUX0FERFIpCisjZGVmaW5lIHBNRE1BX1MxX1hfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfUzFfWF9DT1VOVCkKKyNkZWZpbmUgcE1ETUFfUzFfWV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9TMV9ZX0NPVU5UKQorI2RlZmluZSBwTURNQV9TMV9YX01PRElGWSAoKHZvbGF0aWxlIHNpZ25lZCBzaG9ydCAqKU1ETUFfUzFfWF9NT0RJRlkpCisjZGVmaW5lIHBNRE1BX1MxX1lfTU9ESUZZICgodm9sYXRpbGUgc2lnbmVkIHNob3J0ICopTURNQV9TMV9ZX01PRElGWSkKKyNkZWZpbmUgcE1ETUFfUzFfQ1VSUl9ERVNDX1BUUiAoKHZvbGF0aWxlIHZvaWQgKiopTURNQV9TMV9DVVJSX0RFU0NfUFRSKQorI2RlZmluZSBwTURNQV9TMV9DVVJSX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKU1ETUFfUzFfQ1VSUl9BRERSKQorI2RlZmluZSBwTURNQV9TMV9DVVJSX1hfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfUzFfQ1VSUl9YX0NPVU5UKQorI2RlZmluZSBwTURNQV9TMV9DVVJSX1lfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfUzFfQ1VSUl9ZX0NPVU5UKQorI2RlZmluZSBwTURNQV9TMV9JUlFfU1RBVFVTICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilNRE1BX1MxX0lSUV9TVEFUVVMpCisjZGVmaW5lIHBNRE1BX1MxX1BFUklQSEVSQUxfTUFQICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilNRE1BX1MxX1BFUklQSEVSQUxfTUFQKQorCisjZGVmaW5lIHBNRE1BX0QwX0NPTkZJRyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9EMF9DT05GSUcpCisjZGVmaW5lIHBNRE1BX0QwX05FWFRfREVTQ19QVFIgKCh2b2xhdGlsZSB2b2lkICoqKU1ETUFfRDBfTkVYVF9ERVNDX1BUUikKKyNkZWZpbmUgcE1ETUFfRDBfU1RBUlRfQUREUiAoKHZvbGF0aWxlIHZvaWQgKiopTURNQV9EMF9TVEFSVF9BRERSKQorI2RlZmluZSBwTURNQV9EMF9YX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilNRE1BX0QwX1hfQ09VTlQpCisjZGVmaW5lIHBNRE1BX0QwX1lfQ09VTlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfRDBfWV9DT1VOVCkKKyNkZWZpbmUgcE1ETUFfRDBfWF9NT0RJRlkgKCh2b2xhdGlsZSBzaWduZWQgc2hvcnQgKilNRE1BX0QwX1hfTU9ESUZZKQorI2RlZmluZSBwTURNQV9EMF9ZX01PRElGWSAoKHZvbGF0aWxlIHNpZ25lZCBzaG9ydCAqKU1ETUFfRDBfWV9NT0RJRlkpCisjZGVmaW5lIHBNRE1BX0QwX0NVUlJfREVTQ19QVFIgKCh2b2xhdGlsZSB2b2lkICoqKU1ETUFfRDBfQ1VSUl9ERVNDX1BUUikKKyNkZWZpbmUgcE1ETUFfRDBfQ1VSUl9BRERSICgodm9sYXRpbGUgdm9pZCAqKilNRE1BX0QwX0NVUlJfQUREUikKKyNkZWZpbmUgcE1ETUFfRDBfQ1VSUl9YX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilNRE1BX0QwX0NVUlJfWF9DT1VOVCkKKyNkZWZpbmUgcE1ETUFfRDBfQ1VSUl9ZX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilNRE1BX0QwX0NVUlJfWV9DT1VOVCkKKyNkZWZpbmUgcE1ETUFfRDBfSVJRX1NUQVRVUyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9EMF9JUlFfU1RBVFVTKQorI2RlZmluZSBwTURNQV9EMF9QRVJJUEhFUkFMX01BUCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9EMF9QRVJJUEhFUkFMX01BUCkKKworI2RlZmluZSBwTURNQV9TMF9DT05GSUcgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfUzBfQ09ORklHKQorI2RlZmluZSBwTURNQV9TMF9ORVhUX0RFU0NfUFRSICgodm9sYXRpbGUgdm9pZCAqKilNRE1BX1MwX05FWFRfREVTQ19QVFIpCisjZGVmaW5lIHBNRE1BX1MwX1NUQVJUX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKU1ETUFfUzBfU1RBUlRfQUREUikKKyNkZWZpbmUgcE1ETUFfUzBfWF9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9TMF9YX0NPVU5UKQorI2RlZmluZSBwTURNQV9TMF9ZX0NPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilNRE1BX1MwX1lfQ09VTlQpCisjZGVmaW5lIHBNRE1BX1MwX1hfTU9ESUZZICgodm9sYXRpbGUgc2lnbmVkIHNob3J0ICopTURNQV9TMF9YX01PRElGWSkKKyNkZWZpbmUgcE1ETUFfUzBfWV9NT0RJRlkgKCh2b2xhdGlsZSBzaWduZWQgc2hvcnQgKilNRE1BX1MwX1lfTU9ESUZZKQorI2RlZmluZSBwTURNQV9TMF9DVVJSX0RFU0NfUFRSICgodm9sYXRpbGUgdm9pZCAqKilNRE1BX1MwX0NVUlJfREVTQ19QVFIpCisjZGVmaW5lIHBNRE1BX1MwX0NVUlJfQUREUiAoKHZvbGF0aWxlIHZvaWQgKiopTURNQV9TMF9DVVJSX0FERFIpCisjZGVmaW5lIHBNRE1BX1MwX0NVUlJfWF9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9TMF9DVVJSX1hfQ09VTlQpCisjZGVmaW5lIHBNRE1BX1MwX0NVUlJfWV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopTURNQV9TMF9DVVJSX1lfQ09VTlQpCisjZGVmaW5lIHBNRE1BX1MwX0lSUV9TVEFUVVMgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfUzBfSVJRX1NUQVRVUykKKyNkZWZpbmUgcE1ETUFfUzBfUEVSSVBIRVJBTF9NQVAgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKU1ETUFfUzBfUEVSSVBIRVJBTF9NQVApCisKKy8qIEF5c25jaHJvbm91cyBNZW1vcnkgQ29udHJvbGxlciAtIEV4dGVybmFsIEJ1cyBJbnRlcmZhY2UgVW5pdCAoMHhGRkMwIDNDMDAtMHhGRkMwIDNGRkYpICovCisjZGVmaW5lIHBFQklVX0FNR0NUTCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRUJJVV9BTUdDVEwpCisjZGVmaW5lIHBFQklVX0FNQkNUTDAgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRUJJVV9BTUJDVEwwKQorI2RlZmluZSBwRUJJVV9BTUJDVEwxICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUVCSVVfQU1CQ1RMMSkKKworLyogU3lzdGVtIEJ1cyBJbnRlcmZhY2UgVW5pdCAoMHhGRkMwIDQ4MDAtMHhGRkMwIDRGRkYpICovCisvKiAjZGVmaW5lIEwxU0JBUiAweEZGQzA0ODQwICovCS8qIEwxIFNSQU0gQmFzZSBBZGRyZXNzIFJlZ2lzdGVyICovCisvKiAjZGVmaW5lIEwxQ1NSICAweEZGQzA0ODQ0ICovCS8qIEwxIFNSQU0gQ29udHJvbCBJbml0aWFsaXphdGlvbiBSZWdpc3RlciAqLworCisvKgorICogI2RlZmluZSBwREJfQUNPTVAgKCh2b2xhdGlsZSB2b2lkICoqKURCX0FDT01QKQorICogI2RlZmluZSBwREJfQ0NPTVAgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopREJfQ0NPTVApCisgKi8KKworLyogU0RSQU0gQ29udHJvbGxlciBFeHRlcm5hbCBCdXMgSW50ZXJmYWNlIFVuaXQgKDB4RkZDMCA0QzAwLTB4RkZDMCA0RkZGKSAqLworI2RlZmluZSBwRUJJVV9TREdDVEwgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRUJJVV9TREdDVEwpCisjZGVmaW5lIHBFQklVX1NEUlJDICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilFQklVX1NEUlJDKQorI2RlZmluZSBwRUJJVV9TRFNUQVQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUVCSVVfU0RTVEFUKQorI2RlZmluZSBwRUJJVV9TREJDVEwgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKUVCSVVfU0RCQ1RMKQorCisvKiBVQVJUIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgcFVBUlRfVEhSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX1RIUikKKyNkZWZpbmUgcFVBUlRfUkJSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX1JCUikKKyNkZWZpbmUgcFVBUlRfRExMICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX0RMTCkKKyNkZWZpbmUgcFVBUlRfSUVSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX0lFUikKKyNkZWZpbmUgcFVBUlRfRExIICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX0RMSCkKKyNkZWZpbmUgcFVBUlRfSUlSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX0lJUikKKyNkZWZpbmUgcFVBUlRfTENSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX0xDUikKKyNkZWZpbmUgcFVBUlRfTUNSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX01DUikKKyNkZWZpbmUgcFVBUlRfTFNSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX0xTUikKKworLyoKKyAqICNkZWZpbmUgVUFSVF9NU1IKKyAqLworI2RlZmluZSBwVUFSVF9TQ1IgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVVBUlRfU0NSKQorI2RlZmluZSBwVUFSVF9HQ1RMICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilVQVJUX0dDVEwpCisKKy8qIFNQSSBDb250cm9sbGVyICovCisjZGVmaW5lIHBTUElfQ1RMICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUElfQ1RMKQorI2RlZmluZSBwU1BJX0ZMRyAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopU1BJX0ZMRykKKyNkZWZpbmUgcFNQSV9TVEFUICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUElfU1RBVCkKKyNkZWZpbmUgcFNQSV9UREJSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUElfVERCUikKKyNkZWZpbmUgcFNQSV9SREJSICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUElfUkRCUikKKyNkZWZpbmUgcFNQSV9CQVVEICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUElfQkFVRCkKKyNkZWZpbmUgcFNQSV9TSEFET1cgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQSV9TSEFET1cpCisKKy8qIFRJTUVSIDAsIDEsIDIgUmVnaXN0ZXJzICovCisjZGVmaW5lIHBUSU1FUjBfQ09ORklHICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilUSU1FUjBfQ09ORklHKQorI2RlZmluZSBwVElNRVIwX0NPVU5URVIgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVElNRVIwX0NPVU5URVIpCisjZGVmaW5lIHBUSU1FUjBfUEVSSU9EICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVRJTUVSMF9QRVJJT0QpCisjZGVmaW5lIHBUSU1FUjBfV0lEVEggKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVElNRVIwX1dJRFRIKQorCisjZGVmaW5lIHBUSU1FUjFfQ09ORklHICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilUSU1FUjFfQ09ORklHKQorI2RlZmluZSBwVElNRVIxX0NPVU5URVIgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVElNRVIxX0NPVU5URVIpCisjZGVmaW5lIHBUSU1FUjFfUEVSSU9EICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVRJTUVSMV9QRVJJT0QpCisjZGVmaW5lIHBUSU1FUjFfV0lEVEggKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVElNRVIxX1dJRFRIKQorCisjZGVmaW5lIHBUSU1FUjJfQ09ORklHICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilUSU1FUjJfQ09ORklHKQorI2RlZmluZSBwVElNRVIyX0NPVU5URVIgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVElNRVIyX0NPVU5URVIpCisjZGVmaW5lIHBUSU1FUjJfUEVSSU9EICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVRJTUVSMl9QRVJJT0QpCisjZGVmaW5lIHBUSU1FUjJfV0lEVEggKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVElNRVIyX1dJRFRIKQorCisjZGVmaW5lIHBUSU1FUl9FTkFCTEUgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVRJTUVSX0VOQUJMRSkKKyNkZWZpbmUgcFRJTUVSX0RJU0FCTEUgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVRJTUVSX0RJU0FCTEUpCisjZGVmaW5lIHBUSU1FUl9TVEFUVVMgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVRJTUVSX1NUQVRVUykKKworLyogU1BPUlQwIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgcFNQT1JUMF9UQ1IxICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDBfVENSMSkKKyNkZWZpbmUgcFNQT1JUMF9UQ1IyICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDBfVENSMikKKyNkZWZpbmUgcFNQT1JUMF9UQ0xLRElWICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDBfVENMS0RJVikKKyNkZWZpbmUgcFNQT1JUMF9URlNESVYgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQT1JUMF9URlNESVYpCisjZGVmaW5lIHBTUE9SVDBfVFggKCh2b2xhdGlsZSBsb25nICopU1BPUlQwX1RYKQorI2RlZmluZSBwU1BPUlQwX1JYICgodm9sYXRpbGUgbG9uZyAqKVNQT1JUMF9SWCkKKyNkZWZpbmUgcFNQT1JUMF9UWDMyICgodm9sYXRpbGUgbG9uZyAqKVNQT1JUMF9UWCkKKyNkZWZpbmUgcFNQT1JUMF9SWDMyICgodm9sYXRpbGUgbG9uZyAqKVNQT1JUMF9SWCkKKyNkZWZpbmUgcFNQT1JUMF9UWDE2ICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDBfVFgpCisjZGVmaW5lIHBTUE9SVDBfUlgxNiAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopU1BPUlQwX1JYKQorI2RlZmluZSBwU1BPUlQwX1JDUjEgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQT1JUMF9SQ1IxKQorI2RlZmluZSBwU1BPUlQwX1JDUjIgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQT1JUMF9SQ1IyKQorI2RlZmluZSBwU1BPUlQwX1JDTEtESVYgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQT1JUMF9SQ0xLRElWKQorI2RlZmluZSBwU1BPUlQwX1JGU0RJViAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopU1BPUlQwX1JGU0RJVikKKyNkZWZpbmUgcFNQT1JUMF9TVEFUICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDBfU1RBVCkKKyNkZWZpbmUgcFNQT1JUMF9DSE5MICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDBfQ0hOTCkKKyNkZWZpbmUgcFNQT1JUMF9NQ01DMSAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopU1BPUlQwX01DTUMxKQorI2RlZmluZSBwU1BPUlQwX01DTUMyICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDBfTUNNQzIpCisjZGVmaW5lIHBTUE9SVDBfTVRDUzAgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU1BPUlQwX01UQ1MwKQorI2RlZmluZSBwU1BPUlQwX01UQ1MxICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNQT1JUMF9NVENTMSkKKyNkZWZpbmUgcFNQT1JUMF9NVENTMiAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilTUE9SVDBfTVRDUzIpCisjZGVmaW5lIHBTUE9SVDBfTVRDUzMgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU1BPUlQwX01UQ1MzKQorI2RlZmluZSBwU1BPUlQwX01SQ1MwICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNQT1JUMF9NUkNTMCkKKyNkZWZpbmUgcFNQT1JUMF9NUkNTMSAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilTUE9SVDBfTVJDUzEpCisjZGVmaW5lIHBTUE9SVDBfTVJDUzIgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU1BPUlQwX01SQ1MyKQorI2RlZmluZSBwU1BPUlQwX01SQ1MzICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNQT1JUMF9NUkNTMykKKworLyogU1BPUlQxIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgcFNQT1JUMV9UQ1IxICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDFfVENSMSkKKyNkZWZpbmUgcFNQT1JUMV9UQ1IyICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDFfVENSMikKKyNkZWZpbmUgcFNQT1JUMV9UQ0xLRElWICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDFfVENMS0RJVikKKyNkZWZpbmUgcFNQT1JUMV9URlNESVYgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQT1JUMV9URlNESVYpCisjZGVmaW5lIHBTUE9SVDFfVFggKCh2b2xhdGlsZSBsb25nICopU1BPUlQxX1RYKQorI2RlZmluZSBwU1BPUlQxX1JYICgodm9sYXRpbGUgbG9uZyAqKVNQT1JUMV9SWCkKKyNkZWZpbmUgcFNQT1JUMV9UWDMyICgodm9sYXRpbGUgbG9uZyAqKVNQT1JUMV9UWCkKKyNkZWZpbmUgcFNQT1JUMV9SWDMyICgodm9sYXRpbGUgbG9uZyAqKVNQT1JUMV9SWCkKKyNkZWZpbmUgcFNQT1JUMV9UWDE2ICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDFfVFgpCisjZGVmaW5lIHBTUE9SVDFfUlgxNiAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopU1BPUlQxX1JYKQorI2RlZmluZSBwU1BPUlQxX1JDUjEgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQT1JUMV9SQ1IxKQorI2RlZmluZSBwU1BPUlQxX1JDUjIgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQT1JUMV9SQ1IyKQorI2RlZmluZSBwU1BPUlQxX1JDTEtESVYgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVNQT1JUMV9SQ0xLRElWKQorI2RlZmluZSBwU1BPUlQxX1JGU0RJViAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopU1BPUlQxX1JGU0RJVikKKyNkZWZpbmUgcFNQT1JUMV9TVEFUICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDFfU1RBVCkKKyNkZWZpbmUgcFNQT1JUMV9DSE5MICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDFfQ0hOTCkKKyNkZWZpbmUgcFNQT1JUMV9NQ01DMSAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopU1BPUlQxX01DTUMxKQorI2RlZmluZSBwU1BPUlQxX01DTUMyICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilTUE9SVDFfTUNNQzIpCisjZGVmaW5lIHBTUE9SVDFfTVRDUzAgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU1BPUlQxX01UQ1MwKQorI2RlZmluZSBwU1BPUlQxX01UQ1MxICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNQT1JUMV9NVENTMSkKKyNkZWZpbmUgcFNQT1JUMV9NVENTMiAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilTUE9SVDFfTVRDUzIpCisjZGVmaW5lIHBTUE9SVDFfTVRDUzMgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU1BPUlQxX01UQ1MzKQorI2RlZmluZSBwU1BPUlQxX01SQ1MwICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNQT1JUMV9NUkNTMCkKKyNkZWZpbmUgcFNQT1JUMV9NUkNTMSAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilTUE9SVDFfTVJDUzEpCisjZGVmaW5lIHBTUE9SVDFfTVJDUzIgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopU1BPUlQxX01SQ1MyKQorI2RlZmluZSBwU1BPUlQxX01SQ1MzICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVNQT1JUMV9NUkNTMykKKworLyogUGFyYWxsZWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UgKFBQSSkgKi8KKyNkZWZpbmUgcFBQSV9DT05UUk9MICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilQUElfQ09OVFJPTCkKKyNkZWZpbmUgcFBQSV9TVEFUVVMgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVBQSV9TVEFUVVMpCisjZGVmaW5lIHBQUElfREVMQVkgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKVBQSV9ERUxBWSkKKyNkZWZpbmUgcFBQSV9DT1VOVCAoKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopUFBJX0NPVU5UKQorI2RlZmluZSBwUFBJX0ZSQU1FICgodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilQUElfRlJBTUUpCisKKyNlbmRpZgkvKiBfQ0RFRl9CRjUzMl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvY2RlZkJGNTMzLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvY2RlZkJGNTMzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM3NTFlNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9jZGVmQkY1MzMuaApAQCAtMCwwICsxLDI0IEBACisvKgorICogY2RlZkJGNTMzLmgKKyAqCisgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSAiQ09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQorICogZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBOb24tR1BMIExpY2Vuc2UgYWxzbyBhdmFpbGFibGUgYXMgcGFydCBvZiBWaXN1YWxEU1ArKworICoKKyAqIGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9wcm9jZXNzb3JzL3Jlc291cmNlcy9jcm9zc2NvcmUvdmlzdWFsRHNwRGV2U29mdHdhcmUuaHRtbAorICoKKyAqIChjKSBDb3B5cmlnaHQgMjAwMS0yMDA1IEFuYWxvZyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKKyAqCisgKiBUaGlzIGZpbGUgdW5kZXIgc291cmNlIGNvZGUgY29udHJvbCwgcGxlYXNlIHNlbmQgYnVncyBvciBjaGFuZ2VzIHRvOgorICogZHNwdG9vbHMuc3VwcG9ydEBhbmFsb2cuY29tCisgKgorICovCisKKyNpZm5kZWYgX0NERUZCRjUzM19ICisjZGVmaW5lIF9DREVGQkY1MzNfSAorCisjaW5jbHVkZSA8YXNtL2NwdS9jZGVmQkY1MzIuaD4KKworI2VuZGlmCS8qIF9DREVGQkY1MzNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2NkZWZCRjUzeC5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2NkZWZCRjUzeC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNGVhYTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvY2RlZkJGNTN4LmgKQEAgLTAsMCArMSwzMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGNkZWZCRjUzeC5oCisgKgorICogKGMpIENvcHlyaWdodCAyMDAyLTIwMDMgQW5hbG9nIERldmljZXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfQ0RFRkJGNTN4X0gKKyNkZWZpbmUgX0NERUZCRjUzeF9ICisKKyNpZiBkZWZpbmVkKF9fQURTUEJGNTMxX18pCisJI2luY2x1ZGUgPGFzbS9jcHUvY2RlZkJGNTMxLmg+CisjZWxpZiBkZWZpbmVkKF9fQURTUEJGNTMyX18pCisJI2luY2x1ZGUgPGFzbS9jcHUvY2RlZkJGNTMyLmg+CisjZWxpZiBkZWZpbmVkKF9fQURTUEJGNTMzX18pCisJI2luY2x1ZGUgPGFzbS9jcHUvY2RlZkJGNTMzLmg+CisjZWxpZiBkZWZpbmVkKF9fQURTUEJGNTYxX18pCisJI2luY2x1ZGUgPGFzbS9jcHUvY2RlZkJGNTYxLmg+CisjZWxpZiBkZWZpbmVkKF9fQURTUEJGNTM1X18pCisJI2luY2x1ZGUgPGFzbS9jcHUvY2RlZkJGNTM1Lmg+CisjZWxpZiBkZWZpbmVkKF9fQUQ2NTMyX18pCisJI2luY2x1ZGUgPHNhbS9jcHUvY2RlZkFENjUzMi5oPgorI2Vsc2UKKwkjaWYgZGVmaW5lZChfX0FEU1BMUEJMQUNLRklOX18pCisJCSNpbmNsdWRlIDxhc20vY3B1L2NkZWZCRjUzMi5oPgorCSNlbHNlCisJCSNpbmNsdWRlIDxhc20vY3B1L2NkZWZCRjUzNS5oPgorCSNlbmRpZgorI2VuZGlmCisKKyNlbmRpZgkvKiBfQ0RFRkJGNTN4X0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9jZGVmX0xQQmxhY2tmaW4uaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9jZGVmX0xQQmxhY2tmaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjQ3MWNiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2NkZWZfTFBCbGFja2Zpbi5oCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogY2RlZl9MUEJsYWNrZmluLmgKKyAqCisgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSAiQ09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQorICogZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBOb24tR1BMIExpY2Vuc2UgYWxzbyBhdmFpbGFibGUgYXMgcGFydCBvZiBWaXN1YWxEU1ArKworICoKKyAqIGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9wcm9jZXNzb3JzL3Jlc291cmNlcy9jcm9zc2NvcmUvdmlzdWFsRHNwRGV2U29mdHdhcmUuaHRtbAorICoKKyAqIChjKSBDb3B5cmlnaHQgMjAwMS0yMDA1IEFuYWxvZyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKKyAqCisgKiBUaGlzIGZpbGUgdW5kZXIgc291cmNlIGNvZGUgY29udHJvbCwgcGxlYXNlIHNlbmQgYnVncyBvciBjaGFuZ2VzIHRvOgorICogZHNwdG9vbHMuc3VwcG9ydEBhbmFsb2cuY29tCisgKgorICovCisKKyNpZm5kZWYgX0NERUZfTFBCTEFDS0ZJTl9ICisjZGVmaW5lIF9DREVGX0xQQkxBQ0tGSU5fSAorCisvKgorICogI2lmICFkZWZpbmVkKF9fQURTUExQQkxBQ0tGSU5fXykKKyAqICN3YXJuaW5nIGNkZWZfTFBCbGFja2Zpbi5oIHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIGZvciA1MzIgY29tcGF0aWJsZSBjaGlwcy4KKyAqICNlbmRpZgorICovCisjaW5jbHVkZSA8YXNtL2NwdS9kZWZfTFBCbGFja2Zpbi5oPgorCisvKiBDYWNoZSAmIFNSQU0gTWVtb3J5ICovCisjZGVmaW5lIHBTUkFNX0JBU0VfQUREUkVTUyAoKHZvbGF0aWxlIHZvaWQgKiopU1JBTV9CQVNFX0FERFJFU1MpCisjZGVmaW5lIHBETUVNX0NPTlRST0wgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRE1FTV9DT05UUk9MKQorI2RlZmluZSBwRENQTEJfU1RBVFVTICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURDUExCX1NUQVRVUykKKyNkZWZpbmUgcERDUExCX0ZBVUxUX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKURDUExCX0ZBVUxUX0FERFIpCisKKy8qICNkZWZpbmUgTU1SX1RJTUVPVVQgMHhGRkUwMDAxMCAqLwkvKiBNZW1vcnktTWFwcGVkIFJlZ2lzdGVyIFRpbWVvdXQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgcERDUExCX0FERFIwICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSMCkKKyNkZWZpbmUgcERDUExCX0FERFIxICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSMSkKKyNkZWZpbmUgcERDUExCX0FERFIyICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSMikKKyNkZWZpbmUgcERDUExCX0FERFIzICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSMykKKyNkZWZpbmUgcERDUExCX0FERFI0ICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSNCkKKyNkZWZpbmUgcERDUExCX0FERFI1ICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSNSkKKyNkZWZpbmUgcERDUExCX0FERFI2ICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSNikKKyNkZWZpbmUgcERDUExCX0FERFI3ICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSNykKKyNkZWZpbmUgcERDUExCX0FERFI4ICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSOCkKKyNkZWZpbmUgcERDUExCX0FERFI5ICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSOSkKKyNkZWZpbmUgcERDUExCX0FERFIxMCAoKHZvbGF0aWxlIHZvaWQgKiopRENQTEJfQUREUjEwKQorI2RlZmluZSBwRENQTEJfQUREUjExICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSMTEpCisjZGVmaW5lIHBEQ1BMQl9BRERSMTIgKCh2b2xhdGlsZSB2b2lkICoqKURDUExCX0FERFIxMikKKyNkZWZpbmUgcERDUExCX0FERFIxMyAoKHZvbGF0aWxlIHZvaWQgKiopRENQTEJfQUREUjEzKQorI2RlZmluZSBwRENQTEJfQUREUjE0ICgodm9sYXRpbGUgdm9pZCAqKilEQ1BMQl9BRERSMTQpCisjZGVmaW5lIHBEQ1BMQl9BRERSMTUgKCh2b2xhdGlsZSB2b2lkICoqKURDUExCX0FERFIxNSkKKyNkZWZpbmUgcERDUExCX0RBVEEwICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURDUExCX0RBVEEwKQorI2RlZmluZSBwRENQTEJfREFUQTEgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRENQTEJfREFUQTEpCisjZGVmaW5lIHBEQ1BMQl9EQVRBMiAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilEQ1BMQl9EQVRBMikKKyNkZWZpbmUgcERDUExCX0RBVEEzICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURDUExCX0RBVEEzKQorI2RlZmluZSBwRENQTEJfREFUQTQgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRENQTEJfREFUQTQpCisjZGVmaW5lIHBEQ1BMQl9EQVRBNSAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilEQ1BMQl9EQVRBNSkKKyNkZWZpbmUgcERDUExCX0RBVEE2ICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURDUExCX0RBVEE2KQorI2RlZmluZSBwRENQTEJfREFUQTcgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRENQTEJfREFUQTcpCisjZGVmaW5lIHBEQ1BMQl9EQVRBOCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilEQ1BMQl9EQVRBOCkKKyNkZWZpbmUgcERDUExCX0RBVEE5ICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURDUExCX0RBVEE5KQorI2RlZmluZSBwRENQTEJfREFUQTEwICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURDUExCX0RBVEExMCkKKyNkZWZpbmUgcERDUExCX0RBVEExMSAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilEQ1BMQl9EQVRBMTEpCisjZGVmaW5lIHBEQ1BMQl9EQVRBMTIgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRENQTEJfREFUQTEyKQorI2RlZmluZSBwRENQTEJfREFUQTEzICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURDUExCX0RBVEExMykKKyNkZWZpbmUgcERDUExCX0RBVEExNCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilEQ1BMQl9EQVRBMTQpCisjZGVmaW5lIHBEQ1BMQl9EQVRBMTUgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRENQTEJfREFUQTE1KQorI2RlZmluZSBwRFRFU1RfQ09NTUFORCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilEVEVTVF9DT01NQU5EKQorCisvKiAjZGVmaW5lIERURVNUX0lOREVYICAgICAgICAgICAgMHhGRkUwMDMwNCAqLyAJLyogRGF0YSBUZXN0IEluZGV4IFJlZ2lzdGVyICovCisjZGVmaW5lIHBEVEVTVF9EQVRBMCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilEVEVTVF9EQVRBMCkKKyNkZWZpbmUgcERURVNUX0RBVEExICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKURURVNUX0RBVEExKQorCisvKgorICogIyBkZWZpbmUgRFRFU1RfREFUQTIJMHhGRkUwMDQwOCAgIERhdGEgVGVzdCBEYXRhIFJlZ2lzdGVyCisgKiAjZGVmaW5lIERURVNUX0RBVEEzCTB4RkZFMDA0MEMgICBEYXRhIFRlc3QgRGF0YSBSZWdpc3RlcgorICovCisjZGVmaW5lIHBJTUVNX0NPTlRST0wgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopSU1FTV9DT05UUk9MKQorI2RlZmluZSBwSUNQTEJfU1RBVFVTICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUlDUExCX1NUQVRVUykKKyNkZWZpbmUgcElDUExCX0ZBVUxUX0FERFIgKCh2b2xhdGlsZSB2b2lkICoqKUlDUExCX0ZBVUxUX0FERFIpCisjZGVmaW5lIHBJQ1BMQl9BRERSMCAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjApCisjZGVmaW5lIHBJQ1BMQl9BRERSMSAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjEpCisjZGVmaW5lIHBJQ1BMQl9BRERSMiAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjIpCisjZGVmaW5lIHBJQ1BMQl9BRERSMyAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjMpCisjZGVmaW5lIHBJQ1BMQl9BRERSNCAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjQpCisjZGVmaW5lIHBJQ1BMQl9BRERSNSAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjUpCisjZGVmaW5lIHBJQ1BMQl9BRERSNiAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjYpCisjZGVmaW5lIHBJQ1BMQl9BRERSNyAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjcpCisjZGVmaW5lIHBJQ1BMQl9BRERSOCAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjgpCisjZGVmaW5lIHBJQ1BMQl9BRERSOSAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjkpCisjZGVmaW5lIHBJQ1BMQl9BRERSMTAgKCh2b2xhdGlsZSB2b2lkICoqKUlDUExCX0FERFIxMCkKKyNkZWZpbmUgcElDUExCX0FERFIxMSAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjExKQorI2RlZmluZSBwSUNQTEJfQUREUjEyICgodm9sYXRpbGUgdm9pZCAqKilJQ1BMQl9BRERSMTIpCisjZGVmaW5lIHBJQ1BMQl9BRERSMTMgKCh2b2xhdGlsZSB2b2lkICoqKUlDUExCX0FERFIxMykKKyNkZWZpbmUgcElDUExCX0FERFIxNCAoKHZvbGF0aWxlIHZvaWQgKiopSUNQTEJfQUREUjE0KQorI2RlZmluZSBwSUNQTEJfQUREUjE1ICgodm9sYXRpbGUgdm9pZCAqKilJQ1BMQl9BRERSMTUpCisjZGVmaW5lIHBJQ1BMQl9EQVRBMCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilJQ1BMQl9EQVRBMCkKKyNkZWZpbmUgcElDUExCX0RBVEExICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUlDUExCX0RBVEExKQorI2RlZmluZSBwSUNQTEJfREFUQTIgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopSUNQTEJfREFUQTIpCisjZGVmaW5lIHBJQ1BMQl9EQVRBMyAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilJQ1BMQl9EQVRBMykKKyNkZWZpbmUgcElDUExCX0RBVEE0ICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUlDUExCX0RBVEE0KQorI2RlZmluZSBwSUNQTEJfREFUQTUgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopSUNQTEJfREFUQTUpCisjZGVmaW5lIHBJQ1BMQl9EQVRBNiAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilJQ1BMQl9EQVRBNikKKyNkZWZpbmUgcElDUExCX0RBVEE3ICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUlDUExCX0RBVEE3KQorI2RlZmluZSBwSUNQTEJfREFUQTggKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopSUNQTEJfREFUQTgpCisjZGVmaW5lIHBJQ1BMQl9EQVRBOSAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilJQ1BMQl9EQVRBOSkKKyNkZWZpbmUgcElDUExCX0RBVEExMCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilJQ1BMQl9EQVRBMTApCisjZGVmaW5lIHBJQ1BMQl9EQVRBMTEgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopSUNQTEJfREFUQTExKQorI2RlZmluZSBwSUNQTEJfREFUQTEyICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUlDUExCX0RBVEExMikKKyNkZWZpbmUgcElDUExCX0RBVEExMyAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilJQ1BMQl9EQVRBMTMpCisjZGVmaW5lIHBJQ1BMQl9EQVRBMTQgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopSUNQTEJfREFUQTE0KQorI2RlZmluZSBwSUNQTEJfREFUQTE1ICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUlDUExCX0RBVEExNSkKKyNkZWZpbmUgcElURVNUX0NPTU1BTkQgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopSVRFU1RfQ09NTUFORCkKKworLyogI2RlZmluZSBJVEVTVF9JTkRFWCAweEZGRTAxMzA0ICovCS8qIEluc3RydWN0aW9uIFRlc3QgSW5kZXggUmVnaXN0ZXIgKi8KKyNkZWZpbmUgcElURVNUX0RBVEEwICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUlURVNUX0RBVEEwKQorI2RlZmluZSBwSVRFU1RfREFUQTEgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopSVRFU1RfREFUQTEpCisKKy8qIEV2ZW50L0ludGVycnVwdCBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgcEVWVDAgKCh2b2xhdGlsZSB2b2lkICoqKUVWVDApCisjZGVmaW5lIHBFVlQxICgodm9sYXRpbGUgdm9pZCAqKilFVlQxKQorI2RlZmluZSBwRVZUMiAoKHZvbGF0aWxlIHZvaWQgKiopRVZUMikKKyNkZWZpbmUgcEVWVDMgKCh2b2xhdGlsZSB2b2lkICoqKUVWVDMpCisjZGVmaW5lIHBFVlQ0ICgodm9sYXRpbGUgdm9pZCAqKilFVlQ0KQorI2RlZmluZSBwRVZUNSAoKHZvbGF0aWxlIHZvaWQgKiopRVZUNSkKKyNkZWZpbmUgcEVWVDYgKCh2b2xhdGlsZSB2b2lkICoqKUVWVDYpCisjZGVmaW5lIHBFVlQ3ICgodm9sYXRpbGUgdm9pZCAqKilFVlQ3KQorI2RlZmluZSBwRVZUOCAoKHZvbGF0aWxlIHZvaWQgKiopRVZUOCkKKyNkZWZpbmUgcEVWVDkgKCh2b2xhdGlsZSB2b2lkICoqKUVWVDkpCisjZGVmaW5lIHBFVlQxMCAoKHZvbGF0aWxlIHZvaWQgKiopRVZUMTApCisjZGVmaW5lIHBFVlQxMSAoKHZvbGF0aWxlIHZvaWQgKiopRVZUMTEpCisjZGVmaW5lIHBFVlQxMiAoKHZvbGF0aWxlIHZvaWQgKiopRVZUMTIpCisjZGVmaW5lIHBFVlQxMyAoKHZvbGF0aWxlIHZvaWQgKiopRVZUMTMpCisjZGVmaW5lIHBFVlQxNCAoKHZvbGF0aWxlIHZvaWQgKiopRVZUMTQpCisjZGVmaW5lIHBFVlQxNSAoKHZvbGF0aWxlIHZvaWQgKiopRVZUMTUpCisjZGVmaW5lIHBJTUFTSyAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilJTUFTSykKKyNkZWZpbmUgcElQRU5EICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUlQRU5EKQorI2RlZmluZSBwSUxBVCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilJTEFUKQorCisvKiBDb3JlIFRpbWVyIFJlZ2lzdGVycyAqLworI2RlZmluZSBwVENOVEwgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVENOVEwpCisjZGVmaW5lIHBUUEVSSU9EICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVRQRVJJT0QpCisjZGVmaW5lIHBUU0NBTEUgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVFNDQUxFKQorI2RlZmluZSBwVENPVU5UICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVRDT1VOVCkKKworLyogRGVidWcvTVAvRW11bGF0aW9uIFJlZ2lzdGVycyAqLworI2RlZmluZSBwRFNQSUQgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopRFNQSUQpCisjZGVmaW5lIHBEQkdDVEwgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopREJHQ1RMKQorI2RlZmluZSBwREJHU1RBVCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilEQkdTVEFUKQorI2RlZmluZSBwRU1VREFUICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKUVNVURBVCkKKworLyogVHJhY2UgQnVmZmVyIFJlZ2lzdGVycyAqLworI2RlZmluZSBwVEJVRkNUTCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilUQlVGQ1RMKQorI2RlZmluZSBwVEJVRlNUQVQgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopVEJVRlNUQVQpCisjZGVmaW5lIHBUQlVGICgodm9sYXRpbGUgdm9pZCAqKilUQlVGKQorCisvKiBXYXRjaCBQb2ludCBDb250cm9sIFJlZ2lzdGVycyAqLworI2RlZmluZSBwV1BJQUNUTCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilXUElBQ1RMKQorI2RlZmluZSBwV1BJQTAgKCh2b2xhdGlsZSB2b2lkICoqKVdQSUEwKQorI2RlZmluZSBwV1BJQTEgKCh2b2xhdGlsZSB2b2lkICoqKVdQSUExKQorI2RlZmluZSBwV1BJQTIgKCh2b2xhdGlsZSB2b2lkICoqKVdQSUEyKQorI2RlZmluZSBwV1BJQTMgKCh2b2xhdGlsZSB2b2lkICoqKVdQSUEzKQorI2RlZmluZSBwV1BJQTQgKCh2b2xhdGlsZSB2b2lkICoqKVdQSUE0KQorI2RlZmluZSBwV1BJQTUgKCh2b2xhdGlsZSB2b2lkICoqKVdQSUE1KQorI2RlZmluZSBwV1BJQUNOVDAgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopV1BJQUNOVDApCisjZGVmaW5lIHBXUElBQ05UMSAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilXUElBQ05UMSkKKyNkZWZpbmUgcFdQSUFDTlQyICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVdQSUFDTlQyKQorI2RlZmluZSBwV1BJQUNOVDMgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopV1BJQUNOVDMpCisjZGVmaW5lIHBXUElBQ05UNCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilXUElBQ05UNCkKKyNkZWZpbmUgcFdQSUFDTlQ1ICgodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKVdQSUFDTlQ1KQorI2RlZmluZSBwV1BEQUNUTCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilXUERBQ1RMKQorI2RlZmluZSBwV1BEQTAgKCh2b2xhdGlsZSB2b2lkICoqKVdQREEwKQorI2RlZmluZSBwV1BEQTEgKCh2b2xhdGlsZSB2b2lkICoqKVdQREExKQorI2RlZmluZSBwV1BEQUNOVDAgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopV1BEQUNOVDApCisjZGVmaW5lIHBXUERBQ05UMSAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilXUERBQ05UMSkKKyNkZWZpbmUgcFdQU1RBVCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilXUFNUQVQpCisKKy8qIFBlcmZvcm1hbmNlIE1vbml0b3IgUmVnaXN0ZXJzICovCisjZGVmaW5lIHBQRkNUTCAoKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilQRkNUTCkKKyNkZWZpbmUgcFBGQ05UUjAgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopUEZDTlRSMCkKKyNkZWZpbmUgcFBGQ05UUjEgKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopUEZDTlRSMSkKKworLyogI2RlZmluZSBJUFJJTyAweEZGRTAyMTEwICovIC8qIENvcmUgSW50ZXJydXB0IFByaW9yaXR5IFJlZ2lzdGVyICovCisKKyNlbmRpZgkvKiBfQ0RFRl9MUEJMQUNLRklOX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9kZWZCRjUzMS5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2RlZkJGNTMxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3Y2Q1YQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9kZWZCRjUzMS5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBkZWZCRjUzMS5oCisgKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLiBTZWUgdGhlIGZpbGUgIkNPUFlJTkciIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUKKyAqIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogTm9uLUdQTCBMaWNlbnNlIGFsc28gYXZhaWxhYmxlIGFzIHBhcnQgb2YgVmlzdWFsRFNQKysKKyAqCisgKiBodHRwOi8vd3d3LmFuYWxvZy5jb20vcHJvY2Vzc29ycy9yZXNvdXJjZXMvY3Jvc3Njb3JlL3Zpc3VhbERzcERldlNvZnR3YXJlLmh0bWwKKyAqCisgKiAoYykgQ29weXJpZ2h0IDIwMDEtMjAwNSBBbmFsb2cgRGV2aWNlcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCisgKgorICogVGhpcyBmaWxlIHVuZGVyIHNvdXJjZSBjb2RlIGNvbnRyb2wsIHBsZWFzZSBzZW5kIGJ1Z3Mgb3IgY2hhbmdlcyB0bzoKKyAqIGRzcHRvb2xzLnN1cHBvcnRAYW5hbG9nLmNvbQorICoKKyAqLworCisjaWZuZGVmIF9ERUZCRjUzMV9ICisjZGVmaW5lIF9ERUZCRjUzMV9ICisKKyNpbmNsdWRlIDxkZWZCRjUzMi5oPgorCisjZW5kaWYgLyogX0RFRkJGNTMxX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9kZWZCRjUzMi5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2RlZkJGNTMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhNWZlNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9kZWZCRjUzMi5oCkBAIC0wLDAgKzEsMTE1OSBAQAorLyoKKyAqIGRlZkJGNTMyLmgKKyAqCisgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSAiQ09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQorICogZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBOb24tR1BMIExpY2Vuc2UgYWxzbyBhdmFpbGFibGUgYXMgcGFydCBvZiBWaXN1YWxEU1ArKworICoKKyAqIGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9wcm9jZXNzb3JzL3Jlc291cmNlcy9jcm9zc2NvcmUvdmlzdWFsRHNwRGV2U29mdHdhcmUuaHRtbAorICoKKyAqIChjKSBDb3B5cmlnaHQgMjAwMS0yMDA1IEFuYWxvZyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKKyAqCisgKiBUaGlzIGZpbGUgdW5kZXIgc291cmNlIGNvZGUgY29udHJvbCwgcGxlYXNlIHNlbmQgYnVncyBvciBjaGFuZ2VzIHRvOgorICogZHNwdG9vbHMuc3VwcG9ydEBhbmFsb2cuY29tCisgKgorICovCisKKy8qIFNZU1RFTSAmIE1NIFJFR0lTVEVSIEJJVCAmIEFERFJFU1MgREVGSU5JVElPTlMgRk9SIEFEU1AtQkY1MzIgKi8KKworI2lmbmRlZiBfREVGX0JGNTMyX0gKKyNkZWZpbmUgX0RFRl9CRjUzMl9ICisKKy8qCisgKiAjaWYgIWRlZmluZWQoX19BRFNQTFBCTEFDS0ZJTl9fKQorICogI3dhcm5pbmcgZGVmQkY1MzIuaCBzaG91bGQgb25seSBiZSBpbmNsdWRlZCBmb3IgNTMyIGNvbXBhdGlibGUgY2hpcHMKKyAqICNlbmRpZgorICovCisKKy8qIGluY2x1ZGUgYWxsIENvcmUgcmVnaXN0ZXJzIGFuZCBiaXQgZGVmaW5pdGlvbnMgKi8KKyNpbmNsdWRlIDxhc20vY3B1L2RlZl9MUEJsYWNrZmluLmg+CisKKy8qIEhlbHBlciBtYWNyb3MKKyAqIHVzYWdlOgorICogIFAwLkggPSBISShVQVJUX1RIUik7CisgKiAgUDAuTCA9IExPKFVBUlRfVEhSKTsKKyAqLworCisjZGVmaW5lIExPKGNvbjMyKQkJKChjb24zMikgJiAweEZGRkYpCisjZGVmaW5lIGxvKGNvbjMyKQkJKChjb24zMikgJiAweEZGRkYpCisjZGVmaW5lIEhJKGNvbjMyKQkJKCgoY29uMzIpID4+IDE2KSAmIDB4RkZGRikKKyNkZWZpbmUgaGkoY29uMzIpCQkoKChjb24zMikgPj4gMTYpICYgMHhGRkZGKQorCisvKgorICogU3lzdGVtIE1NUiBSZWdpc3RlciBNYXAKKyAqLworCisvKiBDbG9jayBhbmQgU3lzdGVtIENvbnRyb2wgKDB4RkZDMDAwMDAgLSAweEZGQzAwMEZGKSAqLworI2RlZmluZSBQTExfQ1RMCQkJMHhGRkMwMDAwMAkvKiBQTEwgQ29udHJvbCByZWdpc3RlciAoMTYtYml0KSAqLworI2RlZmluZSBQTExfRElWCQkJMHhGRkMwMDAwNAkvKiBQTEwgRGl2aWRlIFJlZ2lzdGVyICgxNi1iaXQpICovCisjZGVmaW5lIFZSX0NUTAkJCTB4RkZDMDAwMDgJLyogVm9sdGFnZSBSZWd1bGF0b3IgQ29udHJvbCBSZWdpc3RlciAoMTYtYml0KSAqLworI2RlZmluZSBQTExfU1RBVAkJMHhGRkMwMDAwQwkvKiBQTEwgU3RhdHVzIHJlZ2lzdGVyICgxNi1iaXQpICovCisjZGVmaW5lIFBMTF9MT0NLQ05UCQkweEZGQzAwMDEwCS8qIFBMTCBMb2NrIENvdW50IHJlZ2lzdGVyICgxNi1iaXQpICovCisjZGVmaW5lCUNISVBJRAkJCTB4RkZDMDAwMTQJLyogQ2hpcCBJRCByZWdpc3RlciAoMzItYml0KQkqLworI2RlZmluZSBTV1JTVAkJCTB4RkZDMDAxMDAJLyogU29mdHdhcmUgUmVzZXQgUmVnaXN0ZXIgKDE2LWJpdCkgKi8KKyNkZWZpbmUgU1lTQ1IJCQkweEZGQzAwMTA0CS8qIFN5c3RlbSBDb25maWd1cmF0aW9uIHJlZ2lzdGVyICovCisKKy8qIFN5c3RlbSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoMHhGRkMwMDEwMCAtIDB4RkZDMDAxRkYpICovCisjZGVmaW5lIFNJQ19SVkVDVAkJMHhGRkMwMDEwOAkvKiBJbnRlcnJ1cHQgUmVzZXQgVmVjdG9yIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU0lDX0lNQVNLCQkweEZGQzAwMTBDCS8qIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyICovCisjZGVmaW5lIFNJQ19JQVIwCQkweEZGQzAwMTEwCS8qIEludGVycnVwdCBBc3NpZ25tZW50IFJlZ2lzdGVyIDAgKi8KKyNkZWZpbmUgU0lDX0lBUjEJCTB4RkZDMDAxMTQJLyogSW50ZXJydXB0IEFzc2lnbm1lbnQgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBTSUNfSUFSMgkJMHhGRkMwMDExOAkvKiBJbnRlcnJ1cHQgQXNzaWdubWVudCBSZWdpc3RlciAyICovCisjZGVmaW5lIFNJQ19JU1IJCQkweEZGQzAwMTIwCS8qIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU0lDX0lXUgkJCTB4RkZDMDAxMjQJLyogSW50ZXJydXB0IFdha2V1cCBSZWdpc3RlciAqLworCisvKiBXYXRjaGRvZyBUaW1lciAoMHhGRkMwMDIwMCAtIDB4RkZDMDAyRkYpICovCisjZGVmaW5lIFdET0dfQ1RMCQkweEZGQzAwMjAwCS8qIFdhdGNoZG9nIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgV0RPR19DTlQJCTB4RkZDMDAyMDQJLyogV2F0Y2hkb2cgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgV0RPR19TVEFUCQkweEZGQzAwMjA4CS8qIFdhdGNoZG9nIFN0YXR1cyBSZWdpc3RlciAqLworCisvKiBSZWFsIFRpbWUgQ2xvY2sgKDB4RkZDMDAzMDAgLSAweEZGQzAwM0ZGKSAqLworI2RlZmluZSBSVENfU1RBVAkJMHhGRkMwMDMwMAkvKiBSVEMgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFJUQ19JQ1RMCQkweEZGQzAwMzA0CS8qIFJUQyBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBSVENfSVNUQVQJCTB4RkZDMDAzMDgJLyogUlRDIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUlRDX1NXQ05UCQkweEZGQzAwMzBDCS8qIFJUQyBTdG9wd2F0Y2ggQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUlRDX0FMQVJNCQkweEZGQzAwMzEwCS8qIFJUQyBBbGFybSBUaW1lIFJlZ2lzdGVyICovCisjZGVmaW5lIFJUQ19GQVNUCQkweEZGQzAwMzE0CS8qIFJUQyBQcmVzY2FsZXIgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIFJUQ19QUkVOCQkweEZGQzAwMzE0CS8qIFJUQyBQcmVzY2FsZXIgRW5hYmxlIFJlZ2lzdGVyIChhbHRlcm5hdGUgbWFjcm8pICovCisKKy8qIFVBUlQgQ29udHJvbGxlciAoMHhGRkMwMDQwMCAtIDB4RkZDMDA0RkYpICovCisjZGVmaW5lIFVBUlRfVEhSCQkweEZGQzAwNDAwCS8qIFRyYW5zbWl0IEhvbGRpbmcgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUFSVF9SQlIJCTB4RkZDMDA0MDAJLyogUmVjZWl2ZSBCdWZmZXIgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUFSVF9ETEwJCTB4RkZDMDA0MDAJLyogRGl2aXNvciBMYXRjaCAoTG93LUJ5dGUpICovCisjZGVmaW5lIFVBUlRfSUVSCQkweEZGQzAwNDA0CS8qIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUFSVF9ETEgJCTB4RkZDMDA0MDQJLyogRGl2aXNvciBMYXRjaCAoSGlnaC1CeXRlKSAqLworI2RlZmluZSBVQVJUX0lJUgkJMHhGRkMwMDQwOAkvKiBJbnRlcnJ1cHQgSWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUFSVF9MQ1IJCTB4RkZDMDA0MEMJLyogTGluZSBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFVBUlRfTUNSCQkweEZGQzAwNDEwCS8qIE1vZGVtIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVUFSVF9MU1IJCTB4RkZDMDA0MTQJLyogTGluZSBTdGF0dXMgUmVnaXN0ZXIgKi8KKy8qICNkZWZpbmUgVUFSVF9NU1IgMHhGRkMwMDQxOCAqLwkvKiBNb2RlbSBTdGF0dXMgUmVnaXN0ZXIgKFVOVVNFRCBpbiBBRFNQLUJGNTMyKSAqLworI2RlZmluZSBVQVJUX1NDUgkJMHhGRkMwMDQxQwkvKiBTQ1IgU2NyYXRjaCBSZWdpc3RlciAqLworI2RlZmluZSBVQVJUX0dDVEwJCTB4RkZDMDA0MjQJLyogR2xvYmFsIENvbnRyb2wgUmVnaXN0ZXIgKi8KKworLyogU1BJIENvbnRyb2xsZXIgKDB4RkZDMDA1MDAgLSAweEZGQzAwNUZGKSAqLworI2RlZmluZSBTUElfQ1RMCQkJMHhGRkMwMDUwMAkvKiBTUEkgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBTUElfRkxHCQkJMHhGRkMwMDUwNAkvKiBTUEkgRmxhZyByZWdpc3RlciAqLworI2RlZmluZSBTUElfU1RBVAkJMHhGRkMwMDUwOAkvKiBTUEkgU3RhdHVzIHJlZ2lzdGVyICovCisjZGVmaW5lIFNQSV9UREJSCQkweEZGQzAwNTBDCS8qIFNQSSBUcmFuc21pdCBEYXRhIEJ1ZmZlciBSZWdpc3RlciAqLworI2RlZmluZSBTUElfUkRCUgkJMHhGRkMwMDUxMAkvKiBTUEkgUmVjZWl2ZSBEYXRhIEJ1ZmZlciBSZWdpc3RlciAqLworI2RlZmluZSBTUElfQkFVRAkJMHhGRkMwMDUxNAkvKiBTUEkgQmF1ZCByYXRlIFJlZ2lzdGVyICovCisjZGVmaW5lIFNQSV9TSEFET1cJCTB4RkZDMDA1MTgJLyogU1BJX1JEQlIgU2hhZG93IFJlZ2lzdGVyICovCisKKy8qIFRJTUVSIDAsIDEsIDIgUmVnaXN0ZXJzICgweEZGQzAwNjAwIC0gMHhGRkMwMDZGRikgKi8KKyNkZWZpbmUgVElNRVIwX0NPTkZJRwkJMHhGRkMwMDYwMAkvKiBUaW1lciAwIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVElNRVIwX0NPVU5URVIJCTB4RkZDMDA2MDQJLyogVGltZXIgMCBDb3VudGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIFRJTUVSMF9QRVJJT0QJCTB4RkZDMDA2MDgJLyogVGltZXIgMCBQZXJpb2QgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVElNRVIwX1dJRFRICQkweEZGQzAwNjBDCS8qIFRpbWVyIDAgV2lkdGggUmVnaXN0ZXIgKi8KKworI2RlZmluZSBUSU1FUjFfQ09ORklHCQkweEZGQzAwNjEwCS8qICBUaW1lciAxIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVElNRVIxX0NPVU5URVIJCTB4RkZDMDA2MTQJLyogIFRpbWVyIDEgQ291bnRlciBSZWdpc3RlciAqLworI2RlZmluZSBUSU1FUjFfUEVSSU9ECQkweEZGQzAwNjE4CS8qICBUaW1lciAxIFBlcmlvZCBSZWdpc3RlciAqLworI2RlZmluZSBUSU1FUjFfV0lEVEgJCTB4RkZDMDA2MUMJLyogIFRpbWVyIDEgV2lkdGggUmVnaXN0ZXIgKi8KKworI2RlZmluZSBUSU1FUjJfQ09ORklHCQkweEZGQzAwNjIwCS8qIFRpbWVyIDIgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBUSU1FUjJfQ09VTlRFUgkJMHhGRkMwMDYyNAkvKiBUaW1lciAyIENvdW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVElNRVIyX1BFUklPRAkJMHhGRkMwMDYyOAkvKiBUaW1lciAyIFBlcmlvZCBSZWdpc3RlciAqLworI2RlZmluZSBUSU1FUjJfV0lEVEgJCTB4RkZDMDA2MkMJLyogVGltZXIgMiBXaWR0aCBSZWdpc3RlciAqLworCisjZGVmaW5lIFRJTUVSX0VOQUJMRQkJMHhGRkMwMDY0MAkvKiBUaW1lciBFbmFibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVElNRVJfRElTQUJMRQkJMHhGRkMwMDY0NAkvKiBUaW1lciBEaXNhYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIFRJTUVSX1NUQVRVUwkJMHhGRkMwMDY0OAkvKiBUaW1lciBTdGF0dXMgUmVnaXN0ZXIgKi8KKworLyogR2VuZXJhbCBQdXJwb3NlIElPICgweEZGQzAwNzAwIC0gMHhGRkMwMDdGRikgKi8KKyNkZWZpbmUgRklPX0ZMQUdfRAkJMHhGRkMwMDcwMAkvKiBGbGFnIE1hc2sgdG8gZGlyZWN0bHkgc3BlY2lmeSBzdGF0ZSBvZiBwaW5zICovCisjZGVmaW5lIEZJT19GTEFHX0MJCTB4RkZDMDA3MDQJLyogUGVyaXBoZXJhbCBJbnRlcnJ1cHQgRmxhZyBSZWdpc3RlciAoY2xlYXIpICovCisjZGVmaW5lIEZJT19GTEFHX1MJCTB4RkZDMDA3MDgJLyogUGVyaXBoZXJhbCBJbnRlcnJ1cHQgRmxhZyBSZWdpc3RlciAoc2V0KSAqLworI2RlZmluZSBGSU9fRkxBR19UCQkweEZGQzAwNzBDCS8qIEZsYWcgTWFzayB0byBkaXJlY3RseSB0b2dnbGUgc3RhdGUgb2YgcGlucyAqLworI2RlZmluZSBGSU9fTUFTS0FfRAkJMHhGRkMwMDcxMAkvKiBGbGFnIE1hc2sgSW50ZXJydXB0IEEgUmVnaXN0ZXIgKHNldCBkaXJlY3RseSkgKi8KKyNkZWZpbmUgRklPX01BU0tBX0MJCTB4RkZDMDA3MTQJLyogRmxhZyBNYXNrIEludGVycnVwdCBBIFJlZ2lzdGVyIChjbGVhcikgKi8KKyNkZWZpbmUgRklPX01BU0tBX1MJCTB4RkZDMDA3MTgJLyogRmxhZyBNYXNrIEludGVycnVwdCBBIFJlZ2lzdGVyIChzZXQpICovCisjZGVmaW5lIEZJT19NQVNLQV9UCQkweEZGQzAwNzFDCS8qIEZsYWcgTWFzayBJbnRlcnJ1cHQgQSBSZWdpc3RlciAodG9nZ2xlKSAqLworI2RlZmluZSBGSU9fTUFTS0JfRAkJMHhGRkMwMDcyMAkvKiBGbGFnIE1hc2sgSW50ZXJydXB0IEIgUmVnaXN0ZXIgKHNldCBkaXJlY3RseSkgKi8KKyNkZWZpbmUgRklPX01BU0tCX0MJCTB4RkZDMDA3MjQJLyogRmxhZyBNYXNrIEludGVycnVwdCBCIFJlZ2lzdGVyIChjbGVhcikgKi8KKyNkZWZpbmUgRklPX01BU0tCX1MJCTB4RkZDMDA3MjgJLyogRmxhZyBNYXNrIEludGVycnVwdCBCIFJlZ2lzdGVyIChzZXQpICovCisjZGVmaW5lIEZJT19NQVNLQl9UCQkweEZGQzAwNzJDCS8qIEZsYWcgTWFzayBJbnRlcnJ1cHQgQiBSZWdpc3RlciAodG9nZ2xlKSAqLworI2RlZmluZSBGSU9fRElSCQkJMHhGRkMwMDczMAkvKiBQZXJpcGhlcmFsIEZsYWcgRGlyZWN0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lIEZJT19QT0xBUgkJMHhGRkMwMDczNAkvKiBGbGFnIFNvdXJjZSBQb2xhcml0eSBSZWdpc3RlciAqLworI2RlZmluZSBGSU9fRURHRQkJMHhGRkMwMDczOAkvKiBGbGFnIFNvdXJjZSBTZW5zaXRpdml0eSBSZWdpc3RlciAqLworI2RlZmluZSBGSU9fQk9USAkJMHhGRkMwMDczQwkvKiBGbGFnIFNldCBvbiBCT1RIIEVkZ2VzIFJlZ2lzdGVyICovCisjZGVmaW5lIEZJT19JTkVOCQkweEZGQzAwNzQwCS8qIEZsYWcgSW5wdXQgRW5hYmxlIFJlZ2lzdGVyICovCisKKy8qIFNQT1JUMCBDb250cm9sbGVyICgweEZGQzAwODAwIC0gMHhGRkMwMDhGRikgKi8KKyNkZWZpbmUgU1BPUlQwX1RDUjEJCTB4RkZDMDA4MDAJLyogU1BPUlQwIFRyYW5zbWl0IENvbmZpZ3VyYXRpb24gMSBSZWdpc3RlciAqLworI2RlZmluZSBTUE9SVDBfVENSMgkJMHhGRkMwMDgwNAkvKiBTUE9SVDAgVHJhbnNtaXQgQ29uZmlndXJhdGlvbiAyIFJlZ2lzdGVyICovCisjZGVmaW5lIFNQT1JUMF9UQ0xLRElWCQkweEZGQzAwODA4CS8qIFNQT1JUMCBUcmFuc21pdCBDbG9jayBEaXZpZGVyICovCisjZGVmaW5lIFNQT1JUMF9URlNESVYJCTB4RkZDMDA4MEMJLyogU1BPUlQwIFRyYW5zbWl0IEZyYW1lIFN5bmMgRGl2aWRlciAqLworI2RlZmluZSBTUE9SVDBfVFgJCTB4RkZDMDA4MTAJLyogU1BPUlQwIFRYIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1BPUlQwX1JYCQkweEZGQzAwODE4CS8qIFNQT1JUMCBSWCBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFNQT1JUMF9SQ1IxCQkweEZGQzAwODIwCS8qIFNQT1JUMCBUcmFuc21pdCBDb25maWd1cmF0aW9uIDEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1BPUlQwX1JDUjIJCTB4RkZDMDA4MjQJLyogU1BPUlQwIFRyYW5zbWl0IENvbmZpZ3VyYXRpb24gMiBSZWdpc3RlciAqLworI2RlZmluZSBTUE9SVDBfUkNMS0RJVgkJMHhGRkMwMDgyOAkvKiBTUE9SVDAgUmVjZWl2ZSBDbG9jayBEaXZpZGVyICovCisjZGVmaW5lIFNQT1JUMF9SRlNESVYJCTB4RkZDMDA4MkMJLyogU1BPUlQwIFJlY2VpdmUgRnJhbWUgU3luYyBEaXZpZGVyICovCisjZGVmaW5lIFNQT1JUMF9TVEFUCQkweEZGQzAwODMwCS8qIFNQT1JUMCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1BPUlQwX0NITkwJCTB4RkZDMDA4MzQJLyogU1BPUlQwIEN1cnJlbnQgQ2hhbm5lbCBSZWdpc3RlciAqLworI2RlZmluZSBTUE9SVDBfTUNNQzEJCTB4RkZDMDA4MzgJLyogU1BPUlQwIE11bHRpLUNoYW5uZWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxICovCisjZGVmaW5lIFNQT1JUMF9NQ01DMgkJMHhGRkMwMDgzQwkvKiBTUE9SVDAgTXVsdGktQ2hhbm5lbCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgU1BPUlQwX01UQ1MwCQkweEZGQzAwODQwCS8qIFNQT1JUMCBNdWx0aS1DaGFubmVsIFRyYW5zbWl0IFNlbGVjdCBSZWdpc3RlciAwICovCisjZGVmaW5lIFNQT1JUMF9NVENTMQkJMHhGRkMwMDg0NAkvKiBTUE9SVDAgTXVsdGktQ2hhbm5lbCBUcmFuc21pdCBTZWxlY3QgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBTUE9SVDBfTVRDUzIJCTB4RkZDMDA4NDgJLyogU1BPUlQwIE11bHRpLUNoYW5uZWwgVHJhbnNtaXQgU2VsZWN0IFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgU1BPUlQwX01UQ1MzCQkweEZGQzAwODRDCS8qIFNQT1JUMCBNdWx0aS1DaGFubmVsIFRyYW5zbWl0IFNlbGVjdCBSZWdpc3RlciAzICovCisjZGVmaW5lIFNQT1JUMF9NUkNTMAkJMHhGRkMwMDg1MAkvKiBTUE9SVDAgTXVsdGktQ2hhbm5lbCBSZWNlaXZlIFNlbGVjdCBSZWdpc3RlciAwICovCisjZGVmaW5lIFNQT1JUMF9NUkNTMQkJMHhGRkMwMDg1NAkvKiBTUE9SVDAgTXVsdGktQ2hhbm5lbCBSZWNlaXZlIFNlbGVjdCBSZWdpc3RlciAxICovCisjZGVmaW5lIFNQT1JUMF9NUkNTMgkJMHhGRkMwMDg1OAkvKiBTUE9SVDAgTXVsdGktQ2hhbm5lbCBSZWNlaXZlIFNlbGVjdCBSZWdpc3RlciAyICovCisjZGVmaW5lIFNQT1JUMF9NUkNTMwkJMHhGRkMwMDg1QwkvKiBTUE9SVDAgTXVsdGktQ2hhbm5lbCBSZWNlaXZlIFNlbGVjdCBSZWdpc3RlciAzICovCisKKy8qIFNQT1JUMSBDb250cm9sbGVyICgweEZGQzAwOTAwIC0gMHhGRkMwMDlGRikgKi8KKyNkZWZpbmUgU1BPUlQxX1RDUjEJCTB4RkZDMDA5MDAJLyogU1BPUlQxIFRyYW5zbWl0IENvbmZpZ3VyYXRpb24gMSBSZWdpc3RlciAqLworI2RlZmluZSBTUE9SVDFfVENSMgkJMHhGRkMwMDkwNAkvKiBTUE9SVDEgVHJhbnNtaXQgQ29uZmlndXJhdGlvbiAyIFJlZ2lzdGVyICovCisjZGVmaW5lIFNQT1JUMV9UQ0xLRElWCQkweEZGQzAwOTA4CS8qIFNQT1JUMSBUcmFuc21pdCBDbG9jayBEaXZpZGVyICovCisjZGVmaW5lIFNQT1JUMV9URlNESVYJCTB4RkZDMDA5MEMJLyogU1BPUlQxIFRyYW5zbWl0IEZyYW1lIFN5bmMgRGl2aWRlciAqLworI2RlZmluZSBTUE9SVDFfVFgJCTB4RkZDMDA5MTAJLyogU1BPUlQxIFRYIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1BPUlQxX1JYCQkweEZGQzAwOTE4CS8qIFNQT1JUMSBSWCBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIFNQT1JUMV9SQ1IxCQkweEZGQzAwOTIwCS8qIFNQT1JUMSBUcmFuc21pdCBDb25maWd1cmF0aW9uIDEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1BPUlQxX1JDUjIJCTB4RkZDMDA5MjQJLyogU1BPUlQxIFRyYW5zbWl0IENvbmZpZ3VyYXRpb24gMiBSZWdpc3RlciAqLworI2RlZmluZSBTUE9SVDFfUkNMS0RJVgkJMHhGRkMwMDkyOAkvKiBTUE9SVDEgUmVjZWl2ZSBDbG9jayBEaXZpZGVyICovCisjZGVmaW5lIFNQT1JUMV9SRlNESVYJCTB4RkZDMDA5MkMJLyogU1BPUlQxIFJlY2VpdmUgRnJhbWUgU3luYyBEaXZpZGVyICovCisjZGVmaW5lIFNQT1JUMV9TVEFUCQkweEZGQzAwOTMwCS8qIFNQT1JUMSBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgU1BPUlQxX0NITkwJCTB4RkZDMDA5MzQJLyogU1BPUlQxIEN1cnJlbnQgQ2hhbm5lbCBSZWdpc3RlciAqLworI2RlZmluZSBTUE9SVDFfTUNNQzEJCTB4RkZDMDA5MzgJLyogU1BPUlQxIE11bHRpLUNoYW5uZWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxICovCisjZGVmaW5lIFNQT1JUMV9NQ01DMgkJMHhGRkMwMDkzQwkvKiBTUE9SVDEgTXVsdGktQ2hhbm5lbCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgU1BPUlQxX01UQ1MwCQkweEZGQzAwOTQwCS8qIFNQT1JUMSBNdWx0aS1DaGFubmVsIFRyYW5zbWl0IFNlbGVjdCBSZWdpc3RlciAwICovCisjZGVmaW5lIFNQT1JUMV9NVENTMQkJMHhGRkMwMDk0NAkvKiBTUE9SVDEgTXVsdGktQ2hhbm5lbCBUcmFuc21pdCBTZWxlY3QgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBTUE9SVDFfTVRDUzIJCTB4RkZDMDA5NDgJLyogU1BPUlQxIE11bHRpLUNoYW5uZWwgVHJhbnNtaXQgU2VsZWN0IFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgU1BPUlQxX01UQ1MzCQkweEZGQzAwOTRDCS8qIFNQT1JUMSBNdWx0aS1DaGFubmVsIFRyYW5zbWl0IFNlbGVjdCBSZWdpc3RlciAzICovCisjZGVmaW5lIFNQT1JUMV9NUkNTMAkJMHhGRkMwMDk1MAkvKiBTUE9SVDEgTXVsdGktQ2hhbm5lbCBSZWNlaXZlIFNlbGVjdCBSZWdpc3RlciAwICovCisjZGVmaW5lIFNQT1JUMV9NUkNTMQkJMHhGRkMwMDk1NAkvKiBTUE9SVDEgTXVsdGktQ2hhbm5lbCBSZWNlaXZlIFNlbGVjdCBSZWdpc3RlciAxICovCisjZGVmaW5lIFNQT1JUMV9NUkNTMgkJMHhGRkMwMDk1OAkvKiBTUE9SVDEgTXVsdGktQ2hhbm5lbCBSZWNlaXZlIFNlbGVjdCBSZWdpc3RlciAyICovCisjZGVmaW5lIFNQT1JUMV9NUkNTMwkJMHhGRkMwMDk1QwkvKiBTUE9SVDEgTXVsdGktQ2hhbm5lbCBSZWNlaXZlIFNlbGVjdCBSZWdpc3RlciAzICovCisKKy8qIEFzeW5jaHJvbm91cyBNZW1vcnkgQ29udHJvbGxlciAtIEV4dGVybmFsIEJ1cyBJbnRlcmZhY2UgVW5pdCAqLworI2RlZmluZSBFQklVX0FNR0NUTAkJMHhGRkMwMEEwMAkvKiBBc3luY2hyb25vdXMgTWVtb3J5IEdsb2JhbCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIEVCSVVfQU1CQ1RMMAkJMHhGRkMwMEEwNAkvKiBBc3luY2hyb25vdXMgTWVtb3J5IEJhbmsgQ29udHJvbCBSZWdpc3RlciAwICovCisjZGVmaW5lIEVCSVVfQU1CQ1RMMQkJMHhGRkMwMEEwOAkvKiBBc3luY2hyb25vdXMgTWVtb3J5IEJhbmsgQ29udHJvbCBSZWdpc3RlciAxICovCisKKy8qIFNEUkFNIENvbnRyb2xsZXIgRXh0ZXJuYWwgQnVzIEludGVyZmFjZSBVbml0ICgweEZGQzAwQTAwIC0gMHhGRkMwMEFGRikgKi8KKyNkZWZpbmUgRUJJVV9TREdDVEwJCTB4RkZDMDBBMTAJLyogU0RSQU0gR2xvYmFsIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRUJJVV9TREJDVEwJCTB4RkZDMDBBMTQJLyogU0RSQU0gQmFuayBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIEVCSVVfU0RSUkMJCTB4RkZDMDBBMTgJLyogU0RSQU0gUmVmcmVzaCBSYXRlIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRUJJVV9TRFNUQVQJCTB4RkZDMDBBMUMJLyogU0RSQU0gU3RhdHVzIFJlZ2lzdGVyICovCisKKy8qIERNQSBUZXN0IFJlZ2lzdGVycyAqLworI2RlZmluZSBETUFfQ0NPTVAJCTB4RkZDMDBCMDQJLyogRE1BIEN5Y2xlIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQV9BQ09NUAkJMHhGRkMwMEIwMAkvKiBEZWJ1ZyBDb21wYXJlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BX01JU1IJCTB4RkZDMDBCMDgJLyogTUlTUiBSZWdpc3RlciAqLworI2RlZmluZSBETUFfVENQRVIJCTB4RkZDMDBCMEMJLyogVHJhZmZpYyBDb250cm9sIFBlcmlvZHMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BX1RDQ05UCQkweEZGQzAwQjEwCS8qIFRyYWZmaWMgQ29udHJvbCBDdXJyZW50IENvdW50cyBSZWdpc3RlciAqLworI2RlZmluZSBETUFfVE1PREUJCTB4RkZDMDBCMTQJLyogRE1BIFRlc3QgTW9kZXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BX1RNQ0hBTgkJMHhGRkMwMEIxOAkvKiBETUEgVGVzdG1vZGUgU2VsZWN0ZWQgQ2hhbm5lbCBSZWdpc3RlciAqLworI2RlZmluZSBETUFfVE1TVEFUCQkweEZGQzAwQjFDCS8qIERNQSBUZXN0bW9kZSBDaGFubmVsIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUFfVE1CRAkJMHhGRkMwMEIyMAkvKiBETUEgVGVzdG1vZGUgREFCIEJ1cyBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQV9UTU0wRAkJMHhGRkMwMEIyNAkvKiBETUEgVGVzdG1vZGUgTWVtMCBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQV9UTU0xRAkJMHhGRkMwMEIyOAkvKiBETUEgVGVzdG1vZGUgTWVtMSBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQV9UTU1BCQkweEZGQzAwQjJDCS8qIERNQSBUZXN0bW9kZSBNZW1vcnkgQWRkcmVzcyBSZWdpc3RlciAqLworCisvKiBETUEgQ29udHJvbGxlciAoMHhGRkMwMEMwMCAtIDB4RkZDMDBGRkYpICovCisjZGVmaW5lIERNQTBfQ09ORklHCQkweEZGQzAwQzA4CS8qIERNQSBDaGFubmVsIDAgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBETUEwX05FWFRfREVTQ19QVFIJMHhGRkMwMEMwMAkvKiBETUEgQ2hhbm5lbCAwIE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTBfU1RBUlRfQUREUgkJMHhGRkMwMEMwNAkvKiBETUEgQ2hhbm5lbCAwIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMF9YX0NPVU5UCQkweEZGQzAwQzEwCS8qIERNQSBDaGFubmVsIDAgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBETUEwX1lfQ09VTlQJCTB4RkZDMDBDMTgJLyogRE1BIENoYW5uZWwgMCBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTBfWF9NT0RJRlkJCTB4RkZDMDBDMTQJLyogRE1BIENoYW5uZWwgMCBYIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBETUEwX1lfTU9ESUZZCQkweEZGQzAwQzFDCS8qIERNQSBDaGFubmVsIDAgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMF9DVVJSX0RFU0NfUFRSCTB4RkZDMDBDMjAJLyogRE1BIENoYW5uZWwgMCBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBETUEwX0NVUlJfQUREUgkJMHhGRkMwMEMyNAkvKiBETUEgQ2hhbm5lbCAwIEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBETUEwX0NVUlJfWF9DT1VOVAkweEZGQzAwQzMwCS8qIERNQSBDaGFubmVsIDAgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTBfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBDMzgJLyogRE1BIENoYW5uZWwgMCBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMF9JUlFfU1RBVFVTCQkweEZGQzAwQzI4CS8qIERNQSBDaGFubmVsIDAgSW50ZXJydXB0L1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUEwX1BFUklQSEVSQUxfTUFQCTB4RkZDMDBDMkMJLyogRE1BIENoYW5uZWwgMCBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIERNQTFfQ09ORklHCQkweEZGQzAwQzQ4CS8qIERNQSBDaGFubmVsIDEgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBETUExX05FWFRfREVTQ19QVFIJMHhGRkMwMEM0MAkvKiBETUEgQ2hhbm5lbCAxIE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTFfU1RBUlRfQUREUgkJMHhGRkMwMEM0NAkvKiBETUEgQ2hhbm5lbCAxIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMV9YX0NPVU5UCQkweEZGQzAwQzUwCS8qIERNQSBDaGFubmVsIDEgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBETUExX1lfQ09VTlQJCTB4RkZDMDBDNTgJLyogRE1BIENoYW5uZWwgMSBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTFfWF9NT0RJRlkJCTB4RkZDMDBDNTQJLyogRE1BIENoYW5uZWwgMSBYIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBETUExX1lfTU9ESUZZCQkweEZGQzAwQzVDCS8qIERNQSBDaGFubmVsIDEgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMV9DVVJSX0RFU0NfUFRSCTB4RkZDMDBDNjAJLyogRE1BIENoYW5uZWwgMSBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBETUExX0NVUlJfQUREUgkJMHhGRkMwMEM2NAkvKiBETUEgQ2hhbm5lbCAxIEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBETUExX0NVUlJfWF9DT1VOVAkweEZGQzAwQzcwCS8qIERNQSBDaGFubmVsIDEgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTFfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBDNzgJLyogRE1BIENoYW5uZWwgMSBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMV9JUlFfU1RBVFVTCQkweEZGQzAwQzY4CS8qIERNQSBDaGFubmVsIDEgSW50ZXJydXB0L1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUExX1BFUklQSEVSQUxfTUFQCTB4RkZDMDBDNkMJLyogRE1BIENoYW5uZWwgMSBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIERNQTJfQ09ORklHCQkweEZGQzAwQzg4CS8qIERNQSBDaGFubmVsIDIgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBETUEyX05FWFRfREVTQ19QVFIJMHhGRkMwMEM4MAkvKiBETUEgQ2hhbm5lbCAyIE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTJfU1RBUlRfQUREUgkJMHhGRkMwMEM4NAkvKiBETUEgQ2hhbm5lbCAyIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMl9YX0NPVU5UCQkweEZGQzAwQzkwCS8qIERNQSBDaGFubmVsIDIgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBETUEyX1lfQ09VTlQJCTB4RkZDMDBDOTgJLyogRE1BIENoYW5uZWwgMiBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTJfWF9NT0RJRlkJCTB4RkZDMDBDOTQJLyogRE1BIENoYW5uZWwgMiBYIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBETUEyX1lfTU9ESUZZCQkweEZGQzAwQzlDCS8qIERNQSBDaGFubmVsIDIgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMl9DVVJSX0RFU0NfUFRSCTB4RkZDMDBDQTAJLyogRE1BIENoYW5uZWwgMiBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBETUEyX0NVUlJfQUREUgkJMHhGRkMwMENBNAkvKiBETUEgQ2hhbm5lbCAyIEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBETUEyX0NVUlJfWF9DT1VOVAkweEZGQzAwQ0IwCS8qIERNQSBDaGFubmVsIDIgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTJfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBDQjgJLyogRE1BIENoYW5uZWwgMiBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BMl9JUlFfU1RBVFVTCQkweEZGQzAwQ0E4CS8qIERNQSBDaGFubmVsIDIgSW50ZXJydXB0L1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUEyX1BFUklQSEVSQUxfTUFQCTB4RkZDMDBDQUMJLyogRE1BIENoYW5uZWwgMiBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIERNQTNfQ09ORklHCQkweEZGQzAwQ0M4CS8qIERNQSBDaGFubmVsIDMgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBETUEzX05FWFRfREVTQ19QVFIJMHhGRkMwMENDMAkvKiBETUEgQ2hhbm5lbCAzIE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTNfU1RBUlRfQUREUgkJMHhGRkMwMENDNAkvKiBETUEgQ2hhbm5lbCAzIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BM19YX0NPVU5UCQkweEZGQzAwQ0QwCS8qIERNQSBDaGFubmVsIDMgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBETUEzX1lfQ09VTlQJCTB4RkZDMDBDRDgJLyogRE1BIENoYW5uZWwgMyBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTNfWF9NT0RJRlkJCTB4RkZDMDBDRDQJLyogRE1BIENoYW5uZWwgMyBYIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBETUEzX1lfTU9ESUZZCQkweEZGQzAwQ0RDCS8qIERNQSBDaGFubmVsIDMgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BM19DVVJSX0RFU0NfUFRSCTB4RkZDMDBDRTAJLyogRE1BIENoYW5uZWwgMyBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBETUEzX0NVUlJfQUREUgkJMHhGRkMwMENFNAkvKiBETUEgQ2hhbm5lbCAzIEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBETUEzX0NVUlJfWF9DT1VOVAkweEZGQzAwQ0YwCS8qIERNQSBDaGFubmVsIDMgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTNfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBDRjgJLyogRE1BIENoYW5uZWwgMyBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BM19JUlFfU1RBVFVTCQkweEZGQzAwQ0U4CS8qIERNQSBDaGFubmVsIDMgSW50ZXJydXB0L1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUEzX1BFUklQSEVSQUxfTUFQCTB4RkZDMDBDRUMJLyogRE1BIENoYW5uZWwgMyBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIERNQTRfQ09ORklHCQkweEZGQzAwRDA4CS8qIERNQSBDaGFubmVsIDQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBETUE0X05FWFRfREVTQ19QVFIJMHhGRkMwMEQwMAkvKiBETUEgQ2hhbm5lbCA0IE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTRfU1RBUlRfQUREUgkJMHhGRkMwMEQwNAkvKiBETUEgQ2hhbm5lbCA0IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNF9YX0NPVU5UCQkweEZGQzAwRDEwCS8qIERNQSBDaGFubmVsIDQgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBETUE0X1lfQ09VTlQJCTB4RkZDMDBEMTgJLyogRE1BIENoYW5uZWwgNCBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTRfWF9NT0RJRlkJCTB4RkZDMDBEMTQJLyogRE1BIENoYW5uZWwgNCBYIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBETUE0X1lfTU9ESUZZCQkweEZGQzAwRDFDCS8qIERNQSBDaGFubmVsIDQgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNF9DVVJSX0RFU0NfUFRSCTB4RkZDMDBEMjAJLyogRE1BIENoYW5uZWwgNCBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBETUE0X0NVUlJfQUREUgkJMHhGRkMwMEQyNAkvKiBETUEgQ2hhbm5lbCA0IEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBETUE0X0NVUlJfWF9DT1VOVAkweEZGQzAwRDMwCS8qIERNQSBDaGFubmVsIDQgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTRfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBEMzgJLyogRE1BIENoYW5uZWwgNCBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNF9JUlFfU1RBVFVTCQkweEZGQzAwRDI4CS8qIERNQSBDaGFubmVsIDQgSW50ZXJydXB0L1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUE0X1BFUklQSEVSQUxfTUFQCTB4RkZDMDBEMkMJLyogRE1BIENoYW5uZWwgNCBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIERNQTVfQ09ORklHCQkweEZGQzAwRDQ4CS8qIERNQSBDaGFubmVsIDUgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBETUE1X05FWFRfREVTQ19QVFIJMHhGRkMwMEQ0MAkvKiBETUEgQ2hhbm5lbCA1IE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTVfU1RBUlRfQUREUgkJMHhGRkMwMEQ0NAkvKiBETUEgQ2hhbm5lbCA1IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNV9YX0NPVU5UCQkweEZGQzAwRDUwCS8qIERNQSBDaGFubmVsIDUgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBETUE1X1lfQ09VTlQJCTB4RkZDMDBENTgJLyogRE1BIENoYW5uZWwgNSBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTVfWF9NT0RJRlkJCTB4RkZDMDBENTQJLyogRE1BIENoYW5uZWwgNSBYIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBETUE1X1lfTU9ESUZZCQkweEZGQzAwRDVDCS8qIERNQSBDaGFubmVsIDUgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNV9DVVJSX0RFU0NfUFRSCTB4RkZDMDBENjAJLyogRE1BIENoYW5uZWwgNSBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBETUE1X0NVUlJfQUREUgkJMHhGRkMwMEQ2NAkvKiBETUEgQ2hhbm5lbCA1IEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBETUE1X0NVUlJfWF9DT1VOVAkweEZGQzAwRDcwCS8qIERNQSBDaGFubmVsIDUgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTVfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBENzgJLyogRE1BIENoYW5uZWwgNSBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNV9JUlFfU1RBVFVTCQkweEZGQzAwRDY4CS8qIERNQSBDaGFubmVsIDUgSW50ZXJydXB0L1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUE1X1BFUklQSEVSQUxfTUFQCTB4RkZDMDBENkMJLyogRE1BIENoYW5uZWwgNSBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIERNQTZfQ09ORklHCQkweEZGQzAwRDg4CS8qIERNQSBDaGFubmVsIDYgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBETUE2X05FWFRfREVTQ19QVFIJMHhGRkMwMEQ4MAkvKiBETUEgQ2hhbm5lbCA2IE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTZfU1RBUlRfQUREUgkJMHhGRkMwMEQ4NAkvKiBETUEgQ2hhbm5lbCA2IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNl9YX0NPVU5UCQkweEZGQzAwRDkwCS8qIERNQSBDaGFubmVsIDYgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBETUE2X1lfQ09VTlQJCTB4RkZDMDBEOTgJLyogRE1BIENoYW5uZWwgNiBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTZfWF9NT0RJRlkJCTB4RkZDMDBEOTQJLyogRE1BIENoYW5uZWwgNiBYIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBETUE2X1lfTU9ESUZZCQkweEZGQzAwRDlDCS8qIERNQSBDaGFubmVsIDYgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNl9DVVJSX0RFU0NfUFRSCTB4RkZDMDBEQTAJLyogRE1BIENoYW5uZWwgNiBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBETUE2X0NVUlJfQUREUgkJMHhGRkMwMERBNAkvKiBETUEgQ2hhbm5lbCA2IEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBETUE2X0NVUlJfWF9DT1VOVAkweEZGQzAwREIwCS8qIERNQSBDaGFubmVsIDYgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTZfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBEQjgJLyogRE1BIENoYW5uZWwgNiBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BNl9JUlFfU1RBVFVTCQkweEZGQzAwREE4CS8qIERNQSBDaGFubmVsIDYgSW50ZXJydXB0L1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUE2X1BFUklQSEVSQUxfTUFQCTB4RkZDMDBEQUMJLyogRE1BIENoYW5uZWwgNiBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIERNQTdfQ09ORklHCQkweEZGQzAwREM4CS8qIERNQSBDaGFubmVsIDcgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBETUE3X05FWFRfREVTQ19QVFIJMHhGRkMwMERDMAkvKiBETUEgQ2hhbm5lbCA3IE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTdfU1RBUlRfQUREUgkJMHhGRkMwMERDNAkvKiBETUEgQ2hhbm5lbCA3IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BN19YX0NPVU5UCQkweEZGQzAwREQwCS8qIERNQSBDaGFubmVsIDcgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBETUE3X1lfQ09VTlQJCTB4RkZDMDBERDgJLyogRE1BIENoYW5uZWwgNyBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTdfWF9NT0RJRlkJCTB4RkZDMDBERDQJLyogRE1BIENoYW5uZWwgNyBYIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBETUE3X1lfTU9ESUZZCQkweEZGQzAwRERDCS8qIERNQSBDaGFubmVsIDcgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BN19DVVJSX0RFU0NfUFRSCTB4RkZDMDBERTAJLyogRE1BIENoYW5uZWwgNyBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBETUE3X0NVUlJfQUREUgkJMHhGRkMwMERFNAkvKiBETUEgQ2hhbm5lbCA3IEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBETUE3X0NVUlJfWF9DT1VOVAkweEZGQzAwREYwCS8qIERNQSBDaGFubmVsIDcgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIERNQTdfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBERjgJLyogRE1BIENoYW5uZWwgNyBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRE1BN19JUlFfU1RBVFVTCQkweEZGQzAwREU4CS8qIERNQSBDaGFubmVsIDcgSW50ZXJydXB0L1N0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBETUE3X1BFUklQSEVSQUxfTUFQCTB4RkZDMDBERUMJLyogRE1BIENoYW5uZWwgNyBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIE1ETUFfRDFfQ09ORklHCQkweEZGQzAwRTg4CS8qIE1lbURNQSBTdHJlYW0gMSBEZXN0aW5hdGlvbiBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfRDFfTkVYVF9ERVNDX1BUUgkweEZGQzAwRTgwCS8qIE1lbURNQSBTdHJlYW0gMSBEZXN0aW5hdGlvbiBOZXh0IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX0QxX1NUQVJUX0FERFIJMHhGRkMwMEU4NAkvKiBNZW1ETUEgU3RyZWFtIDEgRGVzdGluYXRpb24gU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX0QxX1hfQ09VTlQJCTB4RkZDMDBFOTAJLyogTWVtRE1BIFN0cmVhbSAxIERlc3RpbmF0aW9uIFggQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMV9ZX0NPVU5UCQkweEZGQzAwRTk4CS8qIE1lbURNQSBTdHJlYW0gMSBEZXN0aW5hdGlvbiBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfRDFfWF9NT0RJRlkJMHhGRkMwMEU5NAkvKiBNZW1ETUEgU3RyZWFtIDEgRGVzdGluYXRpb24gWCBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMV9ZX01PRElGWQkweEZGQzAwRTlDCS8qIE1lbURNQSBTdHJlYW0gMSBEZXN0aW5hdGlvbiBZIE1vZGlmeSBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX0QxX0NVUlJfREVTQ19QVFIJMHhGRkMwMEVBMAkvKiBNZW1ETUEgU3RyZWFtIDEgRGVzdGluYXRpb24gQ3VycmVudCBEZXNjcmlwdG9yIFBvaW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMV9DVVJSX0FERFIJMHhGRkMwMEVBNAkvKiBNZW1ETUEgU3RyZWFtIDEgRGVzdGluYXRpb24gQ3VycmVudCBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfRDFfQ1VSUl9YX0NPVU5UCTB4RkZDMDBFQjAJLyogTWVtRE1BIFN0cmVhbSAxIERlc3RpbmF0aW9uIEN1cnJlbnQgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX0QxX0NVUlJfWV9DT1VOVAkweEZGQzAwRUI4CS8qIE1lbURNQSBTdHJlYW0gMSBEZXN0aW5hdGlvbiBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMV9JUlFfU1RBVFVTCTB4RkZDMDBFQTgJLyogTWVtRE1BIFN0cmVhbSAxIERlc3RpbmF0aW9uIEludGVycnVwdC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMV9QRVJJUEhFUkFMX01BUAkweEZGQzAwRUFDCS8qIE1lbURNQSBTdHJlYW0gMSBEZXN0aW5hdGlvbiBQZXJpcGhlcmFsIE1hcCBSZWdpc3RlciAqLworCisjZGVmaW5lIE1ETUFfUzFfQ09ORklHCQkweEZGQzAwRUM4CS8qIE1lbURNQSBTdHJlYW0gMSBTb3VyY2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX1MxX05FWFRfREVTQ19QVFIJMHhGRkMwMEVDMAkvKiBNZW1ETUEgU3RyZWFtIDEgU291cmNlIE5leHQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfUzFfU1RBUlRfQUREUgkweEZGQzAwRUM0CS8qIE1lbURNQSBTdHJlYW0gMSBTb3VyY2UgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX1MxX1hfQ09VTlQJCTB4RkZDMDBFRDAJLyogTWVtRE1BIFN0cmVhbSAxIFNvdXJjZSBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfUzFfWV9DT1VOVAkJMHhGRkMwMEVEOAkvKiBNZW1ETUEgU3RyZWFtIDEgU291cmNlIFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMV9YX01PRElGWQkweEZGQzAwRUQ0CS8qIE1lbURNQSBTdHJlYW0gMSBTb3VyY2UgWCBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMV9ZX01PRElGWQkweEZGQzAwRURDCS8qIE1lbURNQSBTdHJlYW0gMSBTb3VyY2UgWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMV9DVVJSX0RFU0NfUFRSCTB4RkZDMDBFRTAJLyogTWVtRE1BIFN0cmVhbSAxIFNvdXJjZSBDdXJyZW50IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX1MxX0NVUlJfQUREUgkweEZGQzAwRUU0CS8qIE1lbURNQSBTdHJlYW0gMSBTb3VyY2UgQ3VycmVudCBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfUzFfQ1VSUl9YX0NPVU5UCTB4RkZDMDBFRjAJLyogTWVtRE1BIFN0cmVhbSAxIFNvdXJjZSBDdXJyZW50IFggQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMV9DVVJSX1lfQ09VTlQJMHhGRkMwMEVGOAkvKiBNZW1ETUEgU3RyZWFtIDEgU291cmNlIEN1cnJlbnQgWSBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX1MxX0lSUV9TVEFUVVMJMHhGRkMwMEVFOAkvKiBNZW1ETUEgU3RyZWFtIDEgU291cmNlIEludGVycnVwdC9TdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMV9QRVJJUEhFUkFMX01BUAkweEZGQzAwRUVDCS8qIE1lbURNQSBTdHJlYW0gMSBTb3VyY2UgUGVyaXBoZXJhbCBNYXAgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBNRE1BX0QwX0NPTkZJRwkJMHhGRkMwMEUwOAkvKiBNZW1ETUEgU3RyZWFtIDAgRGVzdGluYXRpb24gQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX0QwX05FWFRfREVTQ19QVFIJMHhGRkMwMEUwMAkvKiBNZW1ETUEgU3RyZWFtIDAgRGVzdGluYXRpb24gTmV4dCBEZXNjcmlwdG9yIFBvaW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMF9TVEFSVF9BRERSCTB4RkZDMDBFMDQJLyogTWVtRE1BIFN0cmVhbSAwIERlc3RpbmF0aW9uIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMF9YX0NPVU5UCQkweEZGQzAwRTEwCS8qIE1lbURNQSBTdHJlYW0gMCBEZXN0aW5hdGlvbiBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfRDBfWV9DT1VOVAkJMHhGRkMwMEUxOAkvKiBNZW1ETUEgU3RyZWFtIDAgRGVzdGluYXRpb24gWSBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX0QwX1hfTU9ESUZZCTB4RkZDMDBFMTQJLyogTWVtRE1BIFN0cmVhbSAwIERlc3RpbmF0aW9uIFggTW9kaWZ5IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfRDBfWV9NT0RJRlkJMHhGRkMwMEUxQwkvKiBNZW1ETUEgU3RyZWFtIDAgRGVzdGluYXRpb24gWSBNb2RpZnkgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMF9DVVJSX0RFU0NfUFRSCTB4RkZDMDBFMjAJLyogTWVtRE1BIFN0cmVhbSAwIERlc3RpbmF0aW9uIEN1cnJlbnQgRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfRDBfQ1VSUl9BRERSCTB4RkZDMDBFMjQJLyogTWVtRE1BIFN0cmVhbSAwIERlc3RpbmF0aW9uIEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX0QwX0NVUlJfWF9DT1VOVAkweEZGQzAwRTMwCS8qIE1lbURNQSBTdHJlYW0gMCBEZXN0aW5hdGlvbiBDdXJyZW50IFggQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9EMF9DVVJSX1lfQ09VTlQJMHhGRkMwMEUzOAkvKiBNZW1ETUEgU3RyZWFtIDAgRGVzdGluYXRpb24gQ3VycmVudCBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfRDBfSVJRX1NUQVRVUwkweEZGQzAwRTI4CS8qIE1lbURNQSBTdHJlYW0gMCBEZXN0aW5hdGlvbiBJbnRlcnJ1cHQvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfRDBfUEVSSVBIRVJBTF9NQVAJMHhGRkMwMEUyQwkvKiBNZW1ETUEgU3RyZWFtIDAgRGVzdGluYXRpb24gUGVyaXBoZXJhbCBNYXAgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBNRE1BX1MwX0NPTkZJRwkJMHhGRkMwMEU0OAkvKiBNZW1ETUEgU3RyZWFtIDAgU291cmNlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMF9ORVhUX0RFU0NfUFRSCTB4RkZDMDBFNDAJLyogTWVtRE1BIFN0cmVhbSAwIFNvdXJjZSBOZXh0IERlc2NyaXB0b3IgUG9pbnRlciBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX1MwX1NUQVJUX0FERFIJMHhGRkMwMEU0NAkvKiBNZW1ETUEgU3RyZWFtIDAgU291cmNlIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMF9YX0NPVU5UCQkweEZGQzAwRTUwCS8qIE1lbURNQSBTdHJlYW0gMCBTb3VyY2UgWCBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX1MwX1lfQ09VTlQJCTB4RkZDMDBFNTgJLyogTWVtRE1BIFN0cmVhbSAwIFNvdXJjZSBZIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfUzBfWF9NT0RJRlkJMHhGRkMwMEU1NAkvKiBNZW1ETUEgU3RyZWFtIDAgU291cmNlIFggTW9kaWZ5IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfUzBfWV9NT0RJRlkJMHhGRkMwMEU1QwkvKiBNZW1ETUEgU3RyZWFtIDAgU291cmNlIFkgTW9kaWZ5IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfUzBfQ1VSUl9ERVNDX1BUUgkweEZGQzAwRTYwCS8qIE1lbURNQSBTdHJlYW0gMCBTb3VyY2UgQ3VycmVudCBEZXNjcmlwdG9yIFBvaW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMF9DVVJSX0FERFIJMHhGRkMwMEU2NAkvKiBNZW1ETUEgU3RyZWFtIDAgU291cmNlIEN1cnJlbnQgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBNRE1BX1MwX0NVUlJfWF9DT1VOVAkweEZGQzAwRTcwCS8qIE1lbURNQSBTdHJlYW0gMCBTb3VyY2UgQ3VycmVudCBYIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfUzBfQ1VSUl9ZX0NPVU5UCTB4RkZDMDBFNzgJLyogTWVtRE1BIFN0cmVhbSAwIFNvdXJjZSBDdXJyZW50IFkgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTURNQV9TMF9JUlFfU1RBVFVTCTB4RkZDMDBFNjgJLyogTWVtRE1BIFN0cmVhbSAwIFNvdXJjZSBJbnRlcnJ1cHQvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1ETUFfUzBfUEVSSVBIRVJBTF9NQVAJMHhGRkMwMEU2QwkvKiBNZW1ETUEgU3RyZWFtIDAgU291cmNlIFBlcmlwaGVyYWwgTWFwIFJlZ2lzdGVyICovCisKKy8qIFBhcmFsbGVsIFBlcmlwaGVyYWwgSW50ZXJmYWNlIChQUEkpICgweEZGQzAxMDAwIC0gMHhGRkMwMTBGRikgKi8KKyNkZWZpbmUgUFBJX0NPTlRST0wJCTB4RkZDMDEwMDAJLyogUFBJIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUFBJX1NUQVRVUwkJMHhGRkMwMTAwNAkvKiBQUEkgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFBQSV9DT1VOVAkJMHhGRkMwMTAwOAkvKiBQUEkgVHJhbnNmZXIgQ291bnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUFBJX0RFTEFZCQkweEZGQzAxMDBDCS8qIFBQSSBEZWxheSBDb3VudCBSZWdpc3RlciAqLworI2RlZmluZSBQUElfRlJBTUUJCTB4RkZDMDEwMTAJLyogUFBJIEZyYW1lIExlbmd0aCBSZWdpc3RlciAqLworCisvKgorICogU3lzdGVtIE1NUiBSZWdpc3RlciBCaXRzCisgKi8KKy8qCisgKiBQTEwgQU5EIFJFU0VUIE1BU0tTCisgKi8KKworLyogUExMX0NUTCBNYXNrcyAqLworI2RlZmluZSBQTExfQ0xLSU4JCTB4MDAwMDAwMDAJLyogUGFzcyBDTEtJTiB0byBQTEwgKi8KKyNkZWZpbmUgUExMX0NMS0lOX0RJVjIJCTB4MDAwMDAwMDEJLyogUGFzcyBDTEtJTi8yIHRvIFBMTCAqLworI2RlZmluZSBQTExfT0ZGCQkJMHgwMDAwMDAwMgkvKiBTaHV0IG9mZiBQTEwgY2xvY2tzICovCisjZGVmaW5lIFNUT1BDS19PRkYJCTB4MDAwMDAwMDgJLyogQ29yZSBjbG9jayBvZmYgKi8KKyNkZWZpbmUgUERXTgkJCTB4MDAwMDAwMjAJLyogUHV0IHRoZSBQTEwgaW4gYSBEZWVwIFNsZWVwIHN0YXRlICovCisjZGVmaW5lIEJZUEFTUwkJCTB4MDAwMDAxMDAJLyogQnlwYXNzIHRoZSBQTEwgKi8KKworLyogUExMX0RJViBNYXNrcyAqLworI2RlZmluZSBTQ0xLX0RJVih4KQkJKHgpCQkvKiBTQ0xLID0gVkNPIC8geCAqLworCisjZGVmaW5lIENDTEtfRElWMQkJMHgwMDAwMDAwMAkvKiBDQ0xLID0gVkNPIC8gMSAqLworI2RlZmluZSBDQ0xLX0RJVjIJCTB4MDAwMDAwMTAJLyogQ0NMSyA9IFZDTyAvIDIgKi8KKyNkZWZpbmUgQ0NMS19ESVY0CQkweDAwMDAwMDIwCS8qIENDTEsgPSBWQ08gLyA0ICovCisjZGVmaW5lIENDTEtfRElWOAkJMHgwMDAwMDAzMAkvKiBDQ0xLID0gVkNPIC8gOCAqLworCisvKiBTV1JTVCBNYXNrICovCisjZGVmaW5lIFNZU1RFTV9SRVNFVAkJMHgwMDAwMDAwNwkvKiBJbml0aWF0ZXMgYSBzeXN0ZW0gc29mdHdhcmUgcmVzZXQgKi8KKworLyoKKyAqIFNZU1RFTSBJTlRFUlJVUFQgQ09OVFJPTExFUiBNQVNLUworICovCisKKy8qIFNJQ19JQVIwIE1hc2tzICovCisjZGVmaW5lIFAwX0lWRyh4KQkJKCh4KS03KQkJLyogUGVyaXBoZXJhbCAjMCBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDFfSVZHKHgpCQkoKHgpLTcpIDw8IDB4NAkvKiBQZXJpcGhlcmFsICMxIGFzc2lnbmVkIElWRyAjeCAqLworI2RlZmluZSBQMl9JVkcoeCkJCSgoeCktNykgPDwgMHg4CS8qIFBlcmlwaGVyYWwgIzIgYXNzaWduZWQgSVZHICN4ICovCisjZGVmaW5lIFAzX0lWRyh4KQkJKCh4KS03KSA8PCAweEMJLyogUGVyaXBoZXJhbCAjMyBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDRfSVZHKHgpCQkoKHgpLTcpIDw8IDB4MTAJLyogUGVyaXBoZXJhbCAjNCBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDVfSVZHKHgpCQkoKHgpLTcpIDw8IDB4MTQJLyogUGVyaXBoZXJhbCAjNSBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDZfSVZHKHgpCQkoKHgpLTcpIDw8IDB4MTgJLyogUGVyaXBoZXJhbCAjNiBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDdfSVZHKHgpCQkoKHgpLTcpIDw8IDB4MUMJLyogUGVyaXBoZXJhbCAjNyBhc3NpZ25lZCBJVkcgI3ggKi8KKworLyogU0lDX0lBUjEgTWFza3MgKi8KKyNkZWZpbmUgUDhfSVZHKHgpCQkoKHgpLTcpCQkvKiBQZXJpcGhlcmFsICM4IGFzc2lnbmVkIElWRyAjeCAqLworI2RlZmluZSBQOV9JVkcoeCkJCSgoeCktNykgPDwgMHg0CS8qIFBlcmlwaGVyYWwgIzkgYXNzaWduZWQgSVZHICN4ICovCisjZGVmaW5lIFAxMF9JVkcoeCkJCSgoeCktNykgPDwgMHg4CS8qIFBlcmlwaGVyYWwgIzEwIGFzc2lnbmVkIElWRyAjeCAqLworI2RlZmluZSBQMTFfSVZHKHgpCQkoKHgpLTcpIDw8IDB4QwkvKiBQZXJpcGhlcmFsICMxMSBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDEyX0lWRyh4KQkJKCh4KS03KSA8PCAweDEwCS8qIFBlcmlwaGVyYWwgIzEyIGFzc2lnbmVkIElWRyAjeCAqLworI2RlZmluZSBQMTNfSVZHKHgpCQkoKHgpLTcpIDw8IDB4MTQJLyogUGVyaXBoZXJhbCAjMTMgYXNzaWduZWQgSVZHICN4ICovCisjZGVmaW5lIFAxNF9JVkcoeCkJCSgoeCktNykgPDwgMHgxOAkvKiBQZXJpcGhlcmFsICMxNCBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDE1X0lWRyh4KQkJKCh4KS03KSA8PCAweDFDCS8qIFBlcmlwaGVyYWwgIzE1IGFzc2lnbmVkIElWRyAjeCAqLworCisvKiBTSUNfSUFSMiBNYXNrcyAqLworI2RlZmluZSBQMTZfSVZHKHgpCQkoKHgpLTcpCQkvKiBQZXJpcGhlcmFsICMxNiBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDE3X0lWRyh4KQkJKCh4KS03KSA8PCAweDQJLyogUGVyaXBoZXJhbCAjMTcgYXNzaWduZWQgSVZHICN4ICovCisjZGVmaW5lIFAxOF9JVkcoeCkJCSgoeCktNykgPDwgMHg4CS8qIFBlcmlwaGVyYWwgIzE4IGFzc2lnbmVkIElWRyAjeCAqLworI2RlZmluZSBQMTlfSVZHKHgpCQkoKHgpLTcpIDw8IDB4QwkvKiBQZXJpcGhlcmFsICMxOSBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDIwX0lWRyh4KQkJKCh4KS03KSA8PCAweDEwCS8qIFBlcmlwaGVyYWwgIzIwIGFzc2lnbmVkIElWRyAjeCAqLworI2RlZmluZSBQMjFfSVZHKHgpCQkoKHgpLTcpIDw8IDB4MTQJLyogUGVyaXBoZXJhbCAjMjEgYXNzaWduZWQgSVZHICN4ICovCisjZGVmaW5lIFAyMl9JVkcoeCkJCSgoeCktNykgPDwgMHgxOAkvKiBQZXJpcGhlcmFsICMyMiBhc3NpZ25lZCBJVkcgI3ggKi8KKyNkZWZpbmUgUDIzX0lWRyh4KQkJKCh4KS03KSA8PCAweDFDCS8qIFBlcmlwaGVyYWwgIzIzIGFzc2lnbmVkIElWRyAjeCAqLworCisvKiBTSUNfSU1BU0sgTWFza3MgKi8KKyNkZWZpbmUgU0lDX1VOTUFTS19BTEwJCTB4MDAwMDAwMDAJLyogVW5tYXNrIGFsbCBwZXJpcGhlcmFsIGludGVycnVwdHMgKi8KKyNkZWZpbmUgU0lDX01BU0tfQUxMCQkweEZGRkZGRkZGCS8qIE1hc2sgYWxsIHBlcmlwaGVyYWwgaW50ZXJydXB0cyAqLworI2RlZmluZSBTSUNfTUFTSyh4KQkJKDEgPDwgKHgpKQkvKiBNYXNrIFBlcmlwaGVyYWwgI3ggaW50ZXJydXB0ICovCisjZGVmaW5lIFNJQ19VTk1BU0soeCkJCSgweEZGRkZGRkZGIF4gKDEgPDwgKHgpKSkJLyogVW5tYXNrIFBlcmlwaGVyYWwgI3ggaW50ZXJydXB0ICovCisKKy8qIFNJQ19JV1IgTWFza3MgKi8KKyNkZWZpbmUgSVdSX0RJU0FCTEVfQUxMCQkweDAwMDAwMDAwCS8qIFdha2V1cCBEaXNhYmxlIGFsbCBwZXJpcGhlcmFscyAqLworI2RlZmluZSBJV1JfRU5BQkxFX0FMTAkJMHhGRkZGRkZGRgkvKiBXYWtldXAgRW5hYmxlIGFsbCBwZXJpcGhlcmFscyAqLworI2RlZmluZSBJV1JfRU5BQkxFKHgpCQkoMSA8PCAoeCkpCS8qIFdha2V1cCBFbmFibGUgUGVyaXBoZXJhbCAjeCAqLworI2RlZmluZSBJV1JfRElTQUJMRSh4KQkJKDB4RkZGRkZGRkYgXiAoMSA8PCAoeCkpKQkvKiAgV2FrZXVwIERpc2FibGUgUGVyaXBoZXJhbCAjeCAqLworCisvKgorICogV0FUQ0hET0cgVElNRVIgTUFTS1MKKyAqLworLyogV2F0Y2hkb2cgVGltZXIgV0RPR19DVEwgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgSUNUTCh4KQkJCSgoeDw8MSkgJiAweDAwMDYpCisjZGVmaW5lIEVOQUJMRV9SRVNFVAkJMHgwMDAwMDAwMAkvKiBTZXQgV2F0Y2hkb2cgVGltZXIgdG8gZ2VuZXJhdGUgcmVzZXQgKi8KKyNkZWZpbmUgRU5BQkxFX05NSQkJMHgwMDAwMDAwMgkvKiBTZXQgV2F0Y2hkb2cgVGltZXIgdG8gZ2VuZXJhdGUgbm9uLW1hc2thYmxlIGludGVycnVwdCAqLworI2RlZmluZSBFTkFCTEVfR1BJCQkweDAwMDAwMDA0CS8qIFNldCBXYXRjaGRvZyBUaW1lciB0byBnZW5lcmF0ZSBnZW5lcmFsLXB1cnBvc2UgaW50ZXJydXB0ICovCisjZGVmaW5lIERJU0FCTEVfRVZUCQkweDAwMDAwMDA2CS8qIERpc2FibGUgV2F0Y2hkb2cgVGltZXIgaW50ZXJydXB0cyAqLworCisjZGVmaW5lIFRNUl9FTgkJCTB4MDAwMAorI2RlZmluZSBUTVJfRElTCQkJMHgwQUQwCisjZGVmaW5lIFRSTwkJCTB4ODAwMAorCisjZGVmaW5lIElDVExfUDAJCQkweDAxCisjZGVmaW5lIElDVExfUDEJCQkweDAyCisjZGVmaW5lIFRST19QCQkJMHgwRgorCisvKiBSVENfU1RBVCBhbmQgUlRDX0FMQVJNIHJlZ2lzdGVyICovCisjZGVmaW5lCVJUU0VDCQkJMHgwMDAwMDAzRgkvKiBSZWFsLVRpbWUgQ2xvY2sgU2Vjb25kcyAqLworI2RlZmluZQlSVE1JTgkJCTB4MDAwMDBGQzAJLyogUmVhbC1UaW1lIENsb2NrIE1pbnV0ZXMgKi8KKyNkZWZpbmUJUlRIUgkJCTB4MDAwMUYwMDAJLyogUmVhbC1UaW1lIENsb2NrIEhvdXJzICovCisjZGVmaW5lCVJUREFZCQkJMHhGRkZFMDAwMAkvKiBSZWFsLVRpbWUgQ2xvY2sgRGF5cyAqLworCisvKiBSVENfSUNUTCByZWdpc3RlciAqLworI2RlZmluZQlTV0lFCQkJMHgwMDAxCQkvKiBTdG9wd2F0Y2ggSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZQlBSUUJCQkweDAwMDIJCS8qIEFsYXJtIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUJU0lFCQkJMHgwMDA0CQkvKiBTZWNvbmRzICgxIEh6KSBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lCU1JRQkJCTB4MDAwOAkJLyogTWludXRlcyBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lCUhJRQkJCTB4MDAxMAkJLyogSG91cnMgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZQlESUUJCQkweDAwMjAJCS8qIDI0IEhvdXJzIChEYXlzKSBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lCURBSUUJCQkweDAwNDAJCS8qIERheSBBbGFybSAoRGF5LCBIb3VyLCBNaW51dGUsIFNlY29uZCkgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZQlXQ0lFCQkJMHg4MDAwCQkvKiBXcml0ZSBDb21wbGV0ZSBJbnRlcnJ1cHQgRW5hYmxlICovCisKKy8qIFJUQ19JU1RBVCByZWdpc3RlciAqLworI2RlZmluZQlTV0VGCQkJMHgwMDAxCQkvKiBTdG9wd2F0Y2ggRXZlbnQgRmxhZyAqLworI2RlZmluZQlBRUYJCQkweDAwMDIJCS8qIEFsYXJtIEV2ZW50IEZsYWcgKi8KKyNkZWZpbmUJU0VGCQkJMHgwMDA0CQkvKiBTZWNvbmRzICgxIEh6KSBFdmVudCBGbGFnICovCisjZGVmaW5lCU1FRgkJCTB4MDAwOAkJLyogTWludXRlcyBFdmVudCBGbGFnICovCisjZGVmaW5lCUhFRgkJCTB4MDAxMAkJLyogSG91cnMgRXZlbnQgRmxhZyAqLworI2RlZmluZQlERUYJCQkweDAwMjAJCS8qIDI0IEhvdXJzIChEYXlzKSBFdmVudCBGbGFnICovCisjZGVmaW5lCURBRUYJCQkweDAwNDAJCS8qIERheSBBbGFybSAoRGF5LCBIb3VyLCBNaW51dGUsIFNlY29uZCkgRXZlbnQgRmxhZyAqLworI2RlZmluZQlXUFMJCQkweDQwMDAJCS8qIFdyaXRlIFBlbmRpbmcgU3RhdHVzIChSTykgKi8KKyNkZWZpbmUJV0NPTQkJCTB4ODAwMAkJLyogV3JpdGUgQ29tcGxldGUgKi8KKworLyogUlRDX0ZBU1QgTWFzayAoUlRDX1BSRU4gTWFzaykgKi8KKyNkZWZpbmUgRU5BQkxFX1BSRVNDQUxFCQkweDAwMDAwMDAxCS8qIEVuYWJsZSBwcmVzY2FsZXIgc28gUlRDIHJ1bnMgYXQgMSBIeiAqLworI2RlZmluZSBQUkVOCQkJMHgwMDAwMDAwMQkvKiAqKiBNdXN0IGJlIHNldCBhZnRlciBwb3dlci11cCBmb3IgcHJvcGVyIG9wZXJhdGlvbiBvZiBSVEMgKi8KKworLyoKKyAqIFVBUlQgQ09OVFJPTExFUiBNQVNLUworICovCisKKy8qIFVBUlRfTENSIFJlZ2lzdGVyICovCisjZGVmaW5lIERMQUIJCQkweDgwCisjZGVmaW5lIFNCCQkJMHg0MAorI2RlZmluZSBTVFAJCQkweDIwCisjZGVmaW5lIEVQUwkJCTB4MTAKKyNkZWZpbmUgUEVOCQkJMHgwOAorI2RlZmluZSBTVEIJCQkweDA0CisjZGVmaW5lIFdMUyh4KQkJCSgoeC01KSAmIDB4MDMpCisKKyNkZWZpbmUgRExBQl9QCQkJMHgwNworI2RlZmluZSBTQl9QCQkJMHgwNgorI2RlZmluZSBTVFBfUAkJCTB4MDUKKyNkZWZpbmUgRVBTX1AJCQkweDA0CisjZGVmaW5lIFBFTl9QCQkJMHgwMworI2RlZmluZSBTVEJfUAkJCTB4MDIKKyNkZWZpbmUgV0xTX1AxCQkJMHgwMQorI2RlZmluZSBXTFNfUDAJCQkweDAwCisKKy8qIFVBUlRfTUNSIFJlZ2lzdGVyICovCisjZGVmaW5lIExPT1BfRU5BCQkweDEwCisjZGVmaW5lIExPT1BfRU5BX1AJCTB4MDQKKworLyogVUFSVF9MU1IgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgVEVNVAkJCTB4NDAKKyNkZWZpbmUgVEhSRQkJCTB4MjAKKyNkZWZpbmUgQkkJCQkweDEwCisjZGVmaW5lIEZFCQkJMHgwOAorI2RlZmluZSBQRQkJCTB4MDQKKyNkZWZpbmUgT0UJCQkweDAyCisjZGVmaW5lIERSCQkJMHgwMQorCisjZGVmaW5lIFRFTVBfUAkJCTB4MDYKKyNkZWZpbmUgVEhSRV9QCQkJMHgwNQorI2RlZmluZSBCSV9QCQkJMHgwNAorI2RlZmluZSBGRV9QCQkJMHgwMworI2RlZmluZSBQRV9QCQkJMHgwMgorI2RlZmluZSBPRV9QCQkJMHgwMQorI2RlZmluZSBEUl9QCQkJMHgwMAorCisvKiBVQVJUX0lFUiBSZWdpc3RlciAqLworI2RlZmluZSBFTFNJCQkJMHgwNAorI2RlZmluZSBFVEJFSQkJCTB4MDIKKyNkZWZpbmUgRVJCRkkJCQkweDAxCisKKyNkZWZpbmUgRUxTSV9QCQkJMHgwMgorI2RlZmluZSBFVEJFSV9QCQkJMHgwMQorI2RlZmluZSBFUkJGSV9QCQkJMHgwMAorCisvKiBVQVJUX0lJUiBSZWdpc3RlciAqLworI2RlZmluZSBTVEFUVVMoeCkJCSgoeCA8PCAxKSAmIDB4MDYpCisjZGVmaW5lIE5JTlQJCQkweDAxCisjZGVmaW5lIFNUQVRVU19QMQkJMHgwMgorI2RlZmluZSBTVEFUVVNfUDAJCTB4MDEKKyNkZWZpbmUgTklOVF9QCQkJMHgwMAorCisvKiBVQVJUX0dDVEwgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRkZFCQkJMHgyMAorI2RlZmluZSBGUEUJCQkweDEwCisjZGVmaW5lIFJQT0xDCQkJMHgwOAorI2RlZmluZSBUUE9MQwkJCTB4MDQKKyNkZWZpbmUgSVJFTgkJCTB4MDIKKyNkZWZpbmUgVUNFTgkJCTB4MDEKKworI2RlZmluZSBGRkVfUAkJCTB4MDUKKyNkZWZpbmUgRlBFX1AJCQkweDA0CisjZGVmaW5lIFJQT0xDX1AJCQkweDAzCisjZGVmaW5lIFRQT0xDX1AJCQkweDAyCisjZGVmaW5lIElSRU5fUAkJCTB4MDEKKyNkZWZpbmUgVUNFTl9QCQkJMHgwMAorCisvKgorICogU0VSSUFMIFBPUlQgTUFTS1MKKyAqLworLyogU1BPUlR4X1RDUjEgTWFza3MgKi8KKyNkZWZpbmUgVFNQRU4gICAgCQkweDAwMDEJCS8qIFRYIGVuYWJsZSAqLworI2RlZmluZSBJVENMSyAgICAJCTB4MDAwMgkJLyogSW50ZXJuYWwgVFggQ2xvY2sgU2VsZWN0ICovCisjZGVmaW5lIFREVFlQRQkJCTB4MDAwQwkJLyogVFggRGF0YSBGb3JtYXR0aW5nIFNlbGVjdCAqLworI2RlZmluZSBUTFNCSVQJCQkweDAwMTAJCS8qIFRYIEJpdCBPcmRlciAqLworI2RlZmluZSBJVEZTCQkJMHgwMjAwCQkvKiBJbnRlcm5hbCBUWCBGcmFtZSBTeW5jIFNlbGVjdCAqLworI2RlZmluZSBURlNSCQkJMHgwNDAwCQkvKiBUWCBGcmFtZSBTeW5jIFJlcXVpcmVkIFNlbGVjdCAqLworI2RlZmluZSBESVRGUwkJCTB4MDgwMAkJLyogRGF0YSBJbmRlcGVuZGVudCBUWCBGcmFtZSBTeW5jIFNlbGVjdCAqLworI2RlZmluZSBMVEZTCQkJMHgxMDAwCQkvKiBMb3cgVFggRnJhbWUgU3luYyBTZWxlY3QgKi8KKyNkZWZpbmUgTEFURlMJCQkweDIwMDAJCS8qIExhdGUgVFggRnJhbWUgU3luYyBTZWxlY3QgKi8KKyNkZWZpbmUgVENLRkUJCQkweDQwMDAJCS8qIFRYIENsb2NrIEZhbGxpbmcgRWRnZSBTZWxlY3QgKi8KKworLyogU1BPUlR4X1RDUjIgTWFza3MgKi8KKyNkZWZpbmUgU0xFTgkJCTB4MDAxRgkJLypUWCBXb3JkIExlbmd0aCAqLworI2RlZmluZSBUWFNFCQkJMHgwMTAwCQkvKlRYIFNlY29uZGFyeSBFbmFibGUgKi8KKyNkZWZpbmUgVFNGU0UJCQkweDAyMDAJCS8qVFggU3RlcmVvIEZyYW1lIFN5bmMgRW5hYmxlICovCisjZGVmaW5lIFRSRlNUCQkJMHgwNDAwCQkvKlRYIFJpZ2h0LUZpcnN0IERhdGEgT3JkZXIgKi8KKworLyogU1BPUlR4X1JDUjEgTWFza3MgKi8KKyNkZWZpbmUgUlNQRU4JCQkweDAwMDEJCS8qIFJYIGVuYWJsZSAqLworI2RlZmluZSBJUkNMSwkJCTB4MDAwMgkJLyogSW50ZXJuYWwgUlggQ2xvY2sgU2VsZWN0ICovCisjZGVmaW5lIFJEVFlQRQkJCTB4MDAwQwkJLyogUlggRGF0YSBGb3JtYXR0aW5nIFNlbGVjdCAqLworI2RlZmluZSBSVUxBVwkJCTB4MDAwOAkJLyogdS1MYXcgZW5hYmxlICovCisjZGVmaW5lIFJBTEFXCQkJMHgwMDBDCQkvKiBBLUxhdyBlbmFibGUgKi8KKyNkZWZpbmUgUkxTQklUCQkJMHgwMDEwCQkvKiBSWCBCaXQgT3JkZXIgKi8KKyNkZWZpbmUgSVJGUwkJCTB4MDIwMAkJLyogSW50ZXJuYWwgUlggRnJhbWUgU3luYyBTZWxlY3QgKi8KKyNkZWZpbmUgUkZTUgkJCTB4MDQwMAkJLyogUlggRnJhbWUgU3luYyBSZXF1aXJlZCBTZWxlY3QgKi8KKyNkZWZpbmUgTFJGUwkJCTB4MTAwMAkJLyogTG93IFJYIEZyYW1lIFN5bmMgU2VsZWN0ICovCisjZGVmaW5lIExBUkZTCQkJMHgyMDAwCQkvKiBMYXRlIFJYIEZyYW1lIFN5bmMgU2VsZWN0ICovCisjZGVmaW5lIFJDS0ZFCQkJMHg0MDAwCQkvKiBSWCBDbG9jayBGYWxsaW5nIEVkZ2UgU2VsZWN0ICovCisKKy8qIFNQT1JUeF9SQ1IyIE1hc2tzICovCisjZGVmaW5lIFNMRU4JCQkweDAwMUYJCS8qIFJYIFdvcmQgTGVuZ3RoICovCisjZGVmaW5lIFJYU0UJCQkweDAxMDAJCS8qIFJYIFNlY29uZGFyeSBFbmFibGUgKi8KKyNkZWZpbmUgUlNGU0UJCQkweDAyMDAJCS8qIFJYIFN0ZXJlbyBGcmFtZSBTeW5jIEVuYWJsZSAqLworI2RlZmluZSBSUkZTVAkJCTB4MDQwMAkJLyogUmlnaHQtRmlyc3QgRGF0YSBPcmRlciAqLworCisvKiBTUE9SVHhfU1RBVCBNYXNrcyAqLworI2RlZmluZSBSWE5FCQkJMHgwMDAxCQkvKiBSWCBGSUZPIE5vdCBFbXB0eSBTdGF0dXMgKi8KKyNkZWZpbmUgUlVWRgkJCTB4MDAwMgkJLyogUlggVW5kZXJmbG93IFN0YXR1cyAqLworI2RlZmluZSBST1ZGCQkJMHgwMDA0CQkvKiBSWCBPdmVyZmxvdyBTdGF0dXMgKi8KKyNkZWZpbmUgVFhGCQkJMHgwMDA4CQkvKiBUWCBGSUZPIEZ1bGwgU3RhdHVzICovCisjZGVmaW5lIFRVVkYJCQkweDAwMTAJCS8qIFRYIFVuZGVyZmxvdyBTdGF0dXMgKi8KKyNkZWZpbmUgVE9WRgkJCTB4MDAyMAkJLyogVFggT3ZlcmZsb3cgU3RhdHVzICovCisjZGVmaW5lIFRYSFJFCQkJMHgwMDQwCQkvKiBUWCBIb2xkIFJlZ2lzdGVyIEVtcHR5ICovCisKKy8qIFNQT1JUeF9NQ01DMSBNYXNrcyAqLworI2RlZmluZSBXU0laRQkJCTB4MDAwMEYwMDAJLyogTXVsdGljaGFubmVsIFdpbmRvdyBTaXplIEZpZWxkICovCisjZGVmaW5lIFdPRkYJCQkweDAwMDAwM0ZGCS8qIC9NdWx0aWNoYW5uZWwgV2luZG93IE9mZnNldCBGaWVsZCAqLworCisvKiBTUE9SVHhfTUNNQzIgTWFza3MgKi8KKyNkZWZpbmUgTUNDUk0JCQkweDAwMDAwMDAzCS8qIE11bHRpY2hhbm5lbCBDbG9jayBSZWNvdmVyeSBNb2RlICovCisjZGVmaW5lIE1DRFRYUEUJCQkweDAwMDAwMDA0CS8qIE11bHRpY2hhbm5lbCBETUEgVHJhbnNtaXQgUGFja2luZyAqLworI2RlZmluZSBNQ0RSWFBFCQkJMHgwMDAwMDAwOAkvKiBNdWx0aWNoYW5uZWwgRE1BIFJlY2VpdmUgUGFja2luZyAqLworI2RlZmluZSBNQ01FTgkJCTB4MDAwMDAwMTAJLyogTXVsdGljaGFubmVsIEZyYW1lIE1vZGUgRW5hYmxlICovCisjZGVmaW5lIEZTRFIJCQkweDAwMDAwMDgwCS8qIE11bHRpY2hhbm5lbCBGcmFtZSBTeW5jIHRvIERhdGEgUmVsYXRpb25zaGlwICovCisjZGVmaW5lIE1GRAkJCTB4MDAwMEYwMDAJLyogTXVsdGljaGFubmVsIEZyYW1lIERlbGF5ICovCisKKy8qCisgKiBQQVJBTExFTCBQRVJJUEhFUkFMIElOVEVSRkFDRSAoUFBJKSBNQVNLUworICovCisKKy8qIFBQSV9DT05UUk9MIE1hc2tzICovCisjZGVmaW5lIFBPUlRfRU4JCQkweDAwMDAwMDAxCS8qIFBQSSBQb3J0IEVuYWJsZSAqLworI2RlZmluZSBQT1JUX0RJUgkJMHgwMDAwMDAwMgkvKiBQUEkgUG9ydCBEaXJlY3Rpb24gKi8KKyNkZWZpbmUgWEZSX1RZUEUJCTB4MDAwMDAwMEMJLyogUFBJIFRyYW5zZmVyIFR5cGUgKi8KKyNkZWZpbmUgUE9SVF9DRkcJCTB4MDAwMDAwMzAJLyogUFBJIFBvcnQgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBGTERfU0VMCQkJMHgwMDAwMDA0MAkvKiBQUEkgQWN0aXZlIEZpZWxkIFNlbGVjdCAqLworI2RlZmluZSBQQUNLX0VOCQkJMHgwMDAwMDA4MAkvKiBQUEkgUGFja2luZyBNb2RlICovCisjZGVmaW5lIERNQTMyCQkJMHgwMDAwMDEwMAkvKiBQUEkgMzItYml0IERNQSBFbmFibGUgKi8KKyNkZWZpbmUgU0tJUF9FTgkJCTB4MDAwMDAyMDAJLyogUFBJIFNraXAgRWxlbWVudCBFbmFibGUgKi8KKyNkZWZpbmUgU0tJUF9FTwkJCTB4MDAwMDA0MDAJLyogUFBJIFNraXAgRXZlbi9PZGQgRWxlbWVudHMgKi8KKyNkZWZpbmUgRExFTkdUSAkJCTB4MDAwMDM4MDAJLyogUFBJIERhdGEgTGVuZ3RoICovCisjZGVmaW5lIERMRU5fOAkJCTB4MAkJLyogUFBJIERhdGEgTGVuZ3RoIG1hc2sgZm9yIERMRU49OCAqLworI2RlZmluZSBETEVOKHgpCQkJKCgoeC05KSAmIDB4MDcpIDw8IDExKQkvKiBQUEkgRGF0YSBMZW5ndGggKG9ubHkgd29ya3MgZm9yIHg9MTAtLT54PTE2KSAqLworI2RlZmluZSBQT0wJCQkweDAwMDBDMDAwCS8qIFBQSSBTaWduYWwgUG9sYXJpdGllcyAqLworCisvKiBQUElfU1RBVFVTIE1hc2tzICovCisjZGVmaW5lIEZMRAkJCTB4MDAwMDA0MDAJLyogRmllbGQgSW5kaWNhdG9yICovCisjZGVmaW5lIEZUX0VSUgkJCTB4MDAwMDA4MDAJLyogRnJhbWUgVHJhY2sgRXJyb3IgKi8KKyNkZWZpbmUgT1ZSCQkJMHgwMDAwMTAwMAkvKiBGSUZPIE92ZXJmbG93IEVycm9yICovCisjZGVmaW5lIFVORFIJCQkweDAwMDAyMDAwCS8qIEZJRk8gVW5kZXJydW4gRXJyb3IgKi8KKyNkZWZpbmUgRVJSX0RFVAkJCTB4MDAwMDQwMDAJLyogRXJyb3IgRGV0ZWN0ZWQgSW5kaWNhdG9yICovCisjZGVmaW5lIEVSUl9OQ09SCQkweDAwMDA4MDAwCS8qIEVycm9yIE5vdCBDb3JyZWN0ZWQgSW5kaWNhdG9yICovCisKKy8qCisgKiBETUEgQ09OVFJPTExFUiBNQVNLUworICovCisKKy8qIERNQXhfQ09ORklHLCBNRE1BX3l5X0NPTkZJRyBNYXNrcyAqLworI2RlZmluZSBETUFFTgkJCTB4MDAwMDAwMDEJLyogQ2hhbm5lbCBFbmFibGUgKi8KKyNkZWZpbmUgV05SCQkJMHgwMDAwMDAwMgkvKiBDaGFubmVsIERpcmVjdGlvbiAoVy9SKikgKi8KKyNkZWZpbmUgV0RTSVpFXzgJCTB4MDAwMDAwMDAJLyogV29yZCBTaXplIDggYml0cyAqLworI2RlZmluZSBXRFNJWkVfMTYJCTB4MDAwMDAwMDQJLyogV29yZCBTaXplIDE2IGJpdHMgKi8KKyNkZWZpbmUgV0RTSVpFXzMyCQkweDAwMDAwMDA4CS8qIFdvcmQgU2l6ZSAzMiBiaXRzICovCisjZGVmaW5lIERNQTJECQkJMHgwMDAwMDAxMAkvKiAyRC8xRCogTW9kZSAqLworI2RlZmluZSBSRVNUQVJUCQkJMHgwMDAwMDAyMAkvKiBSZXN0YXJ0ICovCisjZGVmaW5lIERJX1NFTAkJCTB4MDAwMDAwNDAJLyogRGF0YSBJbnRlcnJ1cHQgU2VsZWN0ICovCisjZGVmaW5lIERJX0VOCQkJMHgwMDAwMDA4MAkvKiBEYXRhIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgTkRTSVpFCQkJMHgwMDAwMDkwMAkvKiBOZXh0IERlc2NyaXB0b3IgU2l6ZSAqLworI2RlZmluZSBGTE9XCQkJMHgwMDAwNzAwMAkvKiBGbG93IENvbnRyb2wgKi8KKworI2RlZmluZSBETUFFTl9QCQkJMAkJLyogQ2hhbm5lbCBFbmFibGUgKi8KKyNkZWZpbmUgV05SX1AJCQkxCQkvKiBDaGFubmVsIERpcmVjdGlvbiAoVy9SKikgKi8KKyNkZWZpbmUgRE1BMkRfUAkJCTQJCS8qIDJELzFEKiBNb2RlICovCisjZGVmaW5lIFJFU1RBUlRfUAkJNQkJLyogUmVzdGFydCAqLworI2RlZmluZSBESV9TRUxfUAkJNgkJLyogRGF0YSBJbnRlcnJ1cHQgU2VsZWN0ICovCisjZGVmaW5lIERJX0VOX1AJCQk3CQkvKiBEYXRhIEludGVycnVwdCBFbmFibGUgKi8KKworLyogRE1BeF9JUlFfU1RBVFVTLCBNRE1BX3l5X0lSUV9TVEFUVVMgTWFza3MgKi8KKyNkZWZpbmUgRE1BX0RPTkUJCTB4MDAwMDAwMDEJLyogRE1BIERvbmUgSW5kaWNhdG9yICovCisjZGVmaW5lIERNQV9FUlIJCQkweDAwMDAwMDAyCS8qIERNQSBFcnJvciBJbmRpY2F0b3IgKi8KKyNkZWZpbmUgREZFVENICQkJMHgwMDAwMDAwNAkvKiBEZXNjcmlwdG9yIEZldGNoIEluZGljYXRvciAqLworI2RlZmluZSBETUFfUlVOCQkJMHgwMDAwMDAwOAkvKiBETUEgUnVubmluZyBJbmRpY2F0b3IgKi8KKworI2RlZmluZSBETUFfRE9ORV9QCQkwCQkvKiBETUEgRG9uZSBJbmRpY2F0b3IgKi8KKyNkZWZpbmUgRE1BX0VSUl9QCQkxCQkvKiBETUEgRXJyb3IgSW5kaWNhdG9yICovCisjZGVmaW5lIERGRVRDSF9QCQkyCQkvKiBEZXNjcmlwdG9yIEZldGNoIEluZGljYXRvciAqLworI2RlZmluZSBETUFfUlVOX1AJCTMJCS8qIERNQSBSdW5uaW5nIEluZGljYXRvciAqLworCisvKiBETUF4X1BFUklQSEVSQUxfTUFQLCBNRE1BX3l5X1BFUklQSEVSQUxfTUFQIE1hc2tzICovCisjZGVmaW5lIENUWVBFCQkJMHgwMDAwMDA0MAkvKiBETUEgQ2hhbm5lbCBUeXBlIEluZGljYXRvciAqLworI2RlZmluZSBDVFlQRV9QCQkJNgkJLyogRE1BIENoYW5uZWwgVHlwZSBJbmRpY2F0b3IgQklUIFBPU0lUSU9OICovCisjZGVmaW5lIFBDQVA4CQkJMHgwMDAwMDA4MAkvKiBETUEgOC1iaXQgT3BlcmF0aW9uIEluZGljYXRvciAqLworI2RlZmluZSBQQ0FQMTYJCQkweDAwMDAwMTAwCS8qIERNQSAxNi1iaXQgT3BlcmF0aW9uIEluZGljYXRvciAqLworI2RlZmluZSBQQ0FQMzIJCQkweDAwMDAwMjAwCS8qIERNQSAzMi1iaXQgT3BlcmF0aW9uIEluZGljYXRvciAqLworI2RlZmluZSBQQ0FQV1IJCQkweDAwMDAwNDAwCS8qIERNQSBXcml0ZSBPcGVyYXRpb24gSW5kaWNhdG9yICovCisjZGVmaW5lIFBDQVBSRAkJCTB4MDAwMDA4MDAJLyogRE1BIFJlYWQgT3BlcmF0aW9uIEluZGljYXRvciAqLworI2RlZmluZSBQTUFQCQkJMHgwMDAwNzAwMAkvKiBETUEgUGVyaXBoZXJhbCBNYXAgRmllbGQgKi8KKworLyoKKyAqIEdFTkVSQUwgUFVSUE9TRSBUSU1FUiBNQVNLUworICovCisKKy8qIFBXTSBUaW1lciBiaXQgZGVmaW5pdGlvbnMgKi8KKworLyogVElNRVJfRU5BQkxFIFJlZ2lzdGVyICovCisjZGVmaW5lIFRJTUVOMAkJCTB4MDAwMQorI2RlZmluZSBUSU1FTjEJCQkweDAwMDIKKyNkZWZpbmUgVElNRU4yCQkJMHgwMDA0CisKKyNkZWZpbmUgVElNRU4wX1AJCTB4MDAKKyNkZWZpbmUgVElNRU4xX1AJCTB4MDEKKyNkZWZpbmUgVElNRU4yX1AJCTB4MDIKKworLyogVElNRVJfRElTQUJMRSBSZWdpc3RlciAqLworI2RlZmluZSBUSU1ESVMwCQkJMHgwMDAxCisjZGVmaW5lIFRJTURJUzEJCQkweDAwMDIKKyNkZWZpbmUgVElNRElTMgkJCTB4MDAwNAorCisjZGVmaW5lIFRJTURJUzBfUAkJMHgwMAorI2RlZmluZSBUSU1ESVMxX1AJCTB4MDEKKyNkZWZpbmUgVElNRElTMl9QCQkweDAyCisKKy8qIFRJTUVSX1NUQVRVUyBSZWdpc3RlciAqLworI2RlZmluZSBUSU1JTDAJCQkweDAwMDEKKyNkZWZpbmUgVElNSUwxCQkJMHgwMDAyCisjZGVmaW5lIFRJTUlMMgkJCTB4MDAwNAorI2RlZmluZSBUT1ZMX0VSUjAJCTB4MDAxMAorI2RlZmluZSBUT1ZMX0VSUjEJCTB4MDAyMAorI2RlZmluZSBUT1ZMX0VSUjIJCTB4MDA0MAorI2RlZmluZSBUUlVOMAkJCTB4MTAwMAorI2RlZmluZSBUUlVOMQkJCTB4MjAwMAorI2RlZmluZSBUUlVOMgkJCTB4NDAwMAorCisjZGVmaW5lIFRJTUlMMF9QCQkweDAwCisjZGVmaW5lIFRJTUlMMV9QCQkweDAxCisjZGVmaW5lIFRJTUlMMl9QCQkweDAyCisjZGVmaW5lIFRPVkxfRVJSMF9QCQkweDA0CisjZGVmaW5lIFRPVkxfRVJSMV9QCQkweDA1CisjZGVmaW5lIFRPVkxfRVJSMl9QCQkweDA2CisjZGVmaW5lIFRSVU4wX1AJCQkweDBDCisjZGVmaW5lIFRSVU4xX1AJCQkweDBECisjZGVmaW5lIFRSVU4yX1AJCQkweDBFCisKKy8qIFRJTUVSeF9DT05GSUcgUmVnaXN0ZXJzICovCisjZGVmaW5lIFBXTV9PVVQJCQkweDAwMDEKKyNkZWZpbmUgV0RUSF9DQVAJCTB4MDAwMgorI2RlZmluZSBFWFRfQ0xLCQkJMHgwMDAzCisjZGVmaW5lIFBVTFNFX0hJCQkweDAwMDQKKyNkZWZpbmUgUEVSSU9EX0NOVAkJMHgwMDA4CisjZGVmaW5lIElSUV9FTkEJCQkweDAwMTAKKyNkZWZpbmUgVElOX1NFTAkJCTB4MDAyMAorI2RlZmluZSBPVVRfRElTCQkJMHgwMDQwCisjZGVmaW5lIENMS19TRUwJCQkweDAwODAKKyNkZWZpbmUgVE9HR0xFX0hJCQkweDAxMDAKKyNkZWZpbmUgRU1VX1JVTgkJCTB4MDIwMAorI2RlZmluZSBFUlJfVFlQKHgpCQkoKHggJiAweDAzKSA8PCAxNCkKKworI2RlZmluZSBUTU9ERV9QMAkJMHgwMAorI2RlZmluZSBUTU9ERV9QMQkJMHgwMQorI2RlZmluZSBQVUxTRV9ISV9QCQkweDAyCisjZGVmaW5lIFBFUklPRF9DTlRfUAkJMHgwMworI2RlZmluZSBJUlFfRU5BX1AJCTB4MDQKKyNkZWZpbmUgVElOX1NFTF9QCQkweDA1CisjZGVmaW5lIE9VVF9ESVNfUAkJMHgwNgorI2RlZmluZSBDTEtfU0VMX1AJCTB4MDcKKyNkZWZpbmUgVE9HR0xFX0hJX1AJCTB4MDgKKyNkZWZpbmUgRU1VX1JVTl9QCQkweDA5CisjZGVmaW5lIEVSUl9UWVBfUDAJCTB4MEUKKyNkZWZpbmUgRVJSX1RZUF9QMQkJMHgwRgorCisvKgorICogUFJPR1JBTU1BQkxFIEZMQUcgTUFTS1MKKyAqLworCisvKiBHZW5lcmFsIFB1cnBvc2UgSU8gKDB4RkZDMDA3MDAgLSAweEZGQzAwN0ZGKSAgTWFza3MgKi8KKyNkZWZpbmUgUEYwCQkJMHgwMDAxCisjZGVmaW5lIFBGMQkJCTB4MDAwMgorI2RlZmluZSBQRjIJCQkweDAwMDQKKyNkZWZpbmUgUEYzCQkJMHgwMDA4CisjZGVmaW5lIFBGNAkJCTB4MDAxMAorI2RlZmluZSBQRjUJCQkweDAwMjAKKyNkZWZpbmUgUEY2CQkJMHgwMDQwCisjZGVmaW5lIFBGNwkJCTB4MDA4MAorI2RlZmluZSBQRjgJCQkweDAxMDAKKyNkZWZpbmUgUEY5CQkJMHgwMjAwCisjZGVmaW5lIFBGMTAJCQkweDA0MDAKKyNkZWZpbmUgUEYxMQkJCTB4MDgwMAorI2RlZmluZSBQRjEyCQkJMHgxMDAwCisjZGVmaW5lIFBGMTMJCQkweDIwMDAKKyNkZWZpbmUgUEYxNAkJCTB4NDAwMAorI2RlZmluZSBQRjE1CQkJMHg4MDAwCisKKy8qIEdlbmVyYWwgUHVycG9zZSBJTyAoMHhGRkMwMDcwMCAtIDB4RkZDMDA3RkYpICBCSVQgUE9TSVRJT05TICovCisjZGVmaW5lIFBGMF9QCQkJMAorI2RlZmluZSBQRjFfUAkJCTEKKyNkZWZpbmUgUEYyX1AJCQkyCisjZGVmaW5lIFBGM19QCQkJMworI2RlZmluZSBQRjRfUAkJCTQKKyNkZWZpbmUgUEY1X1AJCQk1CisjZGVmaW5lIFBGNl9QCQkJNgorI2RlZmluZSBQRjdfUAkJCTcKKyNkZWZpbmUgUEY4X1AJCQk4CisjZGVmaW5lIFBGOV9QCQkJOQorI2RlZmluZSBQRjEwX1AJCQkxMAorI2RlZmluZSBQRjExX1AJCQkxMQorI2RlZmluZSBQRjEyX1AJCQkxMgorI2RlZmluZSBQRjEzX1AJCQkxMworI2RlZmluZSBQRjE0X1AJCQkxNAorI2RlZmluZSBQRjE1X1AJCQkxNQorCisvKgorICogU0VSSUFMIFBFUklQSEVSQUwgSU5URVJGQUNFIChTUEkpIE1BU0tTCisgKi8KKworLyogU1BJX0NUTCBNYXNrcyAqLworI2RlZmluZSBUSU1PRAkJCTB4MDAwMDAwMDMJLyogVHJhbnNmZXIgaW5pdGlhdGlvbiBtb2RlIGFuZCBpbnRlcnJ1cHQgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBTWgkJCTB4MDAwMDAwMDQJLyogU2VuZCBaZXJvICg9MCkgb3IgbGFzdCAoPTEpIHdvcmQgd2hlbiBUREJSIGVtcHR5LiAqLworI2RlZmluZSBHTQkJCTB4MDAwMDAwMDgJLyogV2hlbiBSREJSIGZ1bGwsIGdldCBtb3JlICg9MSkgZGF0YSBvciBkaXNjYXJkICg9MCkgaW5jb21pbmcgRGF0YSAqLworI2RlZmluZSBQU1NFCQkJMHgwMDAwMDAxMAkvKiBFbmFibGUgKD0xKSBTbGF2ZS1TZWxlY3QgaW5wdXQgZm9yIE1hc3Rlci4gKi8KKyNkZWZpbmUgRU1JU08JCQkweDAwMDAwMDIwCS8qIEVuYWJsZSAoPTEpIE1JU08gcGluIGFzIGFuIG91dHB1dC4gKi8KKyNkZWZpbmUgU0laRQkJCTB4MDAwMDAxMDAJLyogV29yZCBsZW5ndGggKDAgPT4gOCBiaXRzLCAxID0+IDE2IGJpdHMpICovCisjZGVmaW5lIExTQkYJCQkweDAwMDAwMjAwCS8qIERhdGEgZm9ybWF0ICgwID0+IE1TQiBzZW50L3JlY2VpdmVkIGZpcnN0IDEgPT4gTFNCIHNlbnQvcmVjZWl2ZWQgZmlyc3QpICovCisjZGVmaW5lIENQSEEJCQkweDAwMDAwNDAwCS8qIENsb2NrIHBoYXNlICgwID0+IFNQSUNMSyBzdGFydHMgdG9nZ2xpbmcgaW4gbWlkZGxlIG9mIHhmZXIsIDEgPT4gU1BJQ0xLIHRvZ2dsZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB4ZmVyLiAqLworI2RlZmluZSBDUE9MCQkJMHgwMDAwMDgwMAkvKiBDbG9jayBwb2xhcml0eSAoMCA9PiBhY3RpdmUtaGlnaCwgMSA9PiBhY3RpdmUtbG93KSAqLworI2RlZmluZSBNU1RSCQkJMHgwMDAwMTAwMAkvKiBDb25maWd1cmVzIFNQSSBhcyBtYXN0ZXIgKD0xKSBvciBzbGF2ZSAoPTApICovCisjZGVmaW5lIFdPTQkJCTB4MDAwMDIwMDAJLyogT3BlbiBkcmFpbiAoPTEpIGRhdGEgb3V0cHV0IGVuYWJsZSAoZm9yIE1PU0kgYW5kIE1JU08pICovCisjZGVmaW5lIFNQRQkJCTB4MDAwMDQwMDAJLyogU1BJIG1vZHVsZSBlbmFibGUgKD0xKSwgZGlzYWJsZSAoPTApICovCisKKy8qIFNQSV9GTEcgTWFza3MgKi8KKyNkZWZpbmUgRkxTMQkJCTB4MDAwMDAwMDIJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDEgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxTMgkJCTB4MDAwMDAwMDQJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDIgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxTMwkJCTB4MDAwMDAwMDgJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDMgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxTNAkJCTB4MDAwMDAwMTAJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDQgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxTNQkJCTB4MDAwMDAwMjAJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDUgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxTNgkJCTB4MDAwMDAwNDAJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDYgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxTNwkJCTB4MDAwMDAwODAJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDcgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxHMQkJCTB4MDAwMDAyMDAJLyogQWN0aXZhdGVzICg9MCkgU1BJX0ZMT1VUMSBhcyBmbGFnIG91dHB1dCBmb3IgU1BJIFNsYXZlLXNlbGVjdCAqLworI2RlZmluZSBGTEcyCQkJMHgwMDAwMDQwMAkvKiBBY3RpdmF0ZXMgKD0wKSBTUElfRkxPVVQyIGFzIGZsYWcgb3V0cHV0IGZvciBTUEkgU2xhdmUtc2VsZWN0ICovCisjZGVmaW5lIEZMRzMJCQkweDAwMDAwODAwCS8qIEFjdGl2YXRlcyAoPTApIFNQSV9GTE9VVDMgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxHNAkJCTB4MDAwMDEwMDAJLyogQWN0aXZhdGVzICg9MCkgU1BJX0ZMT1VUNCBhcyBmbGFnIG91dHB1dCBmb3IgU1BJIFNsYXZlLXNlbGVjdCAqLworI2RlZmluZSBGTEc1CQkJMHgwMDAwMjAwMAkvKiBBY3RpdmF0ZXMgKD0wKSBTUElfRkxPVVQ1IGFzIGZsYWcgb3V0cHV0IGZvciBTUEkgU2xhdmUtc2VsZWN0ICovCisjZGVmaW5lIEZMRzYJCQkweDAwMDA0MDAwCS8qIEFjdGl2YXRlcyAoPTApIFNQSV9GTE9VVDYgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxHNwkJCTB4MDAwMDgwMDAJLyogQWN0aXZhdGVzICg9MCkgU1BJX0ZMT1VUNyBhcyBmbGFnIG91dHB1dCBmb3IgU1BJIFNsYXZlLXNlbGVjdCAqLworCisvKiBTUElfRkxHIEJpdCBQb3NpdGlvbnMgKi8KKyNkZWZpbmUgRkxTMV9QCQkJMHgwMDAwMDAwMQkvKiBFbmFibGVzICg9MSkgU1BJX0ZMT1VUMSBhcyBmbGFnIG91dHB1dCBmb3IgU1BJIFNsYXZlLXNlbGVjdCAqLworI2RlZmluZSBGTFMyX1AJCQkweDAwMDAwMDAyCS8qIEVuYWJsZXMgKD0xKSBTUElfRkxPVVQyIGFzIGZsYWcgb3V0cHV0IGZvciBTUEkgU2xhdmUtc2VsZWN0ICovCisjZGVmaW5lIEZMUzNfUAkJCTB4MDAwMDAwMDMJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDMgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxTNF9QCQkJMHgwMDAwMDAwNAkvKiBFbmFibGVzICg9MSkgU1BJX0ZMT1VUNCBhcyBmbGFnIG91dHB1dCBmb3IgU1BJIFNsYXZlLXNlbGVjdCAqLworI2RlZmluZSBGTFM1X1AJCQkweDAwMDAwMDA1CS8qIEVuYWJsZXMgKD0xKSBTUElfRkxPVVQ1IGFzIGZsYWcgb3V0cHV0IGZvciBTUEkgU2xhdmUtc2VsZWN0ICovCisjZGVmaW5lIEZMUzZfUAkJCTB4MDAwMDAwMDYJLyogRW5hYmxlcyAoPTEpIFNQSV9GTE9VVDYgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxTN19QCQkJMHgwMDAwMDAwNwkvKiBFbmFibGVzICg9MSkgU1BJX0ZMT1VUNyBhcyBmbGFnIG91dHB1dCBmb3IgU1BJIFNsYXZlLXNlbGVjdCAqLworI2RlZmluZSBGTEcxX1AJCQkweDAwMDAwMDA5CS8qIEFjdGl2YXRlcyAoPTApIFNQSV9GTE9VVDEgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxHMl9QCQkJMHgwMDAwMDAwQQkvKiBBY3RpdmF0ZXMgKD0wKSBTUElfRkxPVVQyIGFzIGZsYWcgb3V0cHV0IGZvciBTUEkgU2xhdmUtc2VsZWN0ICovCisjZGVmaW5lIEZMRzNfUAkJCTB4MDAwMDAwMEIJLyogQWN0aXZhdGVzICg9MCkgU1BJX0ZMT1VUMyBhcyBmbGFnIG91dHB1dCBmb3IgU1BJIFNsYXZlLXNlbGVjdCAqLworI2RlZmluZSBGTEc0X1AJCQkweDAwMDAwMDBDCS8qIEFjdGl2YXRlcyAoPTApIFNQSV9GTE9VVDQgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKyNkZWZpbmUgRkxHNV9QCQkJMHgwMDAwMDAwRAkvKiBBY3RpdmF0ZXMgKD0wKSBTUElfRkxPVVQ1IGFzIGZsYWcgb3V0cHV0IGZvciBTUEkgU2xhdmUtc2VsZWN0ICovCisjZGVmaW5lIEZMRzZfUAkJCTB4MDAwMDAwMEUJLyogQWN0aXZhdGVzICg9MCkgU1BJX0ZMT1VUNiBhcyBmbGFnIG91dHB1dCBmb3IgU1BJIFNsYXZlLXNlbGVjdCAqLworI2RlZmluZSBGTEc3X1AJCQkweDAwMDAwMDBGCS8qIEFjdGl2YXRlcyAoPTApIFNQSV9GTE9VVDcgYXMgZmxhZyBvdXRwdXQgZm9yIFNQSSBTbGF2ZS1zZWxlY3QgKi8KKworLyogU1BJX1NUQVQgTWFza3MgKi8KKyNkZWZpbmUgU1BJRgkJCTB4MDAwMDAwMDEJLyogU2V0ICg9MSkgd2hlbiBTUEkgc2luZ2xlLXdvcmQgdHJhbnNmZXIgY29tcGxldGUgKi8KKyNkZWZpbmUgTU9ERgkJCTB4MDAwMDAwMDIJLyogU2V0KD0xKWluIGEgbWFzdGVyIGRldmljZSB3aGVuIHNvbWUgb3RoZXIgZGV2aWNlIHRyaWVzIHRvIGJlY29tZSBtYXN0ZXIgKi8KKyNkZWZpbmUgVFhFCQkJMHgwMDAwMDAwNAkvKiBTZXQgKD0xKSB3aGVuIHRyYW5zbWlzc2lvbiBvY2N1cnMgd2l0aCBubyBuZXcgZGF0YSBpbiBTUElfVERCUiAqLworI2RlZmluZSBUWFMJCQkweDAwMDAwMDA4CS8qIFNQSV9UREJSIERhdGEgQnVmZmVyIFN0YXR1cyAoMD1FbXB0eSwgMT1GdWxsKSAqLworI2RlZmluZSBSQlNZCQkJMHgwMDAwMDAxMAkvKiBTZXQgKD0xKSB3aGVuIGRhdGEgaXMgcmVjZWl2ZWQgd2l0aCBSREJSIGZ1bGwgKi8KKyNkZWZpbmUgUlhTCQkJMHgwMDAwMDAyMAkvKiBTUElfUkRCUiBEYXRhIEJ1ZmZlciBTdGF0dXMgKDA9RW1wdHksIDE9RnVsbCkgKi8KKyNkZWZpbmUgVFhDT0wJCQkweDAwMDAwMDQwCS8qIFdoZW4gc2V0ICg9MSksIGNvcnJ1cHQgZGF0YSBtYXkgaGF2ZSBiZWVuIHRyYW5zbWl0dGVkICovCisKKy8qCisgKiBBU1lOQ0hST05PVVMgTUVNT1JZIENPTlRST0xMRVIgTUFTS1MKKyAqLworCisvKiBBTUdDVEwgTWFza3MgKi8KKyNkZWZpbmUgQU1DS0VOCQkJMHgwMDAwMDAwMQkvKiBFbmFibGUgQ0xLT1VUICovCisjZGVmaW5lIEFNQkVOX0IwCQkweDAwMDAwMDAyCS8qIEVuYWJsZSBBc3luY2hyb25vdXMgTWVtb3J5IEJhbmsgMCBvbmx5ICovCisjZGVmaW5lIEFNQkVOX0IwX0IxCQkweDAwMDAwMDA0CS8qIEVuYWJsZSBBc3luY2hyb25vdXMgTWVtb3J5IEJhbmtzIDAgJiAxIG9ubHkgKi8KKyNkZWZpbmUgQU1CRU5fQjBfQjFfQjIJCTB4MDAwMDAwMDYJLyogRW5hYmxlIEFzeW5jaHJvbm91cyBNZW1vcnkgQmFua3MgMCwgMSwgYW5kIDIgKi8KKyNkZWZpbmUgQU1CRU5fQUxMCQkweDAwMDAwMDA4CS8qIEVuYWJsZSBBc3luY2hyb25vdXMgTWVtb3J5IEJhbmtzIChhbGwpIDAsIDEsIDIsIGFuZCAzICovCisKKy8qIEFNR0NUTCBCaXQgUG9zaXRpb25zICovCisjZGVmaW5lIEFNQ0tFTl9QCQkweDAwMDAwMDAwCS8qIEVuYWJsZSBDTEtPVVQgKi8KKyNkZWZpbmUgQU1CRU5fUDAJCTB4MDAwMDAwMDEJLyogQXN5bmNocm9ub3VzIE1lbW9yeSBFbmFibGUsIDAwMCAtIGJhbmtzIDAtMyBkaXNhYmxlZCwgMDAxIC0gQmFuayAwIGVuYWJsZWQgKi8KKyNkZWZpbmUgQU1CRU5fUDEJCTB4MDAwMDAwMDIJLyogQXN5bmNocm9ub3VzIE1lbW9yeSBFbmFibGUsIDAxMCAtIGJhbmtzIDAmMSBlbmFibGVkLCAgMDExIC0gYmFua3MgMC0zIGVuYWJsZWQgKi8KKyNkZWZpbmUgQU1CRU5fUDIJCTB4MDAwMDAwMDMJLyogQXN5bmNocm9ub3VzIE1lbW9yeSBFbmFibGUsIDF4eCAtIEFsbCBiYW5rcyAoYmFuayAwLCAxLCAyLCBhbmQgMykgZW5hYmxlZCAqLworCisvKiBBTUJDVEwwIE1hc2tzICovCisjZGVmaW5lIEIwUkRZRU4JCQkweDAwMDAwMDAxCS8qIEJhbmsgMCBSRFkgRW5hYmxlLCAwPWRpc2FibGUsIDE9ZW5hYmxlICovCisjZGVmaW5lIEIwUkRZUE9MCQkweDAwMDAwMDAyCS8qIEJhbmsgMCBSRFkgQWN0aXZlIGhpZ2gsIDA9YWN0aXZlIGxvdywgMT1hY3RpdmUgaGlnaCAqLworI2RlZmluZSBCMFRUXzEJCQkweDAwMDAwMDA0CS8qIEJhbmsgMCBUcmFuc2l0aW9uIFRpbWUgZnJvbSBSZWFkIHRvIFdyaXRlID0gMSBjeWNsZSAqLworI2RlZmluZSBCMFRUXzIJCQkweDAwMDAwMDA4CS8qIEJhbmsgMCBUcmFuc2l0aW9uIFRpbWUgZnJvbSBSZWFkIHRvIFdyaXRlID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjBUVF8zCQkJMHgwMDAwMDAwQwkvKiBCYW5rIDAgVHJhbnNpdGlvbiBUaW1lIGZyb20gUmVhZCB0byBXcml0ZSA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIwVFRfNAkJCTB4MDAwMDAwMDAJLyogQmFuayAwIFRyYW5zaXRpb24gVGltZSBmcm9tIFJlYWQgdG8gV3JpdGUgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBCMFNUXzEJCQkweDAwMDAwMDEwCS8qIEJhbmsgMCBTZXR1cCBUaW1lIGZyb20gQU9FIGFzc2VydGVkIHRvIFJlYWQvV3JpdGUgYXNzZXJ0ZWQ9MSBjeWNsZSAqLworI2RlZmluZSBCMFNUXzIJCQkweDAwMDAwMDIwCS8qIEJhbmsgMCBTZXR1cCBUaW1lIGZyb20gQU9FIGFzc2VydGVkIHRvIFJlYWQvV3JpdGUgYXNzZXJ0ZWQ9MiBjeWNsZXMgKi8KKyNkZWZpbmUgQjBTVF8zCQkJMHgwMDAwMDAzMAkvKiBCYW5rIDAgU2V0dXAgVGltZSBmcm9tIEFPRSBhc3NlcnRlZCB0byBSZWFkL1dyaXRlIGFzc2VydGVkPTMgY3ljbGVzICovCisjZGVmaW5lIEIwU1RfNAkJCTB4MDAwMDAwMDAJLyogQmFuayAwIFNldHVwIFRpbWUgZnJvbSBBT0UgYXNzZXJ0ZWQgdG8gUmVhZC9Xcml0ZSBhc3NlcnRlZD00IGN5Y2xlcyAqLworI2RlZmluZSBCMEhUXzEJCQkweDAwMDAwMDQwCS8qIEJhbmsgMCBIb2xkIFRpbWUgZnJvbSBSZWFkL1dyaXRlIGRlYXNzZXJ0ZWQgdG8gQU9FIGRlYXNzZXJ0ZWQgPSAxIGN5Y2xlICovCisjZGVmaW5lIEIwSFRfMgkJCTB4MDAwMDAwODAJLyogQmFuayAwIEhvbGQgVGltZSBmcm9tIFJlYWQvV3JpdGUgZGVhc3NlcnRlZCB0byBBT0UgZGVhc3NlcnRlZCA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIwSFRfMwkJCTB4MDAwMDAwQzAJLyogQmFuayAwIEhvbGQgVGltZSBmcm9tIFJlYWQvV3JpdGUgZGVhc3NlcnRlZCB0byBBT0UgZGVhc3NlcnRlZCA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIwSFRfMAkJCTB4MDAwMDAwMDAJLyogQmFuayAwIEhvbGQgVGltZSBmcm9tIFJlYWQvV3JpdGUgZGVhc3NlcnRlZCB0byBBT0UgZGVhc3NlcnRlZCA9IDAgY3ljbGVzICovCisjZGVmaW5lIEIwUkFUXzEJCQkweDAwMDAwMTAwCS8qIEJhbmsgMCBSZWFkIEFjY2VzcyBUaW1lID0gMSBjeWNsZSAqLworI2RlZmluZSBCMFJBVF8yCQkJMHgwMDAwMDIwMAkvKiBCYW5rIDAgUmVhZCBBY2Nlc3MgVGltZSA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIwUkFUXzMJCQkweDAwMDAwMzAwCS8qIEJhbmsgMCBSZWFkIEFjY2VzcyBUaW1lID0gMyBjeWNsZXMgKi8KKyNkZWZpbmUgQjBSQVRfNAkJCTB4MDAwMDA0MDAJLyogQmFuayAwIFJlYWQgQWNjZXNzIFRpbWUgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBCMFJBVF81CQkJMHgwMDAwMDUwMAkvKiBCYW5rIDAgUmVhZCBBY2Nlc3MgVGltZSA9IDUgY3ljbGVzICovCisjZGVmaW5lIEIwUkFUXzYJCQkweDAwMDAwNjAwCS8qIEJhbmsgMCBSZWFkIEFjY2VzcyBUaW1lID0gNiBjeWNsZXMgKi8KKyNkZWZpbmUgQjBSQVRfNwkJCTB4MDAwMDA3MDAJLyogQmFuayAwIFJlYWQgQWNjZXNzIFRpbWUgPSA3IGN5Y2xlcyAqLworI2RlZmluZSBCMFJBVF84CQkJMHgwMDAwMDgwMAkvKiBCYW5rIDAgUmVhZCBBY2Nlc3MgVGltZSA9IDggY3ljbGVzICovCisjZGVmaW5lIEIwUkFUXzkJCQkweDAwMDAwOTAwCS8qIEJhbmsgMCBSZWFkIEFjY2VzcyBUaW1lID0gOSBjeWNsZXMgKi8KKyNkZWZpbmUgQjBSQVRfMTAJCTB4MDAwMDBBMDAJLyogQmFuayAwIFJlYWQgQWNjZXNzIFRpbWUgPSAxMCBjeWNsZXMgKi8KKyNkZWZpbmUgQjBSQVRfMTEJCTB4MDAwMDBCMDAJLyogQmFuayAwIFJlYWQgQWNjZXNzIFRpbWUgPSAxMSBjeWNsZXMgKi8KKyNkZWZpbmUgQjBSQVRfMTIJCTB4MDAwMDBDMDAJLyogQmFuayAwIFJlYWQgQWNjZXNzIFRpbWUgPSAxMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjBSQVRfMTMJCTB4MDAwMDBEMDAJLyogQmFuayAwIFJlYWQgQWNjZXNzIFRpbWUgPSAxMyBjeWNsZXMgKi8KKyNkZWZpbmUgQjBSQVRfMTQJCTB4MDAwMDBFMDAJLyogQmFuayAwIFJlYWQgQWNjZXNzIFRpbWUgPSAxNCBjeWNsZXMgKi8KKyNkZWZpbmUgQjBSQVRfMTUJCTB4MDAwMDBGMDAJLyogQmFuayAwIFJlYWQgQWNjZXNzIFRpbWUgPSAxNSBjeWNsZXMgKi8KKyNkZWZpbmUgQjBXQVRfMQkJCTB4MDAwMDEwMDAJLyogQmFuayAwIFdyaXRlIEFjY2VzcyBUaW1lID0gMSBjeWNsZSAqLworI2RlZmluZSBCMFdBVF8yCQkJMHgwMDAwMjAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSAyIGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF8zCQkJMHgwMDAwMzAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSAzIGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF80CQkJMHgwMDAwNDAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF81CQkJMHgwMDAwNTAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSA1IGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF82CQkJMHgwMDAwNjAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSA2IGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF83CQkJMHgwMDAwNzAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSA3IGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF84CQkJMHgwMDAwODAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSA4IGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF85CQkJMHgwMDAwOTAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSA5IGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF8xMAkJMHgwMDAwQTAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSAxMCBjeWNsZXMgKi8KKyNkZWZpbmUgQjBXQVRfMTEJCTB4MDAwMEIwMDAJLyogQmFuayAwIFdyaXRlIEFjY2VzcyBUaW1lID0gMTEgY3ljbGVzICovCisjZGVmaW5lIEIwV0FUXzEyCQkweDAwMDBDMDAwCS8qIEJhbmsgMCBXcml0ZSBBY2Nlc3MgVGltZSA9IDEyIGN5Y2xlcyAqLworI2RlZmluZSBCMFdBVF8xMwkJMHgwMDAwRDAwMAkvKiBCYW5rIDAgV3JpdGUgQWNjZXNzIFRpbWUgPSAxMyBjeWNsZXMgKi8KKyNkZWZpbmUgQjBXQVRfMTQJCTB4MDAwMEUwMDAJLyogQmFuayAwIFdyaXRlIEFjY2VzcyBUaW1lID0gMTQgY3ljbGVzICovCisjZGVmaW5lIEIwV0FUXzE1CQkweDAwMDBGMDAwCS8qIEJhbmsgMCBXcml0ZSBBY2Nlc3MgVGltZSA9IDE1IGN5Y2xlcyAqLworI2RlZmluZSBCMVJEWUVOCQkJMHgwMDAxMDAwMAkvKiBCYW5rIDEgUkRZIGVuYWJsZSwgMD1kaXNhYmxlLCAxPWVuYWJsZSAqLworI2RlZmluZSBCMVJEWVBPTAkJMHgwMDAyMDAwMAkvKiBCYW5rIDEgUkRZIEFjdGl2ZSBoaWdoLCAwPWFjdGl2ZSBsb3csIDE9YWN0aXZlIGhpZ2ggKi8KKyNkZWZpbmUgQjFUVF8xCQkJMHgwMDA0MDAwMAkvKiBCYW5rIDEgVHJhbnNpdGlvbiBUaW1lIGZyb20gUmVhZCB0byBXcml0ZSA9IDEgY3ljbGUgKi8KKyNkZWZpbmUgQjFUVF8yCQkJMHgwMDA4MDAwMAkvKiBCYW5rIDEgVHJhbnNpdGlvbiBUaW1lIGZyb20gUmVhZCB0byBXcml0ZSA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIxVFRfMwkJCTB4MDAwQzAwMDAJLyogQmFuayAxIFRyYW5zaXRpb24gVGltZSBmcm9tIFJlYWQgdG8gV3JpdGUgPSAzIGN5Y2xlcyAqLworI2RlZmluZSBCMVRUXzQJCQkweDAwMDAwMDAwCS8qIEJhbmsgMSBUcmFuc2l0aW9uIFRpbWUgZnJvbSBSZWFkIHRvIFdyaXRlID0gNCBjeWNsZXMgKi8KKyNkZWZpbmUgQjFTVF8xCQkJMHgwMDEwMDAwMAkvKiBCYW5rIDEgU2V0dXAgVGltZSBmcm9tIEFPRSBhc3NlcnRlZCB0byBSZWFkIG9yIFdyaXRlIGFzc2VydGVkID0gMSBjeWNsZSAqLworI2RlZmluZSBCMVNUXzIJCQkweDAwMjAwMDAwCS8qIEJhbmsgMSBTZXR1cCBUaW1lIGZyb20gQU9FIGFzc2VydGVkIHRvIFJlYWQgb3IgV3JpdGUgYXNzZXJ0ZWQgPSAyIGN5Y2xlcyAqLworI2RlZmluZSBCMVNUXzMJCQkweDAwMzAwMDAwCS8qIEJhbmsgMSBTZXR1cCBUaW1lIGZyb20gQU9FIGFzc2VydGVkIHRvIFJlYWQgb3IgV3JpdGUgYXNzZXJ0ZWQgPSAzIGN5Y2xlcyAqLworI2RlZmluZSBCMVNUXzQJCQkweDAwMDAwMDAwCS8qIEJhbmsgMSBTZXR1cCBUaW1lIGZyb20gQU9FIGFzc2VydGVkIHRvIFJlYWQgb3IgV3JpdGUgYXNzZXJ0ZWQgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBCMUhUXzEJCQkweDAwNDAwMDAwCS8qIEJhbmsgMSBIb2xkIFRpbWUgZnJvbSBSZWFkIG9yIFdyaXRlIGRlYXNzZXJ0ZWQgdG8gQU9FIGRlYXNzZXJ0ZWQgPSAxIGN5Y2xlICovCisjZGVmaW5lIEIxSFRfMgkJCTB4MDA4MDAwMDAJLyogQmFuayAxIEhvbGQgVGltZSBmcm9tIFJlYWQgb3IgV3JpdGUgZGVhc3NlcnRlZCB0byBBT0UgZGVhc3NlcnRlZCA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIxSFRfMwkJCTB4MDBDMDAwMDAJLyogQmFuayAxIEhvbGQgVGltZSBmcm9tIFJlYWQgb3IgV3JpdGUgZGVhc3NlcnRlZCB0byBBT0UgZGVhc3NlcnRlZCA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIxSFRfMAkJCTB4MDAwMDAwMDAJLyogQmFuayAxIEhvbGQgVGltZSBmcm9tIFJlYWQgb3IgV3JpdGUgZGVhc3NlcnRlZCB0byBBT0UgZGVhc3NlcnRlZCA9IDAgY3ljbGVzICovCisjZGVmaW5lIEIxUkFUXzEJCQkweDAxMDAwMDAwCS8qIEJhbmsgMSBSZWFkIEFjY2VzcyBUaW1lID0gMSBjeWNsZSAqLworI2RlZmluZSBCMVJBVF8yCQkJMHgwMjAwMDAwMAkvKiBCYW5rIDEgUmVhZCBBY2Nlc3MgVGltZSA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIxUkFUXzMJCQkweDAzMDAwMDAwCS8qIEJhbmsgMSBSZWFkIEFjY2VzcyBUaW1lID0gMyBjeWNsZXMgKi8KKyNkZWZpbmUgQjFSQVRfNAkJCTB4MDQwMDAwMDAJLyogQmFuayAxIFJlYWQgQWNjZXNzIFRpbWUgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBCMVJBVF81CQkJMHgwNTAwMDAwMAkvKiBCYW5rIDEgUmVhZCBBY2Nlc3MgVGltZSA9IDUgY3ljbGVzICovCisjZGVmaW5lIEIxUkFUXzYJCQkweDA2MDAwMDAwCS8qIEJhbmsgMSBSZWFkIEFjY2VzcyBUaW1lID0gNiBjeWNsZXMgKi8KKyNkZWZpbmUgQjFSQVRfNwkJCTB4MDcwMDAwMDAJLyogQmFuayAxIFJlYWQgQWNjZXNzIFRpbWUgPSA3IGN5Y2xlcyAqLworI2RlZmluZSBCMVJBVF84CQkJMHgwODAwMDAwMAkvKiBCYW5rIDEgUmVhZCBBY2Nlc3MgVGltZSA9IDggY3ljbGVzICovCisjZGVmaW5lIEIxUkFUXzkJCQkweDA5MDAwMDAwCS8qIEJhbmsgMSBSZWFkIEFjY2VzcyBUaW1lID0gOSBjeWNsZXMgKi8KKyNkZWZpbmUgQjFSQVRfMTAJCTB4MEEwMDAwMDAJLyogQmFuayAxIFJlYWQgQWNjZXNzIFRpbWUgPSAxMCBjeWNsZXMgKi8KKyNkZWZpbmUgQjFSQVRfMTEJCTB4MEIwMDAwMDAJLyogQmFuayAxIFJlYWQgQWNjZXNzIFRpbWUgPSAxMSBjeWNsZXMgKi8KKyNkZWZpbmUgQjFSQVRfMTIJCTB4MEMwMDAwMDAJLyogQmFuayAxIFJlYWQgQWNjZXNzIFRpbWUgPSAxMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjFSQVRfMTMJCTB4MEQwMDAwMDAJLyogQmFuayAxIFJlYWQgQWNjZXNzIFRpbWUgPSAxMyBjeWNsZXMgKi8KKyNkZWZpbmUgQjFSQVRfMTQJCTB4MEUwMDAwMDAJLyogQmFuayAxIFJlYWQgQWNjZXNzIFRpbWUgPSAxNCBjeWNsZXMgKi8KKyNkZWZpbmUgQjFSQVRfMTUJCTB4MEYwMDAwMDAJLyogQmFuayAxIFJlYWQgQWNjZXNzIFRpbWUgPSAxNSBjeWNsZXMgKi8KKyNkZWZpbmUgQjFXQVRfMQkJCTB4MTAwMDAwMDAJLyogQmFuayAxIFdyaXRlIEFjY2VzcyBUaW1lID0gMSBjeWNsZSAqLworI2RlZmluZSBCMVdBVF8yCQkJMHgyMDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSAyIGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF8zCQkJMHgzMDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSAzIGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF80CQkJMHg0MDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF81CQkJMHg1MDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSA1IGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF82CQkJMHg2MDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSA2IGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF83CQkJMHg3MDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSA3IGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF84CQkJMHg4MDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSA4IGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF85CQkJMHg5MDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSA5IGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF8xMAkJMHhBMDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSAxMCBjeWNsZXMgKi8KKyNkZWZpbmUgQjFXQVRfMTEJCTB4QjAwMDAwMDAJLyogQmFuayAxIFdyaXRlIEFjY2VzcyBUaW1lID0gMTEgY3ljbGVzICovCisjZGVmaW5lIEIxV0FUXzEyCQkweEMwMDAwMDAwCS8qIEJhbmsgMSBXcml0ZSBBY2Nlc3MgVGltZSA9IDEyIGN5Y2xlcyAqLworI2RlZmluZSBCMVdBVF8xMwkJMHhEMDAwMDAwMAkvKiBCYW5rIDEgV3JpdGUgQWNjZXNzIFRpbWUgPSAxMyBjeWNsZXMgKi8KKyNkZWZpbmUgQjFXQVRfMTQJCTB4RTAwMDAwMDAJLyogQmFuayAxIFdyaXRlIEFjY2VzcyBUaW1lID0gMTQgY3ljbGVzICovCisjZGVmaW5lIEIxV0FUXzE1CQkweEYwMDAwMDAwCS8qIEJhbmsgMSBXcml0ZSBBY2Nlc3MgVGltZSA9IDE1IGN5Y2xlcyAqLworCisvKiBBTUJDVEwxIE1hc2tzICovCisjZGVmaW5lIEIyUkRZRU4JCQkweDAwMDAwMDAxCS8qIEJhbmsgMiBSRFkgRW5hYmxlLCAwPWRpc2FibGUsIDE9ZW5hYmxlICovCisjZGVmaW5lIEIyUkRZUE9MCQkweDAwMDAwMDAyCS8qIEJhbmsgMiBSRFkgQWN0aXZlIGhpZ2gsIDA9YWN0aXZlIGxvdywgMT1hY3RpdmUgaGlnaCAqLworI2RlZmluZSBCMlRUXzEJCQkweDAwMDAwMDA0CS8qIEJhbmsgMiBUcmFuc2l0aW9uIFRpbWUgZnJvbSBSZWFkIHRvIFdyaXRlID0gMSBjeWNsZSAqLworI2RlZmluZSBCMlRUXzIJCQkweDAwMDAwMDA4CS8qIEJhbmsgMiBUcmFuc2l0aW9uIFRpbWUgZnJvbSBSZWFkIHRvIFdyaXRlID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjJUVF8zCQkJMHgwMDAwMDAwQwkvKiBCYW5rIDIgVHJhbnNpdGlvbiBUaW1lIGZyb20gUmVhZCB0byBXcml0ZSA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIyVFRfNAkJCTB4MDAwMDAwMDAJLyogQmFuayAyIFRyYW5zaXRpb24gVGltZSBmcm9tIFJlYWQgdG8gV3JpdGUgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBCMlNUXzEJCQkweDAwMDAwMDEwCS8qIEJhbmsgMiBTZXR1cCBUaW1lIGZyb20gQU9FIGFzc2VydGVkIHRvIFJlYWQgb3IgV3JpdGUgYXNzZXJ0ZWQgPSAxIGN5Y2xlICovCisjZGVmaW5lIEIyU1RfMgkJCTB4MDAwMDAwMjAJLyogQmFuayAyIFNldHVwIFRpbWUgZnJvbSBBT0UgYXNzZXJ0ZWQgdG8gUmVhZCBvciBXcml0ZSBhc3NlcnRlZCA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIyU1RfMwkJCTB4MDAwMDAwMzAJLyogQmFuayAyIFNldHVwIFRpbWUgZnJvbSBBT0UgYXNzZXJ0ZWQgdG8gUmVhZCBvciBXcml0ZSBhc3NlcnRlZCA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIyU1RfNAkJCTB4MDAwMDAwMDAJLyogQmFuayAyIFNldHVwIFRpbWUgZnJvbSBBT0UgYXNzZXJ0ZWQgdG8gUmVhZCBvciBXcml0ZSBhc3NlcnRlZCA9IDQgY3ljbGVzICovCisjZGVmaW5lIEIySFRfMQkJCTB4MDAwMDAwNDAJLyogQmFuayAyIEhvbGQgVGltZSBmcm9tIFJlYWQgb3IgV3JpdGUgZGVhc3NlcnRlZCB0byBBT0UgZGVhc3NlcnRlZCA9IDEgY3ljbGUgKi8KKyNkZWZpbmUgQjJIVF8yCQkJMHgwMDAwMDA4MAkvKiBCYW5rIDIgSG9sZCBUaW1lIGZyb20gUmVhZCBvciBXcml0ZSBkZWFzc2VydGVkIHRvIEFPRSBkZWFzc2VydGVkID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjJIVF8zCQkJMHgwMDAwMDBDMAkvKiBCYW5rIDIgSG9sZCBUaW1lIGZyb20gUmVhZCBvciBXcml0ZSBkZWFzc2VydGVkIHRvIEFPRSBkZWFzc2VydGVkID0gMyBjeWNsZXMgKi8KKyNkZWZpbmUgQjJIVF8wCQkJMHgwMDAwMDAwMAkvKiBCYW5rIDIgSG9sZCBUaW1lIGZyb20gUmVhZCBvciBXcml0ZSBkZWFzc2VydGVkIHRvIEFPRSBkZWFzc2VydGVkID0gMCBjeWNsZXMgKi8KKyNkZWZpbmUgQjJSQVRfMQkJCTB4MDAwMDAxMDAJLyogQmFuayAyIFJlYWQgQWNjZXNzIFRpbWUgPSAxIGN5Y2xlICovCisjZGVmaW5lIEIyUkFUXzIJCQkweDAwMDAwMjAwCS8qIEJhbmsgMiBSZWFkIEFjY2VzcyBUaW1lID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjJSQVRfMwkJCTB4MDAwMDAzMDAJLyogQmFuayAyIFJlYWQgQWNjZXNzIFRpbWUgPSAzIGN5Y2xlcyAqLworI2RlZmluZSBCMlJBVF80CQkJMHgwMDAwMDQwMAkvKiBCYW5rIDIgUmVhZCBBY2Nlc3MgVGltZSA9IDQgY3ljbGVzICovCisjZGVmaW5lIEIyUkFUXzUJCQkweDAwMDAwNTAwCS8qIEJhbmsgMiBSZWFkIEFjY2VzcyBUaW1lID0gNSBjeWNsZXMgKi8KKyNkZWZpbmUgQjJSQVRfNgkJCTB4MDAwMDA2MDAJLyogQmFuayAyIFJlYWQgQWNjZXNzIFRpbWUgPSA2IGN5Y2xlcyAqLworI2RlZmluZSBCMlJBVF83CQkJMHgwMDAwMDcwMAkvKiBCYW5rIDIgUmVhZCBBY2Nlc3MgVGltZSA9IDcgY3ljbGVzICovCisjZGVmaW5lIEIyUkFUXzgJCQkweDAwMDAwODAwCS8qIEJhbmsgMiBSZWFkIEFjY2VzcyBUaW1lID0gOCBjeWNsZXMgKi8KKyNkZWZpbmUgQjJSQVRfOQkJCTB4MDAwMDA5MDAJLyogQmFuayAyIFJlYWQgQWNjZXNzIFRpbWUgPSA5IGN5Y2xlcyAqLworI2RlZmluZSBCMlJBVF8xMAkJMHgwMDAwMEEwMAkvKiBCYW5rIDIgUmVhZCBBY2Nlc3MgVGltZSA9IDEwIGN5Y2xlcyAqLworI2RlZmluZSBCMlJBVF8xMQkJMHgwMDAwMEIwMAkvKiBCYW5rIDIgUmVhZCBBY2Nlc3MgVGltZSA9IDExIGN5Y2xlcyAqLworI2RlZmluZSBCMlJBVF8xMgkJMHgwMDAwMEMwMAkvKiBCYW5rIDIgUmVhZCBBY2Nlc3MgVGltZSA9IDEyIGN5Y2xlcyAqLworI2RlZmluZSBCMlJBVF8xMwkJMHgwMDAwMEQwMAkvKiBCYW5rIDIgUmVhZCBBY2Nlc3MgVGltZSA9IDEzIGN5Y2xlcyAqLworI2RlZmluZSBCMlJBVF8xNAkJMHgwMDAwMEUwMAkvKiBCYW5rIDIgUmVhZCBBY2Nlc3MgVGltZSA9IDE0IGN5Y2xlcyAqLworI2RlZmluZSBCMlJBVF8xNQkJMHgwMDAwMEYwMAkvKiBCYW5rIDIgUmVhZCBBY2Nlc3MgVGltZSA9IDE1IGN5Y2xlcyAqLworI2RlZmluZSBCMldBVF8xCQkJMHgwMDAwMTAwMAkvKiBCYW5rIDIgV3JpdGUgQWNjZXNzIFRpbWUgPSAxIGN5Y2xlICovCisjZGVmaW5lIEIyV0FUXzIJCQkweDAwMDAyMDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzMJCQkweDAwMDAzMDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzQJCQkweDAwMDA0MDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDQgY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzUJCQkweDAwMDA1MDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDUgY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzYJCQkweDAwMDA2MDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDYgY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzcJCQkweDAwMDA3MDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDcgY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzgJCQkweDAwMDA4MDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDggY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzkJCQkweDAwMDA5MDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDkgY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzEwCQkweDAwMDBBMDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDEwIGN5Y2xlcyAqLworI2RlZmluZSBCMldBVF8xMQkJMHgwMDAwQjAwMAkvKiBCYW5rIDIgV3JpdGUgQWNjZXNzIFRpbWUgPSAxMSBjeWNsZXMgKi8KKyNkZWZpbmUgQjJXQVRfMTIJCTB4MDAwMEMwMDAJLyogQmFuayAyIFdyaXRlIEFjY2VzcyBUaW1lID0gMTIgY3ljbGVzICovCisjZGVmaW5lIEIyV0FUXzEzCQkweDAwMDBEMDAwCS8qIEJhbmsgMiBXcml0ZSBBY2Nlc3MgVGltZSA9IDEzIGN5Y2xlcyAqLworI2RlZmluZSBCMldBVF8xNAkJMHgwMDAwRTAwMAkvKiBCYW5rIDIgV3JpdGUgQWNjZXNzIFRpbWUgPSAxNCBjeWNsZXMgKi8KKyNkZWZpbmUgQjJXQVRfMTUJCTB4MDAwMEYwMDAJLyogQmFuayAyIFdyaXRlIEFjY2VzcyBUaW1lID0gMTUgY3ljbGVzICovCisjZGVmaW5lIEIzUkRZRU4JCQkweDAwMDEwMDAwCS8qIEJhbmsgMyBSRFkgZW5hYmxlLCAwPWRpc2FibGUsIDE9ZW5hYmxlICovCisjZGVmaW5lIEIzUkRZUE9MCQkweDAwMDIwMDAwCS8qIEJhbmsgMyBSRFkgQWN0aXZlIGhpZ2gsIDA9YWN0aXZlIGxvdywgMT1hY3RpdmUgaGlnaCAqLworI2RlZmluZSBCM1RUXzEJCQkweDAwMDQwMDAwCS8qIEJhbmsgMyBUcmFuc2l0aW9uIFRpbWUgZnJvbSBSZWFkIHRvIFdyaXRlID0gMSBjeWNsZSAqLworI2RlZmluZSBCM1RUXzIJCQkweDAwMDgwMDAwCS8qIEJhbmsgMyBUcmFuc2l0aW9uIFRpbWUgZnJvbSBSZWFkIHRvIFdyaXRlID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjNUVF8zCQkJMHgwMDBDMDAwMAkvKiBCYW5rIDMgVHJhbnNpdGlvbiBUaW1lIGZyb20gUmVhZCB0byBXcml0ZSA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIzVFRfNAkJCTB4MDAwMDAwMDAJLyogQmFuayAzIFRyYW5zaXRpb24gVGltZSBmcm9tIFJlYWQgdG8gV3JpdGUgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBCM1NUXzEJCQkweDAwMTAwMDAwCS8qIEJhbmsgMyBTZXR1cCBUaW1lIGZyb20gQU9FIGFzc2VydGVkIHRvIFJlYWQgb3IgV3JpdGUgYXNzZXJ0ZWQgPSAxIGN5Y2xlICovCisjZGVmaW5lIEIzU1RfMgkJCTB4MDAyMDAwMDAJLyogQmFuayAzIFNldHVwIFRpbWUgZnJvbSBBT0UgYXNzZXJ0ZWQgdG8gUmVhZCBvciBXcml0ZSBhc3NlcnRlZCA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIzU1RfMwkJCTB4MDAzMDAwMDAJLyogQmFuayAzIFNldHVwIFRpbWUgZnJvbSBBT0UgYXNzZXJ0ZWQgdG8gUmVhZCBvciBXcml0ZSBhc3NlcnRlZCA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIzU1RfNAkJCTB4MDAwMDAwMDAJLyogQmFuayAzIFNldHVwIFRpbWUgZnJvbSBBT0UgYXNzZXJ0ZWQgdG8gUmVhZCBvciBXcml0ZSBhc3NlcnRlZCA9IDQgY3ljbGVzICovCisjZGVmaW5lIEIzSFRfMQkJCTB4MDA0MDAwMDAJLyogQmFuayAzIEhvbGQgVGltZSBmcm9tIFJlYWQgb3IgV3JpdGUgZGVhc3NlcnRlZCB0byBBT0UgZGVhc3NlcnRlZCA9IDEgY3ljbGUgKi8KKyNkZWZpbmUgQjNIVF8yCQkJMHgwMDgwMDAwMAkvKiBCYW5rIDMgSG9sZCBUaW1lIGZyb20gUmVhZCBvciBXcml0ZSBkZWFzc2VydGVkIHRvIEFPRSBkZWFzc2VydGVkID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjNIVF8zCQkJMHgwMEMwMDAwMAkvKiBCYW5rIDMgSG9sZCBUaW1lIGZyb20gUmVhZCBvciBXcml0ZSBkZWFzc2VydGVkIHRvIEFPRSBkZWFzc2VydGVkID0gMyBjeWNsZXMgKi8KKyNkZWZpbmUgQjNIVF8wCQkJMHgwMDAwMDAwMAkvKiBCYW5rIDMgSG9sZCBUaW1lIGZyb20gUmVhZCBvciBXcml0ZSBkZWFzc2VydGVkIHRvIEFPRSBkZWFzc2VydGVkID0gMCBjeWNsZXMgKi8KKyNkZWZpbmUgQjNSQVRfMQkJCTB4MDEwMDAwMDAJLyogQmFuayAzIFJlYWQgQWNjZXNzIFRpbWUgPSAxIGN5Y2xlICovCisjZGVmaW5lIEIzUkFUXzIJCQkweDAyMDAwMDAwCS8qIEJhbmsgMyBSZWFkIEFjY2VzcyBUaW1lID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgQjNSQVRfMwkJCTB4MDMwMDAwMDAJLyogQmFuayAzIFJlYWQgQWNjZXNzIFRpbWUgPSAzIGN5Y2xlcyAqLworI2RlZmluZSBCM1JBVF80CQkJMHgwNDAwMDAwMAkvKiBCYW5rIDMgUmVhZCBBY2Nlc3MgVGltZSA9IDQgY3ljbGVzICovCisjZGVmaW5lIEIzUkFUXzUJCQkweDA1MDAwMDAwCS8qIEJhbmsgMyBSZWFkIEFjY2VzcyBUaW1lID0gNSBjeWNsZXMgKi8KKyNkZWZpbmUgQjNSQVRfNgkJCTB4MDYwMDAwMDAJLyogQmFuayAzIFJlYWQgQWNjZXNzIFRpbWUgPSA2IGN5Y2xlcyAqLworI2RlZmluZSBCM1JBVF83CQkJMHgwNzAwMDAwMAkvKiBCYW5rIDMgUmVhZCBBY2Nlc3MgVGltZSA9IDcgY3ljbGVzICovCisjZGVmaW5lIEIzUkFUXzgJCQkweDA4MDAwMDAwCS8qIEJhbmsgMyBSZWFkIEFjY2VzcyBUaW1lID0gOCBjeWNsZXMgKi8KKyNkZWZpbmUgQjNSQVRfOQkJCTB4MDkwMDAwMDAJLyogQmFuayAzIFJlYWQgQWNjZXNzIFRpbWUgPSA5IGN5Y2xlcyAqLworI2RlZmluZSBCM1JBVF8xMAkJMHgwQTAwMDAwMAkvKiBCYW5rIDMgUmVhZCBBY2Nlc3MgVGltZSA9IDEwIGN5Y2xlcyAqLworI2RlZmluZSBCM1JBVF8xMQkJMHgwQjAwMDAwMAkvKiBCYW5rIDMgUmVhZCBBY2Nlc3MgVGltZSA9IDExIGN5Y2xlcyAqLworI2RlZmluZSBCM1JBVF8xMgkJMHgwQzAwMDAwMAkvKiBCYW5rIDMgUmVhZCBBY2Nlc3MgVGltZSA9IDEyIGN5Y2xlcyAqLworI2RlZmluZSBCM1JBVF8xMwkJMHgwRDAwMDAwMAkvKiBCYW5rIDMgUmVhZCBBY2Nlc3MgVGltZSA9IDEzIGN5Y2xlcyAqLworI2RlZmluZSBCM1JBVF8xNAkJMHgwRTAwMDAwMAkvKiBCYW5rIDMgUmVhZCBBY2Nlc3MgVGltZSA9IDE0IGN5Y2xlcyAqLworI2RlZmluZSBCM1JBVF8xNQkJMHgwRjAwMDAwMAkvKiBCYW5rIDMgUmVhZCBBY2Nlc3MgVGltZSA9IDE1IGN5Y2xlcyAqLworI2RlZmluZSBCM1dBVF8xCQkJMHgxMDAwMDAwMAkvKiBCYW5rIDMgV3JpdGUgQWNjZXNzIFRpbWUgPSAxIGN5Y2xlICovCisjZGVmaW5lIEIzV0FUXzIJCQkweDIwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDIgY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzMJCQkweDMwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDMgY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzQJCQkweDQwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDQgY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzUJCQkweDUwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDUgY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzYJCQkweDYwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDYgY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzcJCQkweDcwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDcgY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzgJCQkweDgwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDggY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzkJCQkweDkwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDkgY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzEwCQkweEEwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDEwIGN5Y2xlcyAqLworI2RlZmluZSBCM1dBVF8xMQkJMHhCMDAwMDAwMAkvKiBCYW5rIDMgV3JpdGUgQWNjZXNzIFRpbWUgPSAxMSBjeWNsZXMgKi8KKyNkZWZpbmUgQjNXQVRfMTIJCTB4QzAwMDAwMDAJLyogQmFuayAzIFdyaXRlIEFjY2VzcyBUaW1lID0gMTIgY3ljbGVzICovCisjZGVmaW5lIEIzV0FUXzEzCQkweEQwMDAwMDAwCS8qIEJhbmsgMyBXcml0ZSBBY2Nlc3MgVGltZSA9IDEzIGN5Y2xlcyAqLworI2RlZmluZSBCM1dBVF8xNAkJMHhFMDAwMDAwMAkvKiBCYW5rIDMgV3JpdGUgQWNjZXNzIFRpbWUgPSAxNCBjeWNsZXMgKi8KKyNkZWZpbmUgQjNXQVRfMTUJCTB4RjAwMDAwMDAJLyogQmFuayAzIFdyaXRlIEFjY2VzcyBUaW1lID0gMTUgY3ljbGVzICovCisKKy8qCisgKiBTRFJBTSBDT05UUk9MTEVSIE1BU0tTCisgKi8KKworLyogU0RHQ1RMIE1hc2tzICovCisjZGVmaW5lIFNDVExFCQkJMHgwMDAwMDAwMQkvKiBFbmFibGUgU0NMS1swXSwgL1NSQVMsIC9TQ0FTLCAvU1dFLCBTRFFNWzM6MF0gKi8KKyNkZWZpbmUgQ0xfMgkJCTB4MDAwMDAwMDgJLyogU0RSQU0gQ0FTIGxhdGVuY3kgPSAyIGN5Y2xlcyAqLworI2RlZmluZSBDTF8zCQkJMHgwMDAwMDAwQwkvKiBTRFJBTSBDQVMgbGF0ZW5jeSA9IDMgY3ljbGVzICovCisjZGVmaW5lIFBGRQkJCTB4MDAwMDAwMTAJLyogRW5hYmxlIFNEUkFNIHByZWZldGNoICovCisjZGVmaW5lIFBGUAkJCTB4MDAwMDAwMjAJLyogUHJlZmV0Y2ggaGFzIHByaW9yaXR5IG92ZXIgQU1DIHJlcXVlc3RzICovCisjZGVmaW5lIFRSQVNfMQkJCTB4MDAwMDAwNDAJLyogU0RSQU0gdFJBUyA9IDEgY3ljbGUgKi8KKyNkZWZpbmUgVFJBU18yCQkJMHgwMDAwMDA4MAkvKiBTRFJBTSB0UkFTID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU18zCQkJMHgwMDAwMDBDMAkvKiBTRFJBTSB0UkFTID0gMyBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU180CQkJMHgwMDAwMDEwMAkvKiBTRFJBTSB0UkFTID0gNCBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU181CQkJMHgwMDAwMDE0MAkvKiBTRFJBTSB0UkFTID0gNSBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU182CQkJMHgwMDAwMDE4MAkvKiBTRFJBTSB0UkFTID0gNiBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU183CQkJMHgwMDAwMDFDMAkvKiBTRFJBTSB0UkFTID0gNyBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU184CQkJMHgwMDAwMDIwMAkvKiBTRFJBTSB0UkFTID0gOCBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU185CQkJMHgwMDAwMDI0MAkvKiBTRFJBTSB0UkFTID0gOSBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU18xMAkJCTB4MDAwMDAyODAJLyogU0RSQU0gdFJBUyA9IDEwIGN5Y2xlcyAqLworI2RlZmluZSBUUkFTXzExCQkJMHgwMDAwMDJDMAkvKiBTRFJBTSB0UkFTID0gMTEgY3ljbGVzICovCisjZGVmaW5lIFRSQVNfMTIJCQkweDAwMDAwMzAwCS8qIFNEUkFNIHRSQVMgPSAxMiBjeWNsZXMgKi8KKyNkZWZpbmUgVFJBU18xMwkJCTB4MDAwMDAzNDAJLyogU0RSQU0gdFJBUyA9IDEzIGN5Y2xlcyAqLworI2RlZmluZSBUUkFTXzE0CQkJMHgwMDAwMDM4MAkvKiBTRFJBTSB0UkFTID0gMTQgY3ljbGVzICovCisjZGVmaW5lIFRSQVNfMTUJCQkweDAwMDAwM0MwCS8qIFNEUkFNIHRSQVMgPSAxNSBjeWNsZXMgKi8KKyNkZWZpbmUgVFJQXzEJCQkweDAwMDAwODAwCS8qIFNEUkFNIHRSUCA9IDEgY3ljbGUgKi8KKyNkZWZpbmUgVFJQXzIJCQkweDAwMDAxMDAwCS8qIFNEUkFNIHRSUCA9IDIgY3ljbGVzICovCisjZGVmaW5lIFRSUF8zCQkJMHgwMDAwMTgwMAkvKiBTRFJBTSB0UlAgPSAzIGN5Y2xlcyAqLworI2RlZmluZSBUUlBfNAkJCTB4MDAwMDIwMDAJLyogU0RSQU0gdFJQID0gNCBjeWNsZXMgKi8KKyNkZWZpbmUgVFJQXzUJCQkweDAwMDAyODAwCS8qIFNEUkFNIHRSUCA9IDUgY3ljbGVzICovCisjZGVmaW5lIFRSUF82CQkJMHgwMDAwMzAwMAkvKiBTRFJBTSB0UlAgPSA2IGN5Y2xlcyAqLworI2RlZmluZSBUUlBfNwkJCTB4MDAwMDM4MDAJLyogU0RSQU0gdFJQID0gNyBjeWNsZXMgKi8KKyNkZWZpbmUgVFJDRF8xCQkJMHgwMDAwODAwMAkvKiBTRFJBTSB0UkNEID0gMSBjeWNsZSAqLworI2RlZmluZSBUUkNEXzIJCQkweDAwMDEwMDAwCS8qIFNEUkFNIHRSQ0QgPSAyIGN5Y2xlcyAqLworI2RlZmluZSBUUkNEXzMJCQkweDAwMDE4MDAwCS8qIFNEUkFNIHRSQ0QgPSAzIGN5Y2xlcyAqLworI2RlZmluZSBUUkNEXzQJCQkweDAwMDIwMDAwCS8qIFNEUkFNIHRSQ0QgPSA0IGN5Y2xlcyAqLworI2RlZmluZSBUUkNEXzUJCQkweDAwMDI4MDAwCS8qIFNEUkFNIHRSQ0QgPSA1IGN5Y2xlcyAqLworI2RlZmluZSBUUkNEXzYJCQkweDAwMDMwMDAwCS8qIFNEUkFNIHRSQ0QgPSA2IGN5Y2xlcyAqLworI2RlZmluZSBUUkNEXzcJCQkweDAwMDM4MDAwCS8qIFNEUkFNIHRSQ0QgPSA3IGN5Y2xlcyAqLworI2RlZmluZSBUV1JfMQkJCTB4MDAwODAwMDAJLyogU0RSQU0gdFdSID0gMSBjeWNsZSAqLworI2RlZmluZSBUV1JfMgkJCTB4MDAxMDAwMDAJLyogU0RSQU0gdFdSID0gMiBjeWNsZXMgKi8KKyNkZWZpbmUgVFdSXzMJCQkweDAwMTgwMDAwCS8qIFNEUkFNIHRXUiA9IDMgY3ljbGVzICovCisjZGVmaW5lIFBVUFNECQkJMHgwMDIwMDAwMAkvKiBQb3dlci11cCBzdGFydCBkZWxheSAqLworI2RlZmluZSBQU00JCQkweDAwNDAwMDAwCS8qIFNEUkFNIHBvd2VyLXVwIHNlcXVlbmNlID0gUHJlY2hhcmdlLCBtb2RlIHJlZ2lzdGVyIHNldCwgOCBDQlIgcmVmcmVzaCBjeWNsZXMgKi8KKyNkZWZpbmUgUFNTCQkJMHgwMDgwMDAwMAkvKiBlbmFibGUgU0RSQU0gcG93ZXItdXAgc2VxdWVuY2Ugb24gbmV4dCBTRFJBTSBhY2Nlc3MgKi8KKyNkZWZpbmUgU1JGUwkJCTB4MDEwMDAwMDAJLyogU3RhcnQgU0RSQU0gc2VsZi1yZWZyZXNoIG1vZGUgKi8KKyNkZWZpbmUgRUJVRkUJCQkweDAyMDAwMDAwCS8qIEVuYWJsZSBleHRlcm5hbCBidWZmZXJpbmcgdGltaW5nICovCisjZGVmaW5lIEZCQlJXCQkJMHgwNDAwMDAwMAkvKiBGYXN0IGJhY2stdG8tYmFjayByZWFkIHdyaXRlIGVuYWJsZSAqLworI2RlZmluZSBFTVJFTgkJCTB4MTAwMDAwMDAJLyogRXh0ZW5kZWQgbW9kZSByZWdpc3RlciBlbmFibGUgKi8KKyNkZWZpbmUgVENTUgkJCTB4MjAwMDAwMDAJLyogVGVtcCBjb21wZW5zYXRlZCBzZWxmIHJlZnJlc2ggdmFsdWUgODUgZGVnIEMgKi8KKyNkZWZpbmUgQ0REQkcJCQkweDQwMDAwMDAwCS8qIFRyaXN0YXRlIFNEUkFNIGNvbnRyb2xzIGR1cmluZyBidXMgZ3JhbnQgKi8KKworLyogRUJJVV9TREJDVEwgTWFza3MgKi8KKyNkZWZpbmUgRUJFCQkJMHgwMDAwMDAwMQkvKiBFbmFibGUgU0RSQU0gZXh0ZXJuYWwgYmFuayAqLworI2RlZmluZSBFQlNaXzE2CQkJMHgwMDAwMDAwMAkvKiBTRFJBTSBleHRlcm5hbCBiYW5rIHNpemUgPSAxNk1CICovCisjZGVmaW5lIEVCU1pfMzIJCQkweDAwMDAwMDAyCS8qIFNEUkFNIGV4dGVybmFsIGJhbmsgc2l6ZSA9IDMyTUIgKi8KKyNkZWZpbmUgRUJTWl82NAkJCTB4MDAwMDAwMDQJLyogU0RSQU0gZXh0ZXJuYWwgYmFuayBzaXplID0gNjRNQiAqLworI2RlZmluZSBFQlNaXzEyOAkJMHgwMDAwMDAwNgkvKiBTRFJBTSBleHRlcm5hbCBiYW5rIHNpemUgPSAxMjhNQiAqLworI2RlZmluZSBFQkNBV184CQkJMHgwMDAwMDAwMAkvKiBTRFJBTSBleHRlcm5hbCBiYW5rIGNvbHVtbiBhZGRyZXNzIHdpZHRoID0gOCBiaXRzICovCisjZGVmaW5lIEVCQ0FXXzkJCQkweDAwMDAwMDEwCS8qIFNEUkFNIGV4dGVybmFsIGJhbmsgY29sdW1uIGFkZHJlc3Mgd2lkdGggPSA5IGJpdHMgKi8KKyNkZWZpbmUgRUJDQVdfMTAJCTB4MDAwMDAwMjAJLyogU0RSQU0gZXh0ZXJuYWwgYmFuayBjb2x1bW4gYWRkcmVzcyB3aWR0aCA9IDkgYml0cyAqLworI2RlZmluZSBFQkNBV18xMQkJMHgwMDAwMDAzMAkvKiBTRFJBTSBleHRlcm5hbCBiYW5rIGNvbHVtbiBhZGRyZXNzIHdpZHRoID0gOSBiaXRzICovCisKKy8qIEVCSVVfU0RTVEFUIE1hc2tzICovCisjZGVmaW5lIFNEQ0kJCQkweDAwMDAwMDAxCS8qIFNEUkFNIGNvbnRyb2xsZXIgaXMgaWRsZSAqLworI2RlZmluZSBTRFNSQQkJCTB4MDAwMDAwMDIJLyogU0RSQU0gU0RSQU0gc2VsZiByZWZyZXNoIGlzIGFjdGl2ZSAqLworI2RlZmluZSBTRFBVQQkJCTB4MDAwMDAwMDQJLyogU0RSQU0gcG93ZXIgdXAgYWN0aXZlICovCisjZGVmaW5lIFNEUlMJCQkweDAwMDAwMDA4CS8qIFNEUkFNIGlzIGluIHJlc2V0IHN0YXRlICovCisjZGVmaW5lIFNERUFTRQkJCTB4MDAwMDAwMTAJLyogU0RSQU0gRUFCIHN0aWNreSBlcnJvciBzdGF0dXMgLSBXMUMgKi8KKyNkZWZpbmUgQkdTVEFUCQkJMHgwMDAwMDAyMAkvKiBCdXMgZ3JhbnRlZCAqLworCisjZW5kaWYgLyogX0RFRl9CRjUzMl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvZGVmQkY1MzMuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9kZWZCRjUzMy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZTUwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvZGVmQkY1MzMuaApAQCAtMCwwICsxLDI0IEBACisvKgorICogZGVmQkY1MzMuaAorICoKKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4gU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIE5vbi1HUEwgTGljZW5zZSBhbHNvIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIFZpc3VhbERTUCsrCisgKgorICogaHR0cDovL3d3dy5hbmFsb2cuY29tL3Byb2Nlc3NvcnMvcmVzb3VyY2VzL2Nyb3NzY29yZS92aXN1YWxEc3BEZXZTb2Z0d2FyZS5odG1sCisgKgorICogKGMpIENvcHlyaWdodCAyMDAxLTIwMDUgQW5hbG9nIERldmljZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAorICoKKyAqIFRoaXMgZmlsZSB1bmRlciBzb3VyY2UgY29kZSBjb250cm9sLCBwbGVhc2Ugc2VuZCBidWdzIG9yIGNoYW5nZXMgdG86CisgKiBkc3B0b29scy5zdXBwb3J0QGFuYWxvZy5jb20KKyAqCisgKi8KKworI2lmbmRlZiBfREVGQkY1MzNfSAorI2RlZmluZSBfREVGQkY1MzNfSAorCisjaW5jbHVkZSA8YXNtL2NwdS9kZWZCRjUzMi5oPgorCisjZW5kaWYgLyogX0RFRkJGNTMzX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2NwdS9kZWZCRjUzM19leHRuLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvZGVmQkY1MzNfZXh0bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YTFjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvZGVmQkY1MzNfZXh0bi5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBkZWZCRjUzM19leHRuLmgKKyAqCisgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSAiQ09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQorICogZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBOb24tR1BMIExpY2Vuc2UgYWxzbyBhdmFpbGFibGUgYXMgcGFydCBvZiBWaXN1YWxEU1ArKworICoKKyAqIGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9wcm9jZXNzb3JzL3Jlc291cmNlcy9jcm9zc2NvcmUvdmlzdWFsRHNwRGV2U29mdHdhcmUuaHRtbAorICoKKyAqIChjKSBDb3B5cmlnaHQgMjAwMS0yMDA1IEFuYWxvZyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKKyAqCisgKiBUaGlzIGZpbGUgdW5kZXIgc291cmNlIGNvZGUgY29udHJvbCwgcGxlYXNlIHNlbmQgYnVncyBvciBjaGFuZ2VzIHRvOgorICogZHNwdG9vbHMuc3VwcG9ydEBhbmFsb2cuY29tCisgKgorICovCisKKyNpZm5kZWYgX0RFRl9CRjUzM19FWFROX0gKKyNkZWZpbmUgX0RFRl9CRjUzM19FWFROX0gKKworI2RlZmluZSBPRkZTRVRfKCB4ICkJCSgoeCkgJiAweDAwMDBGRkZGKSAvKiBkZWZpbmUgbWFjcm8gZm9yIG9mZnNldCAqLworLyogRGVsYXkgaW5zZXJ0ZWQgZm9yIFBMTCB0cmFuc2l0aW9uICovCisjZGVmaW5lIERFTEFZCQkJMHgxMDAwCisKKyNkZWZpbmUgTDFfSVNSQU0JCTB4RkZBMDAwMDAKKyNkZWZpbmUgTDFfSVNSQU1fRU5ECQkweEZGQTEwMDAwCisjZGVmaW5lIERBVEFfQkFOS0FfU1JBTQkJMHhGRjgwMDAwMAorI2RlZmluZSBEQVRBX0JBTktBX1NSQU1fRU5ECTB4RkY4MDgwMDAKKyNkZWZpbmUgREFUQV9CQU5LQl9TUkFNCQkweEZGOTAwMDAwCisjZGVmaW5lIERBVEFfQkFOS0JfU1JBTV9FTkQJMHhGRjkwODAwMAorI2RlZmluZSBTWVNNTVJfQkFTRQkJMHhGRkMwMDAwMAorI2RlZmluZSBXRFNJWkUxNgkJMHgwMDAwMDAwNAorCisvKiBFdmVudCBWZWN0b3IgVGFibGUgQWRkcmVzcyAqLworI2RlZmluZSBFVlRfRU1VTEFUSU9OX0FERFIJMHhmZmUwMjAwMAorI2RlZmluZSBFVlRfUkVTRVRfQUREUgkJMHhmZmUwMjAwNAorI2RlZmluZSBFVlRfTk1JX0FERFIJCTB4ZmZlMDIwMDgKKyNkZWZpbmUgRVZUX0VYQ0VQVElPTl9BRERSCTB4ZmZlMDIwMGMKKyNkZWZpbmUgRVZUX0dMT0JBTF9JTlRfRU5CX0FERFIJMHhmZmUwMjAxMAorI2RlZmluZSBFVlRfSEFSRFdBUkVfRVJST1JfQUREUgkweGZmZTAyMDE0CisjZGVmaW5lIEVWVF9USU1FUl9BRERSCQkweGZmZTAyMDE4CisjZGVmaW5lIEVWVF9JVkc3X0FERFIJCTB4ZmZlMDIwMWMKKyNkZWZpbmUgRVZUX0lWRzhfQUREUgkJMHhmZmUwMjAyMAorI2RlZmluZSBFVlRfSVZHOV9BRERSCQkweGZmZTAyMDI0CisjZGVmaW5lIEVWVF9JVkcxMF9BRERSCQkweGZmZTAyMDI4CisjZGVmaW5lIEVWVF9JVkcxMV9BRERSCQkweGZmZTAyMDJjCisjZGVmaW5lIEVWVF9JVkcxMl9BRERSCQkweGZmZTAyMDMwCisjZGVmaW5lIEVWVF9JVkcxM19BRERSCQkweGZmZTAyMDM0CisjZGVmaW5lIEVWVF9JVkcxNF9BRERSCQkweGZmZTAyMDM4CisjZGVmaW5lIEVWVF9JVkcxNV9BRERSCQkweGZmZTAyMDNjCisjZGVmaW5lIEVWVF9PVkVSUklERV9BRERSCTB4ZmZlMDIxMDAKKworLyogSU1BU0sgQml0IHZhbHVlcyAqLworI2RlZmluZSBJVkcxNV9QT1MJCTB4MDAwMDgwMDAKKyNkZWZpbmUgSVZHMTRfUE9TCQkweDAwMDA0MDAwCisjZGVmaW5lIElWRzEzX1BPUwkJMHgwMDAwMjAwMAorI2RlZmluZSBJVkcxMl9QT1MJCTB4MDAwMDEwMDAKKyNkZWZpbmUgSVZHMTFfUE9TCQkweDAwMDAwODAwCisjZGVmaW5lIElWRzEwX1BPUwkJMHgwMDAwMDQwMAorI2RlZmluZSBJVkc5X1BPUwkJMHgwMDAwMDIwMAorI2RlZmluZSBJVkc4X1BPUwkJMHgwMDAwMDEwMAorI2RlZmluZSBJVkc3X1BPUwkJMHgwMDAwMDA4MAorI2RlZmluZSBJVkdUTVJfUE9TCQkweDAwMDAwMDQwCisjZGVmaW5lIElWR0hXX1BPUwkJMHgwMDAwMDAyMAorCisjZGVmaW5lIFdET0dfVE1SX0RJU0FCTEUJKDB4QUQgPDwgNCkKKyNkZWZpbmUgSUNUTF9SU1QJCTB4MDAwMDAwMDAKKyNkZWZpbmUgSUNUTF9OTUkJCTB4MDAwMDAwMDIKKyNkZWZpbmUgSUNUTF9HUAkJCTB4MDAwMDAwMDQKKyNkZWZpbmUgSUNUTF9ESVNBQkxFCQkweDAwMDAwMDAzCisKKy8qIFdhdGNoIERvZyB0aW1lciB2YWx1ZXMgc2V0dXAgKi8KKyNkZWZpbmUgV0FUQ0hET0dfRElTQUJMRQlXRE9HX1RNUl9ESVNBQkxFIHwgSUNUTF9ESVNBQkxFCisKKyNlbmRpZgkvKiBfREVGX0JGNTMzX0VYVE5fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2RlZl9MUEJsYWNrZmluLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jcHUvZGVmX0xQQmxhY2tmaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWM3OGM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vY3B1L2RlZl9MUEJsYWNrZmluLmgKQEAgLTAsMCArMSw0NDUgQEAKKy8qCisgKiBkZWZfTFBCbGFja2Zpbi5oCisgKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLiBTZWUgdGhlIGZpbGUgIkNPUFlJTkciIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUKKyAqIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogTm9uLUdQTCBMaWNlbnNlIGFsc28gYXZhaWxhYmxlIGFzIHBhcnQgb2YgVmlzdWFsRFNQKysKKyAqCisgKiBodHRwOi8vd3d3LmFuYWxvZy5jb20vcHJvY2Vzc29ycy9yZXNvdXJjZXMvY3Jvc3Njb3JlL3Zpc3VhbERzcERldlNvZnR3YXJlLmh0bWwKKyAqCisgKiAoYykgQ29weXJpZ2h0IDIwMDEtMjAwNSBBbmFsb2cgRGV2aWNlcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCisgKgorICogVGhpcyBmaWxlIHVuZGVyIHNvdXJjZSBjb2RlIGNvbnRyb2wsIHBsZWFzZSBzZW5kIGJ1Z3Mgb3IgY2hhbmdlcyB0bzoKKyAqIGRzcHRvb2xzLnN1cHBvcnRAYW5hbG9nLmNvbQorICoKKyAqLworCisvKiBMUCBCbGFja2ZpbiBDT1JFIFJFR0lTVEVSIEJJVCAmIEFERFJFU1MgREVGSU5JVElPTlMgRk9SIEFEU1AtQkY1MzIgKi8KKworI2lmbmRlZiBfREVGX0xQQkxBQ0tGSU5fSAorI2RlZmluZSBfREVGX0xQQkxBQ0tGSU5fSAorCisvKgorICogI2lmICFkZWZpbmVkKF9fQURTUExQQkxBQ0tGSU5fXykKKyAqICN3YXJuaW5nIGRlZl9MUEJsYWNrZmluLmggc2hvdWxkIG9ubHkgYmUgaW5jbHVkZWQgZm9yIDUzMiBjb21wYXRpYmxlIGNoaXBzLgorICogI2VuZGlmCisgKi8KKworI2RlZmluZSBNS19CTVNLXyggeCApICgxPDx4KQkvKiBNYWtlIGEgYml0IG1hc2sgZnJvbSBhIGJpdCBwb3NpdGlvbiAqLworCisvKgorICogU3lzdGVtIFJlZ2lzdGVyIEJpdHMKKyAqLworCisvKgorICogQVNUQVQgcmVnaXN0ZXIKKyAqLworCisvKiBkZWZpbml0aW9ucyBvZiBBU1RBVCBiaXQgcG9zaXRpb25zICovCisjZGVmaW5lIEFTVEFUX0FaX1AJCTB4MDAwMDAwMDAJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvciBzaGlmdGVyIG9wZXJhdGlvbiBpcyB6ZXJvICovCisjZGVmaW5lIEFTVEFUX0FOX1AJCTB4MDAwMDAwMDEJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvciBzaGlmdGVyIG9wZXJhdGlvbiBpcyBuZWdhdGl2ZSAqLworI2RlZmluZSBBU1RBVF9DQ19QCQkweDAwMDAwMDA1CS8qIENvbmRpdGlvbiBDb2RlLCB1c2VkIGZvciBob2xkaW5nIGNvbXBhcmlzb24gcmVzdWx0cyAqLworI2RlZmluZSBBU1RBVF9BUV9QCQkweDAwMDAwMDA2CS8qIFF1b3RpZW50IEJpdCAqLworI2RlZmluZSBBU1RBVF9STkRfTU9EX1AJCTB4MDAwMDAwMDgJLyogUm91bmRpbmcgbW9kZSwgc2V0IGZvciBiaWFzZWQsIGNsZWFyIGZvciB1bmJpYXNlZCAqLworI2RlZmluZSBBU1RBVF9BQzBfUAkJMHgwMDAwMDAwQwkvKiBSZXN1bHQgb2YgbGFzdCBBTFUwIG9wZXJhdGlvbiBnZW5lcmF0ZWQgYSBjYXJyeSAqLworI2RlZmluZSBBU1RBVF9BQzBfQ09QWV9QCTB4MDAwMDAwMDIJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvcGVyYXRpb24gZ2VuZXJhdGVkIGEgY2FycnkgKi8KKyNkZWZpbmUgQVNUQVRfQUMxX1AJCTB4MDAwMDAwMEQJLyogUmVzdWx0IG9mIGxhc3QgQUxVMSBvcGVyYXRpb24gZ2VuZXJhdGVkIGEgY2FycnkgKi8KKyNkZWZpbmUgQVNUQVRfQVYwX1AJCTB4MDAwMDAwMTAJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvciBNQUMwIG9wZXJhdGlvbiBvdmVyZmxvd2VkLCBzdGlja3kgZm9yIE1BQyAqLworI2RlZmluZSBBU1RBVF9BVjBTX1AJCTB4MDAwMDAwMTEJLyogU3RpY2t5IHZlcnNpb24gb2YgQVNUQVRfQVYwICAqLworI2RlZmluZSBBU1RBVF9BVjFfUAkJMHgwMDAwMDAxMgkvKiBSZXN1bHQgb2YgbGFzdCBNQUMxIG9wZXJhdGlvbiBvdmVyZmxvd2VkLCBzdGlja3kgZm9yIE1BQyAqLworI2RlZmluZSBBU1RBVF9BVjFTX1AJCTB4MDAwMDAwMTMJLyogU3RpY2t5IHZlcnNpb24gb2YgQVNUQVRfQVYxICAqLworI2RlZmluZSBBU1RBVF9WX1AJCTB4MDAwMDAwMTgJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvciBNQUMwIG9wZXJhdGlvbiBvdmVyZmxvd2VkICovCisjZGVmaW5lIEFTVEFUX1ZfQ09QWV9QCQkweDAwMDAwMDAzCS8qIFJlc3VsdCBvZiBsYXN0IEFMVTAgb3IgTUFDMCBvcGVyYXRpb24gb3ZlcmZsb3dlZCAqLworI2RlZmluZSBBU1RBVF9WU19QCQkweDAwMDAwMDE5CS8qIFN0aWNreSB2ZXJzaW9uIG9mIEFTVEFUX1YgKi8KKworLyogKiogTWFza3MgKi8KKyNkZWZpbmUgQVNUQVRfQVoJCU1LX0JNU0tfKEFTVEFUX0FaX1ApCS8qIFJlc3VsdCBvZiBsYXN0IEFMVTAgb3Igc2hpZnRlciBvcGVyYXRpb24gaXMgemVybyAqLworI2RlZmluZSBBU1RBVF9BTgkJTUtfQk1TS18oQVNUQVRfQU5fUCkJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvciBzaGlmdGVyIG9wZXJhdGlvbiBpcyBuZWdhdGl2ZSAqLworI2RlZmluZSBBU1RBVF9BQzAJCU1LX0JNU0tfKEFTVEFUX0FDMF9QKQkvKiBSZXN1bHQgb2YgbGFzdCBBTFUwIG9wZXJhdGlvbiBnZW5lcmF0ZWQgYSBjYXJyeSAqLworI2RlZmluZSBBU1RBVF9BQzBfQ09QWQkJTUtfQk1TS18oQVNUQVRfQUMwX0NPUFlfUCkJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvcGVyYXRpb24gZ2VuZXJhdGVkIGEgY2FycnkgKi8KKyNkZWZpbmUgQVNUQVRfQUMxCQlNS19CTVNLXyhBU1RBVF9BQzFfUCkJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvcGVyYXRpb24gZ2VuZXJhdGVkIGEgY2FycnkgKi8KKyNkZWZpbmUgQVNUQVRfQVYwCQlNS19CTVNLXyhBU1RBVF9BVjBfUCkJLyogUmVzdWx0IG9mIGxhc3QgQUxVMCBvciBNQUMwIG9wZXJhdGlvbiBvdmVyZmxvd2VkLCBzdGlja3kgZm9yIE1BQyAqLworI2RlZmluZSBBU1RBVF9BVjEJCU1LX0JNU0tfKEFTVEFUX0FWMV9QKQkvKiBSZXN1bHQgb2YgbGFzdCBNQUMxIG9wZXJhdGlvbiBvdmVyZmxvd2VkLCBzdGlja3kgZm9yIE1BQyAqLworI2RlZmluZSBBU1RBVF9DQwkJTUtfQk1TS18oQVNUQVRfQ0NfUCkJLyogQ29uZGl0aW9uIENvZGUsIHVzZWQgZm9yIGhvbGRpbmcgY29tcGFyaXNvbiByZXN1bHRzICovCisjZGVmaW5lIEFTVEFUX0FRCQlNS19CTVNLXyhBU1RBVF9BUV9QKQkvKiBRdW90aWVudCBCaXQgKi8KKyNkZWZpbmUgQVNUQVRfUk5EX01PRAkJTUtfQk1TS18oQVNUQVRfUk5EX01PRF9QKQkvKiBSb3VuZGluZyBtb2RlLCBzZXQgZm9yIGJpYXNlZCwgY2xlYXIgZm9yIHVuYmlhc2VkICovCisjZGVmaW5lIEFTVEFUX1YJCQlNS19CTVNLXyhBU1RBVF9WX1ApCS8qIE92ZXJmbG93IEJpdCAqLworI2RlZmluZSBBU1RBVF9WX0NPUFkJCU1LX0JNU0tfKEFTVEFUX1ZfQ09QWV9QKQkvKiBPdmVyZmxvdyBCaXQgKi8KKworLyoKKyAqIFNFUVNUQVQgcmVnaXN0ZXIKKyAqLworCisvKiAqKiBCaXQgUG9zaXRpb25zICovCisjZGVmaW5lIFNFUVNUQVRfRVhDQVVTRTBfUAkweDAwMDAwMDAwCS8qIExhc3QgZXhjZXB0aW9uIGNhdXNlIGJpdCAwICovCisjZGVmaW5lIFNFUVNUQVRfRVhDQVVTRTFfUAkweDAwMDAwMDAxCS8qIExhc3QgZXhjZXB0aW9uIGNhdXNlIGJpdCAxICovCisjZGVmaW5lIFNFUVNUQVRfRVhDQVVTRTJfUAkweDAwMDAwMDAyCS8qIExhc3QgZXhjZXB0aW9uIGNhdXNlIGJpdCAyICovCisjZGVmaW5lIFNFUVNUQVRfRVhDQVVTRTNfUAkweDAwMDAwMDAzCS8qIExhc3QgZXhjZXB0aW9uIGNhdXNlIGJpdCAzICovCisjZGVmaW5lIFNFUVNUQVRfRVhDQVVTRTRfUAkweDAwMDAwMDA0CS8qIExhc3QgZXhjZXB0aW9uIGNhdXNlIGJpdCA0ICovCisjZGVmaW5lIFNFUVNUQVRfRVhDQVVTRTVfUAkweDAwMDAwMDA1CS8qIExhc3QgZXhjZXB0aW9uIGNhdXNlIGJpdCA1ICovCisjZGVmaW5lIFNFUVNUQVRfSURMRV9SRVFfUAkweDAwMDAwMDBDCS8qIFBlbmRpbmcgaWRsZSBtb2RlIHJlcXVlc3QsIHNldCBieSBJRExFIGluc3RydWN0aW9uICovCisjZGVmaW5lIFNFUVNUQVRfU0ZUUkVTRVRfUAkweDAwMDAwMDBECS8qIEluZGljYXRlcyB3aGV0aGVyIHRoZSBsYXN0IHJlc2V0IHdhcyBhIHNvZnR3YXJlIHJlc2V0ICg9MSkgKi8KKyNkZWZpbmUgU0VRU1RBVF9IV0VSUkNBVVNFMF9QCTB4MDAwMDAwMEUJLyogTGFzdCBodyBlcnJvciBjYXVzZSBiaXQgMCAqLworI2RlZmluZSBTRVFTVEFUX0hXRVJSQ0FVU0UxX1AJMHgwMDAwMDAwRgkvKiBMYXN0IGh3IGVycm9yIGNhdXNlIGJpdCAxICovCisjZGVmaW5lIFNFUVNUQVRfSFdFUlJDQVVTRTJfUAkweDAwMDAwMDEwCS8qIExhc3QgaHcgZXJyb3IgY2F1c2UgYml0IDIgKi8KKyNkZWZpbmUgU0VRU1RBVF9IV0VSUkNBVVNFM19QCTB4MDAwMDAwMTEJLyogTGFzdCBodyBlcnJvciBjYXVzZSBiaXQgMyAqLworI2RlZmluZSBTRVFTVEFUX0hXRVJSQ0FVU0U0X1AJMHgwMDAwMDAxMgkvKiBMYXN0IGh3IGVycm9yIGNhdXNlIGJpdCA0ICovCisjZGVmaW5lIFNFUVNUQVRfSFdFUlJDQVVTRTVfUAkweDAwMDAwMDEzCS8qIExhc3QgaHcgZXJyb3IgY2F1c2UgYml0IDUgKi8KKyNkZWZpbmUgU0VRU1RBVF9IV0VSUkNBVVNFNl9QCTB4MDAwMDAwMTQJLyogTGFzdCBodyBlcnJvciBjYXVzZSBiaXQgNiAqLworI2RlZmluZSBTRVFTVEFUX0hXRVJSQ0FVU0U3X1AJMHgwMDAwMDAxNQkvKiBMYXN0IGh3IGVycm9yIGNhdXNlIGJpdCA3ICovCisKKy8qICoqIE1hc2tzICovCisvKiBFeGNlcHRpb24gY2F1c2UgKi8KKyNkZWZpbmUgU0VRU1RBVF9FWENBVVNFCQlNS19CTVNLXyhTRVFTVEFUX0VYQ0FVU0UwX1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0VYQ0FVU0UxX1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0VYQ0FVU0UyX1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0VYQ0FVU0UzX1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0VYQ0FVU0U0X1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0VYQ0FVU0U1X1AgKSB8IFwKKwkJCQkwCisKKy8qIEluZGljYXRlcyB3aGV0aGVyIHRoZSBsYXN0IHJlc2V0IHdhcyBhIHNvZnR3YXJlIHJlc2V0ICg9MSkgKi8KKyNkZWZpbmUgU0VRU1RBVF9TRlRSRVNFVAlNS19CTVNLXyhTRVFTVEFUX1NGVFJFU0VUX1AgKQorCisvKiBMYXN0IGh3IGVycm9yIGNhdXNlICovCisjZGVmaW5lIFNFUVNUQVRfSFdFUlJDQVVTRQlNS19CTVNLXyhTRVFTVEFUX0hXRVJSQ0FVU0UwX1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0hXRVJSQ0FVU0UxX1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0hXRVJSQ0FVU0UyX1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0hXRVJSQ0FVU0UzX1AgKSB8IFwKKwkJCQlNS19CTVNLXyhTRVFTVEFUX0hXRVJSQ0FVU0U0X1AgKSB8IFwKKwkJCQkwCisKKy8qCisgKiBTWVNDRkcgcmVnaXN0ZXIKKyAqLworCisvKiAqKiBCaXQgUG9zaXRpb25zICovCisjZGVmaW5lIFNZU0NGR19TU1NURVBfUAkJMHgwMDAwMDAwMAkvKiBTdXBlcnZpc29yIHNpbmdsZSBzdGVwLCB3aGVuIHNldCBpdCBmb3JjZXMgYW4gZXhjZXB0aW9uIGZvciBlYWNoIGluc3RydWN0aW9uIGV4ZWN1dGVkICovCisjZGVmaW5lIFNZU0NGR19DQ0VOX1AJCTB4MDAwMDAwMDEJLyogRW5hYmxlIGN5Y2xlIGNvdW50ZXIgKD0xKSAqLworI2RlZmluZSBTWVNDRkdfU05FTl9QCQkweDAwMDAwMDAyCS8qIFNlbGYgbmVzdGluZyBJbnRlcnJ1cHQgRW5hYmxlICovCisKKy8qICoqIE1hc2tzICovCisjZGVmaW5lIFNZU0NGR19TU1NURVAJCU1LX0JNU0tfKFNZU0NGR19TU1NURVBfUCkJLyogU3VwZXJ2aXNvciBzaW5nbGUgc3RlcCwgd2hlbiBzZXQgaXQgZm9yY2VzIGFuIGV4Y2VwdGlvbiBmb3IgZWFjaCBpbnN0cnVjdGlvbiBleGVjdXRlZCAqLworI2RlZmluZSBTWVNDRkdfQ0NFTgkJTUtfQk1TS18oU1lTQ0ZHX0NDRU5fUCkJCS8qIEVuYWJsZSBjeWNsZSBjb3VudGVyICg9MSkgKi8KKyNkZWZpbmUgU1lTQ0ZHX1NORU4JCU1LX0JNU0tfKFNZU0NGR19TTkVOX1AJCS8qIFNlbGYgTmVzdGluZyBJbnRlcnJ1cHQgRW5hYmxlICovCisKKy8qIEJhY2t3YXJkLWNvbXBhdGliaWxpdHkgZm9yIHR5cG9zIGluIHByaW9yIHJlbGVhc2VzICovCisjZGVmaW5lIFNZU0NGR19TU1NTVEVQCQlTWVNDRkdfU1NTVEVQCisjZGVmaW5lIFNZU0NGR19DQ0NFTgkJU1lTQ0ZHX0NDRU4KKworLyoKKyAqIENvcmUgTU1SIFJlZ2lzdGVyIE1hcAorICovCisKKy8qIERhdGEgQ2FjaGUgJiBTUkFNIE1lbW9yeSAgKDB4RkZFMDAwMDAgLSAweEZGRTAwNDA0KSAqLworI2RlZmluZSBTUkFNX0JBU0VfQUREUkVTUwkweEZGRTAwMDAwCS8qIFNSQU0gQmFzZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIERNRU1fQ09OVFJPTAkJMHhGRkUwMDAwNAkvKiBEYXRhIG1lbW9yeSBjb250cm9sICovCisjZGVmaW5lIERDUExCX1NUQVRVUwkJMHhGRkUwMDAwOAkvKiBEYXRhIENhY2hlIFByb2dyYW1tYWJsZSBMb29rLUFzaWRlIEJ1ZmZlciBTdGF0dXMgKi8KKyNkZWZpbmUgRENQTEJfRkFVTFRfU1RBVFVTCTB4RkZFMDAwMDgJLyogIiIgKG9sZGVyIGRlZmluZSkgKi8KKyNkZWZpbmUgRENQTEJfRkFVTFRfQUREUgkweEZGRTAwMDBDCS8qIERhdGEgQ2FjaGUgUHJvZ3JhbW1hYmxlIExvb2stQXNpZGUgQnVmZmVyIEZhdWx0IEFkZHJlc3MgKi8KKyNkZWZpbmUgRENQTEJfQUREUjAJCTB4RkZFMDAxMDAJLyogRGF0YSBDYWNoZSBQcm90ZWN0aW9uIExvb2thc2lkZSBCdWZmZXIgMCAqLworI2RlZmluZSBEQ1BMQl9BRERSMQkJMHhGRkUwMDEwNAkvKiBEYXRhIENhY2hlIFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxICovCisjZGVmaW5lIERDUExCX0FERFIyCQkweEZGRTAwMTA4CS8qIERhdGEgQ2FjaGUgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDIgKi8KKyNkZWZpbmUgRENQTEJfQUREUjMJCTB4RkZFMDAxMEMJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDMgKi8KKyNkZWZpbmUgRENQTEJfQUREUjQJCTB4RkZFMDAxMTAJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDQgKi8KKyNkZWZpbmUgRENQTEJfQUREUjUJCTB4RkZFMDAxMTQJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDUgKi8KKyNkZWZpbmUgRENQTEJfQUREUjYJCTB4RkZFMDAxMTgJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDYgKi8KKyNkZWZpbmUgRENQTEJfQUREUjcJCTB4RkZFMDAxMUMJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDcgKi8KKyNkZWZpbmUgRENQTEJfQUREUjgJCTB4RkZFMDAxMjAJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDggKi8KKyNkZWZpbmUgRENQTEJfQUREUjkJCTB4RkZFMDAxMjQJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDkgKi8KKyNkZWZpbmUgRENQTEJfQUREUjEwCQkweEZGRTAwMTI4CS8qIERhdGEgQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxMCAqLworI2RlZmluZSBEQ1BMQl9BRERSMTEJCTB4RkZFMDAxMkMJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDExICovCisjZGVmaW5lIERDUExCX0FERFIxMgkJMHhGRkUwMDEzMAkvKiBEYXRhIENhY2hlYWJpbGl0eSBQcm90ZWN0aW9uIExvb2thc2lkZSBCdWZmZXIgMTIgKi8KKyNkZWZpbmUgRENQTEJfQUREUjEzCQkweEZGRTAwMTM0CS8qIERhdGEgQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxMyAqLworI2RlZmluZSBEQ1BMQl9BRERSMTQJCTB4RkZFMDAxMzgJLyogRGF0YSBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDE0ICovCisjZGVmaW5lIERDUExCX0FERFIxNQkJMHhGRkUwMDEzQwkvKiBEYXRhIENhY2hlYWJpbGl0eSBQcm90ZWN0aW9uIExvb2thc2lkZSBCdWZmZXIgMTUgKi8KKyNkZWZpbmUgRENQTEJfREFUQTAJCTB4RkZFMDAyMDAJLyogRGF0YSBDYWNoZSAwIFN0YXR1cyAqLworI2RlZmluZSBEQ1BMQl9EQVRBMQkJMHhGRkUwMDIwNAkvKiBEYXRhIENhY2hlIDEgU3RhdHVzICovCisjZGVmaW5lIERDUExCX0RBVEEyCQkweEZGRTAwMjA4CS8qIERhdGEgQ2FjaGUgMiBTdGF0dXMgKi8KKyNkZWZpbmUgRENQTEJfREFUQTMJCTB4RkZFMDAyMEMJLyogRGF0YSBDYWNoZSAzIFN0YXR1cyAqLworI2RlZmluZSBEQ1BMQl9EQVRBNAkJMHhGRkUwMDIxMAkvKiBEYXRhIENhY2hlIDQgU3RhdHVzICovCisjZGVmaW5lIERDUExCX0RBVEE1CQkweEZGRTAwMjE0CS8qIERhdGEgQ2FjaGUgNSBTdGF0dXMgKi8KKyNkZWZpbmUgRENQTEJfREFUQTYJCTB4RkZFMDAyMTgJLyogRGF0YSBDYWNoZSA2IFN0YXR1cyAqLworI2RlZmluZSBEQ1BMQl9EQVRBNwkJMHhGRkUwMDIxQwkvKiBEYXRhIENhY2hlIDcgU3RhdHVzICovCisjZGVmaW5lIERDUExCX0RBVEE4CQkweEZGRTAwMjIwCS8qIERhdGEgQ2FjaGUgOCBTdGF0dXMgKi8KKyNkZWZpbmUgRENQTEJfREFUQTkJCTB4RkZFMDAyMjQJLyogRGF0YSBDYWNoZSA5IFN0YXR1cyAqLworI2RlZmluZSBEQ1BMQl9EQVRBMTAJCTB4RkZFMDAyMjgJLyogRGF0YSBDYWNoZSAxMCBTdGF0dXMgKi8KKyNkZWZpbmUgRENQTEJfREFUQTExCQkweEZGRTAwMjJDCS8qIERhdGEgQ2FjaGUgMTEgU3RhdHVzICovCisjZGVmaW5lIERDUExCX0RBVEExMgkJMHhGRkUwMDIzMAkvKiBEYXRhIENhY2hlIDEyIFN0YXR1cyAqLworI2RlZmluZSBEQ1BMQl9EQVRBMTMJCTB4RkZFMDAyMzQJLyogRGF0YSBDYWNoZSAxMyBTdGF0dXMgKi8KKyNkZWZpbmUgRENQTEJfREFUQTE0CQkweEZGRTAwMjM4CS8qIERhdGEgQ2FjaGUgMTQgU3RhdHVzICovCisjZGVmaW5lIERDUExCX0RBVEExNQkJMHhGRkUwMDIzQwkvKiBEYXRhIENhY2hlIDE1IFN0YXR1cyAqLworI2RlZmluZSBEVEVTVF9DT01NQU5ECQkweEZGRTAwMzAwCS8qIERhdGEgVGVzdCBDb21tYW5kIFJlZ2lzdGVyICovCisjZGVmaW5lIERURVNUX0RBVEEwCQkweEZGRTAwNDAwCS8qIERhdGEgVGVzdCBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIERURVNUX0RBVEExCQkweEZGRTAwNDA0CS8qIERhdGEgVGVzdCBEYXRhIFJlZ2lzdGVyICovCisKKy8qIEluc3RydWN0aW9uIENhY2hlICYgU1JBTSBNZW1vcnkgICgweEZGRTAxMDA0IC0gMHhGRkUwMTQwNCkgKi8KKyNkZWZpbmUgSU1FTV9DT05UUk9MCQkweEZGRTAxMDA0CS8qIEluc3RydWN0aW9uIE1lbW9yeSBDb250cm9sICovCisjZGVmaW5lIElDUExCX1NUQVRVUwkJMHhGRkUwMTAwOAkvKiBJbnN0cnVjdGlvbiBDYWNoZSBtaXNzIHN0YXR1cyAqLworI2RlZmluZSBDT0RFX0ZBVUxUX1NUQVRVUwkweEZGRTAxMDA4CS8qICIiIChvbGRlciBkZWZpbmUpICovCisjZGVmaW5lIElDUExCX0ZBVUxUX0FERFIJMHhGRkUwMTAwQwkvKiBJbnN0cnVjdGlvbiBDYWNoZSBtaXNzIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ09ERV9GQVVMVF9BRERSCQkweEZGRTAxMDBDCS8qICIiIChvbGRlciBkZWZpbmUpICovCisjZGVmaW5lIElDUExCX0FERFIwCQkweEZGRTAxMTAwCS8qIEluc3RydWN0aW9uIENhY2hlYWJpbGl0eSBQcm90ZWN0aW9uIExvb2thc2lkZSBCdWZmZXIgMCAqLworI2RlZmluZSBJQ1BMQl9BRERSMQkJMHhGRkUwMTEwNAkvKiBJbnN0cnVjdGlvbiBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDEgKi8KKyNkZWZpbmUgSUNQTEJfQUREUjIJCTB4RkZFMDExMDgJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAyICovCisjZGVmaW5lIElDUExCX0FERFIzCQkweEZGRTAxMTBDCS8qIEluc3RydWN0aW9uIENhY2hlYWJpbGl0eSBQcm90ZWN0aW9uIExvb2thc2lkZSBCdWZmZXIgMyAqLworI2RlZmluZSBJQ1BMQl9BRERSNAkJMHhGRkUwMTExMAkvKiBJbnN0cnVjdGlvbiBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDQgKi8KKyNkZWZpbmUgSUNQTEJfQUREUjUJCTB4RkZFMDExMTQJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciA1ICovCisjZGVmaW5lIElDUExCX0FERFI2CQkweEZGRTAxMTE4CS8qIEluc3RydWN0aW9uIENhY2hlYWJpbGl0eSBQcm90ZWN0aW9uIExvb2thc2lkZSBCdWZmZXIgNiAqLworI2RlZmluZSBJQ1BMQl9BRERSNwkJMHhGRkUwMTExQwkvKiBJbnN0cnVjdGlvbiBDYWNoZWFiaWxpdHkgUHJvdGVjdGlvbiBMb29rYXNpZGUgQnVmZmVyIDcgKi8KKyNkZWZpbmUgSUNQTEJfQUREUjgJCTB4RkZFMDExMjAJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciA4ICovCisjZGVmaW5lIElDUExCX0FERFI5CQkweEZGRTAxMTI0CS8qIEluc3RydWN0aW9uIENhY2hlYWJpbGl0eSBQcm90ZWN0aW9uIExvb2thc2lkZSBCdWZmZXIgOSAqLworI2RlZmluZSBJQ1BMQl9BRERSMTAJCTB4RkZFMDExMjgJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxMCAqLworI2RlZmluZSBJQ1BMQl9BRERSMTEJCTB4RkZFMDExMkMJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxMSAqLworI2RlZmluZSBJQ1BMQl9BRERSMTIJCTB4RkZFMDExMzAJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxMiAqLworI2RlZmluZSBJQ1BMQl9BRERSMTMJCTB4RkZFMDExMzQJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxMyAqLworI2RlZmluZSBJQ1BMQl9BRERSMTQJCTB4RkZFMDExMzgJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxNCAqLworI2RlZmluZSBJQ1BMQl9BRERSMTUJCTB4RkZFMDExM0MJLyogSW5zdHJ1Y3Rpb24gQ2FjaGVhYmlsaXR5IFByb3RlY3Rpb24gTG9va2FzaWRlIEJ1ZmZlciAxNSAqLworI2RlZmluZSBJQ1BMQl9EQVRBMAkJMHhGRkUwMTIwMAkvKiBJbnN0cnVjdGlvbiBDYWNoZSAwIFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBMQkJMHhGRkUwMTIwNAkvKiBJbnN0cnVjdGlvbiBDYWNoZSAxIFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBMgkJMHhGRkUwMTIwOAkvKiBJbnN0cnVjdGlvbiBDYWNoZSAyIFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBMwkJMHhGRkUwMTIwQwkvKiBJbnN0cnVjdGlvbiBDYWNoZSAzIFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBNAkJMHhGRkUwMTIxMAkvKiBJbnN0cnVjdGlvbiBDYWNoZSA0IFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBNQkJMHhGRkUwMTIxNAkvKiBJbnN0cnVjdGlvbiBDYWNoZSA1IFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBNgkJMHhGRkUwMTIxOAkvKiBJbnN0cnVjdGlvbiBDYWNoZSA2IFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBNwkJMHhGRkUwMTIxQwkvKiBJbnN0cnVjdGlvbiBDYWNoZSA3IFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBOAkJMHhGRkUwMTIyMAkvKiBJbnN0cnVjdGlvbiBDYWNoZSA4IFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBOQkJMHhGRkUwMTIyNAkvKiBJbnN0cnVjdGlvbiBDYWNoZSA5IFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBMTAJCTB4RkZFMDEyMjgJLyogSW5zdHJ1Y3Rpb24gQ2FjaGUgMTAgU3RhdHVzICovCisjZGVmaW5lIElDUExCX0RBVEExMQkJMHhGRkUwMTIyQwkvKiBJbnN0cnVjdGlvbiBDYWNoZSAxMSBTdGF0dXMgKi8KKyNkZWZpbmUgSUNQTEJfREFUQTEyCQkweEZGRTAxMjMwCS8qIEluc3RydWN0aW9uIENhY2hlIDEyIFN0YXR1cyAqLworI2RlZmluZSBJQ1BMQl9EQVRBMTMJCTB4RkZFMDEyMzQJLyogSW5zdHJ1Y3Rpb24gQ2FjaGUgMTMgU3RhdHVzICovCisjZGVmaW5lIElDUExCX0RBVEExNAkJMHhGRkUwMTIzOAkvKiBJbnN0cnVjdGlvbiBDYWNoZSAxNCBTdGF0dXMgKi8KKyNkZWZpbmUgSUNQTEJfREFUQTE1CQkweEZGRTAxMjNDCS8qIEluc3RydWN0aW9uIENhY2hlIDE1IFN0YXR1cyAqLworI2RlZmluZSBJVEVTVF9DT01NQU5ECQkweEZGRTAxMzAwCS8qIEluc3RydWN0aW9uIFRlc3QgQ29tbWFuZCBSZWdpc3RlciAqLworI2RlZmluZSBJVEVTVF9EQVRBMAkJMHhGRkUwMTQwMAkvKiBJbnN0cnVjdGlvbiBUZXN0IERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgSVRFU1RfREFUQTEJCTB4RkZFMDE0MDQJLyogSW5zdHJ1Y3Rpb24gVGVzdCBEYXRhIFJlZ2lzdGVyICovCisKKy8qIEV2ZW50L0ludGVycnVwdCBDb250cm9sbGVyIFJlZ2lzdGVycyAoMHhGRkUwMjAwMCAtIDB4RkZFMDIxMTApICovCisjZGVmaW5lIEVWVDAJCQkweEZGRTAyMDAwCS8qIEV2ZW50IFZlY3RvciAwIEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDEJCQkweEZGRTAyMDA0CS8qIEV2ZW50IFZlY3RvciAxIEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDIJCQkweEZGRTAyMDA4CS8qIEV2ZW50IFZlY3RvciAyIEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDMJCQkweEZGRTAyMDBDCS8qIEV2ZW50IFZlY3RvciAzIEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDQJCQkweEZGRTAyMDEwCS8qIEV2ZW50IFZlY3RvciA0IEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDUJCQkweEZGRTAyMDE0CS8qIEV2ZW50IFZlY3RvciA1IEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDYJCQkweEZGRTAyMDE4CS8qIEV2ZW50IFZlY3RvciA2IEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDcJCQkweEZGRTAyMDFDCS8qIEV2ZW50IFZlY3RvciA3IEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDgJCQkweEZGRTAyMDIwCS8qIEV2ZW50IFZlY3RvciA4IEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDkJCQkweEZGRTAyMDI0CS8qIEV2ZW50IFZlY3RvciA5IEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDEwCQkJMHhGRkUwMjAyOAkvKiBFdmVudCBWZWN0b3IgMTAgRVNSIEFkZHJlc3MgKi8KKyNkZWZpbmUgRVZUMTEJCQkweEZGRTAyMDJDCS8qIEV2ZW50IFZlY3RvciAxMSBFU1IgQWRkcmVzcyAqLworI2RlZmluZSBFVlQxMgkJCTB4RkZFMDIwMzAJLyogRXZlbnQgVmVjdG9yIDEyIEVTUiBBZGRyZXNzICovCisjZGVmaW5lIEVWVDEzCQkJMHhGRkUwMjAzNAkvKiBFdmVudCBWZWN0b3IgMTMgRVNSIEFkZHJlc3MgKi8KKyNkZWZpbmUgRVZUMTQJCQkweEZGRTAyMDM4CS8qIEV2ZW50IFZlY3RvciAxNCBFU1IgQWRkcmVzcyAqLworI2RlZmluZSBFVlQxNQkJCTB4RkZFMDIwM0MJLyogRXZlbnQgVmVjdG9yIDE1IEVTUiBBZGRyZXNzICovCisjZGVmaW5lIElNQVNLCQkJMHhGRkUwMjEwNAkvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAqLworI2RlZmluZSBJUEVORAkJCTB4RkZFMDIxMDgJLyogSW50ZXJydXB0IFBlbmRpbmcgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgSUxBVAkJCTB4RkZFMDIxMEMJLyogSW50ZXJydXB0IExhdGNoIFJlZ2lzdGVyICovCisjZGVmaW5lIElQUklPCQkJMHhGRkUwMjExMAkvKiBDb3JlIEludGVycnVwdCBQcmlvcml0eSBSZWdpc3RlciAqLworCisvKiBDb3JlIFRpbWVyIFJlZ2lzdGVycyAgICAgKDB4RkZFMDMwMDAgLSAweEZGRTAzMDBDKSAqLworI2RlZmluZSBUQ05UTAkJCTB4RkZFMDMwMDAJLyogQ29yZSBUaW1lciBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIFRQRVJJT0QJCQkweEZGRTAzMDA0CS8qIENvcmUgVGltZXIgUGVyaW9kIFJlZ2lzdGVyICovCisjZGVmaW5lIFRTQ0FMRQkJCTB4RkZFMDMwMDgJLyogQ29yZSBUaW1lciBTY2FsZSBSZWdpc3RlciAqLworI2RlZmluZSBUQ09VTlQJCQkweEZGRTAzMDBDCS8qIENvcmUgVGltZXIgQ291bnQgUmVnaXN0ZXIgKi8KKworLyogRGVidWcvTVAvRW11bGF0aW9uIFJlZ2lzdGVycyAoMHhGRkUwNTAwMCAtIDB4RkZFMDUwMDgpICovCisjZGVmaW5lIERTUElECQkJMHhGRkUwNTAwMAkvKiBEU1AgUHJvY2Vzc29yIElEIFJlZ2lzdGVyIGZvciBNUCBpbXBsZW1lbnRhdGlvbnMgKi8KKyNkZWZpbmUgREJHU1RBVAkJCTB4RkZFMDUwMDgJLyogRGVidWcgU3RhdHVzIFJlZ2lzdGVyICovCisKKy8qIFRyYWNlIEJ1ZmZlciBSZWdpc3RlcnMgKDB4RkZFMDYwMDAgLSAweEZGRTA2MTAwKSAqLworI2RlZmluZSBUQlVGQ1RMCQkJMHhGRkUwNjAwMAkvKiBUcmFjZSBCdWZmZXIgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBUQlVGU1RBVAkJMHhGRkUwNjAwNAkvKiBUcmFjZSBCdWZmZXIgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFRCVUYJCQkweEZGRTA2MTAwCS8qIFRyYWNlIEJ1ZmZlciAqLworCisvKiBXYXRjaHBvaW50IENvbnRyb2wgUmVnaXN0ZXJzICgweEZGRTA3MDAwIC0gMHhGRkUwNzIwMCkgKi8KKyNkZWZpbmUgV1BJQUNUTAkJCTB4RkZFMDcwMDAJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgV1BJQTAJCQkweEZGRTA3MDQwCS8qIFdhdGNocG9pbnQgSW5zdHJ1Y3Rpb24gQWRkcmVzcyBSZWdpc3RlciAwICovCisjZGVmaW5lIFdQSUExCQkJMHhGRkUwNzA0NAkvKiBXYXRjaHBvaW50IEluc3RydWN0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBXUElBMgkJCTB4RkZFMDcwNDgJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgV1BJQTMJCQkweEZGRTA3MDRDCS8qIFdhdGNocG9pbnQgSW5zdHJ1Y3Rpb24gQWRkcmVzcyBSZWdpc3RlciAzICovCisjZGVmaW5lIFdQSUE0CQkJMHhGRkUwNzA1MAkvKiBXYXRjaHBvaW50IEluc3RydWN0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgNCAqLworI2RlZmluZSBXUElBNQkJCTB4RkZFMDcwNTQJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIDUgKi8KKyNkZWZpbmUgV1BJQUNOVDAJCTB4RkZFMDcwODAJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIENvdW50IFJlZ2lzdGVyIDAgKi8KKyNkZWZpbmUgV1BJQUNOVDEJCTB4RkZFMDcwODQJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIENvdW50IFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgV1BJQUNOVDIJCTB4RkZFMDcwODgJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIENvdW50IFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgV1BJQUNOVDMJCTB4RkZFMDcwOEMJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIENvdW50IFJlZ2lzdGVyIDMgKi8KKyNkZWZpbmUgV1BJQUNOVDQJCTB4RkZFMDcwOTAJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIENvdW50IFJlZ2lzdGVyIDQgKi8KKyNkZWZpbmUgV1BJQUNOVDUJCTB4RkZFMDcwOTQJLyogV2F0Y2hwb2ludCBJbnN0cnVjdGlvbiBBZGRyZXNzIENvdW50IFJlZ2lzdGVyIDUgKi8KKyNkZWZpbmUgV1BEQUNUTAkJCTB4RkZFMDcxMDAJLyogV2F0Y2hwb2ludCBEYXRhIEFkZHJlc3MgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBXUERBMAkJCTB4RkZFMDcxNDAJLyogV2F0Y2hwb2ludCBEYXRhIEFkZHJlc3MgUmVnaXN0ZXIgMCAqLworI2RlZmluZSBXUERBMQkJCTB4RkZFMDcxNDQJLyogV2F0Y2hwb2ludCBEYXRhIEFkZHJlc3MgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBXUERBQ05UMAkJMHhGRkUwNzE4MAkvKiBXYXRjaHBvaW50IERhdGEgQWRkcmVzcyBDb3VudCBWYWx1ZSBSZWdpc3RlciAwICovCisjZGVmaW5lIFdQREFDTlQxCQkweEZGRTA3MTg0CS8qIFdhdGNocG9pbnQgRGF0YSBBZGRyZXNzIENvdW50IFZhbHVlIFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgV1BTVEFUCQkJMHhGRkUwNzIwMAkvKiBXYXRjaHBvaW50IFN0YXR1cyBSZWdpc3RlciAqLworCisvKiBQZXJmb3JtYW5jZSBNb25pdG9yIFJlZ2lzdGVycyAoMHhGRkUwODAwMCAtIDB4RkZFMDgxMDQpICovCisjZGVmaW5lIFBGQ1RMCQkJMHhGRkUwODAwMAkvKiBQZXJmb3JtYW5jZSBNb25pdG9yIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgUEZDTlRSMAkJCTB4RkZFMDgxMDAJLyogUGVyZm9ybWFuY2UgTW9uaXRvciBDb3VudGVyIFJlZ2lzdGVyIDAgKi8KKyNkZWZpbmUgUEZDTlRSMQkJCTB4RkZFMDgxMDQJLyogUGVyZm9ybWFuY2UgTW9uaXRvciBDb3VudGVyIFJlZ2lzdGVyIDEgKi8KKworLyoKKyAqIENvcmUgTU1SIFJlZ2lzdGVyIEJpdHMKKyAqLworCisvKgorICogRVZUIHJlZ2lzdGVycyAoSUxBVCwgSU1BU0ssIGFuZCBJUEVORCkuCisgKi8KKworLyogKiogQml0IFBvc2l0aW9ucyAqLworI2RlZmluZSBFVlRfRU1VX1AJCTB4MDAwMDAwMDAJLyogRW11bGF0b3IgaW50ZXJydXB0IGJpdCBwb3NpdGlvbiAqLworI2RlZmluZSBFVlRfUlNUX1AJCTB4MDAwMDAwMDEJLyogUmVzZXQgaW50ZXJydXB0IGJpdCBwb3NpdGlvbiAqLworI2RlZmluZSBFVlRfTk1JX1AJCTB4MDAwMDAwMDIJLyogTm9uIE1hc2thYmxlIGludGVycnVwdCBiaXQgcG9zaXRpb24gKi8KKyNkZWZpbmUgRVZUX0VWWF9QCQkweDAwMDAwMDAzCS8qIEV4Y2VwdGlvbiBiaXQgcG9zaXRpb24gKi8KKyNkZWZpbmUgRVZUX0lSUFRFTl9QCQkweDAwMDAwMDA0CS8qIEdsb2JhbCBpbnRlcnJ1cHQgZW5hYmxlIGJpdCBwb3NpdGlvbiAqLworI2RlZmluZSBFVlRfSVZIV19QCQkweDAwMDAwMDA1CS8qIEhhcmR3YXJlIEVycm9yIGludGVycnVwdCBiaXQgcG9zaXRpb24gKi8KKyNkZWZpbmUgRVZUX0lWVE1SX1AJCTB4MDAwMDAwMDYJLyogVGltZXIgaW50ZXJydXB0IGJpdCBwb3NpdGlvbiAqLworI2RlZmluZSBFVlRfSVZHN19QCQkweDAwMDAwMDA3CS8qIElWRzcgaW50ZXJydXB0IGJpdCBwb3NpdGlvbiAqLworI2RlZmluZSBFVlRfSVZHOF9QCQkweDAwMDAwMDA4CS8qIElWRzggaW50ZXJydXB0IGJpdCBwb3NpdGlvbiAqLworI2RlZmluZSBFVlRfSVZHOV9QCQkweDAwMDAwMDA5CS8qIElWRzkgaW50ZXJydXB0IGJpdCBwb3NpdGlvbiAqLworI2RlZmluZSBFVlRfSVZHMTBfUAkJMHgwMDAwMDAwYQkvKiBJVkcxMCBpbnRlcnJ1cHQgYml0IHBvc2l0aW9uICovCisjZGVmaW5lIEVWVF9JVkcxMV9QCQkweDAwMDAwMDBiCS8qIElWRzExIGludGVycnVwdCBiaXQgcG9zaXRpb24gKi8KKyNkZWZpbmUgRVZUX0lWRzEyX1AJCTB4MDAwMDAwMGMJLyogSVZHMTIgaW50ZXJydXB0IGJpdCBwb3NpdGlvbiAqLworI2RlZmluZSBFVlRfSVZHMTNfUAkJMHgwMDAwMDAwZAkvKiBJVkcxMyBpbnRlcnJ1cHQgYml0IHBvc2l0aW9uICovCisjZGVmaW5lIEVWVF9JVkcxNF9QCQkweDAwMDAwMDBlCS8qIElWRzE0IGludGVycnVwdCBiaXQgcG9zaXRpb24gKi8KKyNkZWZpbmUgRVZUX0lWRzE1X1AJCTB4MDAwMDAwMGYJLyogSVZHMTUgaW50ZXJydXB0IGJpdCBwb3NpdGlvbiAqLworCisvKiAqKiBNYXNrcyAqLworI2RlZmluZSBFVlRfRU1VCQkJTUtfQk1TS18oRVZUX0VNVV9QICAgKQkvKiBFbXVsYXRvciBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBFVlRfUlNUCQkJTUtfQk1TS18oRVZUX1JTVF9QICAgKQkvKiBSZXNldCBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBFVlRfTk1JCQkJTUtfQk1TS18oRVZUX05NSV9QICAgKQkvKiBOb24gTWFza2FibGUgaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgRVZUX0VWWAkJCU1LX0JNU0tfKEVWVF9FVlhfUCAgICkJLyogRXhjZXB0aW9uIG1hc2sgKi8KKyNkZWZpbmUgRVZUX0lSUFRFTgkJTUtfQk1TS18oRVZUX0lSUFRFTl9QKQkvKiBHbG9iYWwgaW50ZXJydXB0IGVuYWJsZSBtYXNrICovCisjZGVmaW5lIEVWVF9JVkhXCQlNS19CTVNLXyhFVlRfSVZIV19QICApCS8qIEhhcmR3YXJlIEVycm9yIGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIEVWVF9JVlRNUgkJTUtfQk1TS18oRVZUX0lWVE1SX1AgKQkvKiBUaW1lciBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBFVlRfSVZHNwkJTUtfQk1TS18oRVZUX0lWRzdfUCAgKQkvKiBJVkc3IGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIEVWVF9JVkc4CQlNS19CTVNLXyhFVlRfSVZHOF9QICApCS8qIElWRzggaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgRVZUX0lWRzkJCU1LX0JNU0tfKEVWVF9JVkc5X1AgICkJLyogSVZHOSBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBFVlRfSVZHMTAJCU1LX0JNU0tfKEVWVF9JVkcxMF9QICkJLyogSVZHMTAgaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgRVZUX0lWRzExCQlNS19CTVNLXyhFVlRfSVZHMTFfUCApCS8qIElWRzExIGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIEVWVF9JVkcxMgkJTUtfQk1TS18oRVZUX0lWRzEyX1AgKQkvKiBJVkcxMiBpbnRlcnJ1cHQgbWFzayAqLworI2RlZmluZSBFVlRfSVZHMTMJCU1LX0JNU0tfKEVWVF9JVkcxM19QICkJLyogSVZHMTMgaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgRVZUX0lWRzE0CQlNS19CTVNLXyhFVlRfSVZHMTRfUCApCS8qIElWRzE0IGludGVycnVwdCBtYXNrICovCisjZGVmaW5lIEVWVF9JVkcxNQkJTUtfQk1TS18oRVZUX0lWRzE1X1AgKQkvKiBJVkcxNSBpbnRlcnJ1cHQgbWFzayAqLworCisvKgorICogRE1FTV9DT05UUk9MIFJlZ2lzdGVyCisgKi8KKworLyogKiogQml0IFBvc2l0aW9ucyAqLworI2RlZmluZSBFTkRNX1AJCQkweDAwCS8qIChkb2Vzbid0IHJlYWxseSBleGlzdCkgRW5hYmxlIERhdGEgTWVtb3J5IEwxICovCisjZGVmaW5lIERNQ1RMX0VORE1fUAkJMHgwMAkvKiAiIiAob2xkZXIgZGVmaW5lKSAqLworI2RlZmluZSBETUMwX1AJCQkweDAxCS8qIERhdGEgTWVtb3J5IENvbmZpZ3VyYXRpb24sIDAwIC0gQSBTUkFNLCBCIFNSQU0gKi8KKyNkZWZpbmUgRE1DVExfRE1DMF9QCQkweDAxCS8qICIiIChvbGRlciBkZWZpbmUpICovCisjZGVmaW5lIERNQzFfUAkJCTB4MDIJLyogRGF0YSBNZW1vcnkgQ29uZmlndXJhdGlvbiwgMTAgLSBBIFNSQU0sIEIgU1JBTSAqLworI2RlZmluZSBETUNUTF9ETUMxX1AJCTB4MDIJLyogIiIgKG9sZGVyIGRlZmluZSkgKi8KKyNkZWZpbmUgRE1DMl9QCQkJMHgwMwkvKiBEYXRhIE1lbW9yeSBDb25maWd1cmF0aW9uLCAxMSAtIEEgQ0FDSEUsIEIgQ0FDSEUgKi8KKyNkZWZpbmUgRE1DVExfRE1DMl9QCQkweDAzCS8qICIiIChvbGRlciBkZWZpbmUpICovCisjZGVmaW5lIERDQlNfUAkJCTB4MDQJLyogTDEgRGF0YSBDYWNoZSBCYW5rIFNlbGVjdCAqLworI2RlZmluZSBQT1JUX1BSRUYwX1AJCTB4MTIJLyogREFHMCBQb3J0IFByZWZlcmVuY2UgKi8KKyNkZWZpbmUgUE9SVF9QUkVGMV9QCQkweDEzCS8qIERBRzEgUG9ydCBQcmVmZXJlbmNlICovCisKKy8qICoqIE1hc2tzICovCisjZGVmaW5lIEVORE0JCQkweDAwMDAwMDAxCS8qIChkb2Vzbid0IHJlYWxseSBleGlzdCkgRW5hYmxlIERhdGEgTWVtb3J5IEwxICovCisjZGVmaW5lIEVORENQTEIJCQkweDAwMDAwMDAyCS8qIEVuYWJsZSBEQ1BMQiAqLworI2RlZmluZSBBU1JBTV9CU1JBTQkJMHgwMDAwMDAwMAorI2RlZmluZSBBQ0FDSEVfQlNSQU0JCTB4MDAwMDAwMDgKKyNkZWZpbmUgQUNBQ0hFX0JDQUNIRQkJMHgwMDAwMDAwQworI2RlZmluZSBEQ0JTCQkJMHgwMDAwMDAxMAkvKiAgTDEgRGF0YSBDYWNoZSBCYW5rIFNlbGVjdCAqLworI2RlZmluZSBQT1JUX1BSRUYwCQkweDAwMDAxMDAwCS8qIERBRzAgUG9ydCBQcmVmZXJlbmNlICovCisjZGVmaW5lIFBPUlRfUFJFRjEJCTB4MDAwMDIwMDAJLyogREFHMSBQb3J0IFByZWZlcmVuY2UgKi8KKworLyogSU1FTV9DT05UUk9MIFJlZ2lzdGVyICovCisvKiAqKiBCaXQgUG9zaXRpb25zICovCisjZGVmaW5lIEVOSU1fUAkJCTB4MDAJLyogRW5hYmxlIEwxIENvZGUgTWVtb3J5ICovCisjZGVmaW5lIElNQ1RMX0VOSU1fUAkJMHgwMAkvKiAiIiAob2xkZXIgZGVmaW5lKSAqLworI2RlZmluZSBFTklDUExCX1AJCTB4MDEJLyogRW5hYmxlIElDUExCICovCisjZGVmaW5lIElNQ1RMX0VOSUNQTEJfUAkJMHgwMQkvKiAiIiAob2xkZXIgZGVmaW5lKSAqLworI2RlZmluZSBJTUNfUAkJCTB4MDIJLyogRW5hYmxlICovCisjZGVmaW5lIElNQ1RMX0lNQ19QCQkweDAyCS8qIENvbmZpZ3VyZSBMMSBjb2RlIG1lbW9yeSBhcyBjYWNoZSAoMD1TUkFNKSAqLworI2RlZmluZSBJTE9DMF9QCQkJMHgwMwkvKiBMb2NrIFdheSAwICovCisjZGVmaW5lIElMT0MxX1AJCQkweDA0CS8qIExvY2sgV2F5IDEgKi8KKyNkZWZpbmUgSUxPQzJfUAkJCTB4MDUJLyogTG9jayBXYXkgMiAqLworI2RlZmluZSBJTE9DM19QCQkJMHgwNgkvKiBMb2NrIFdheSAzICovCisjZGVmaW5lIExSVVBSSU9SU1RfUAkJMHgwRAkvKiBMZWFzdCBSZWNlbnRseSBVc2VkIFJlcGxhY2VtZW50IFByaW9yaXR5ICovCisKKy8qICoqIE1hc2tzICovCisjZGVmaW5lIEVOSU0JCQkweDAwMDAwMDAxCS8qIEVuYWJsZSBMMSBDb2RlIE1lbW9yeSAqLworI2RlZmluZSBFTklDUExCCQkJMHgwMDAwMDAwMgkvKiBFbmFibGUgSUNQTEIgKi8KKyNkZWZpbmUgSU1DCQkJMHgwMDAwMDAwNAkvKiBDb25maWd1cmUgTDEgY29kZSBtZW1vcnkgYXMgY2FjaGUgKDA9U1JBTSkgKi8KKyNkZWZpbmUgSUxPQzAJCQkweDAwMDAwMDA4CS8qIExvY2sgV2F5IDAgKi8KKyNkZWZpbmUgSUxPQzEJCQkweDAwMDAwMDEwCS8qIExvY2sgV2F5IDEgKi8KKyNkZWZpbmUgSUxPQzIJCQkweDAwMDAwMDIwCS8qIExvY2sgV2F5IDIgKi8KKyNkZWZpbmUgSUxPQzMJCQkweDAwMDAwMDQwCS8qIExvY2sgV2F5IDMgKi8KKyNkZWZpbmUgTFJVUFJJT1JTVAkJMHgwMDAwMjAwMAkvKiBMZWFzdCBSZWNlbnRseSBVc2VkIFJlcGxhY2VtZW50IFByaW9yaXR5ICovCisKKy8qIFRDTlRMIE1hc2tzICovCisjZGVmaW5lIFRNUFdSCQkJMHgwMDAwMDAwMQkvKiBUaW1lciBMb3cgUG93ZXIgQ29udHJvbCwgMD1sb3cgcG93ZXIgbW9kZSwgMT1hY3RpdmUgc3RhdGUgKi8KKyNkZWZpbmUgVE1SRU4JCQkweDAwMDAwMDAyCS8qIFRpbWVyIGVuYWJsZSwgMD1kaXNhYmxlLCAxPWVuYWJsZSAqLworI2RlZmluZSBUQVVUT1JMRAkJMHgwMDAwMDAwNAkvKiBUaW1lciBhdXRvIHJlbG9hZCAqLworI2RlZmluZSBUSU5UCQkJMHgwMDAwMDAwOAkvKiBUaW1lciBnZW5lcmF0ZWQgaW50ZXJydXB0IDA9bm8gaW50ZXJydXB0IGhhcyBiZWVuIGdlbmVyYXRlZCwgMT1pbnRlcnJ1cHQgaGFzIGJlZW4gZ2VuZXJhdGVkIChzdGlja3kpICovCisKKy8qIFRDTlRMIEJpdCBQb3NpdGlvbnMgKi8KKyNkZWZpbmUgVE1QV1JfUAkJCTB4MDAwMDAwMDAJLyogVGltZXIgTG93IFBvd2VyIENvbnRyb2wsIDA9bG93IHBvd2VyIG1vZGUsIDE9YWN0aXZlIHN0YXRlICovCisjZGVmaW5lIFRNUkVOX1AJCQkweDAwMDAwMDAxCS8qIFRpbWVyIGVuYWJsZSwgMD1kaXNhYmxlLCAxPWVuYWJsZSAqLworI2RlZmluZSBUQVVUT1JMRF9QCQkweDAwMDAwMDAyCS8qIFRpbWVyIGF1dG8gcmVsb2FkICovCisjZGVmaW5lIFRJTlRfUAkJCTB4MDAwMDAwMDMJLyogVGltZXIgZ2VuZXJhdGVkIGludGVycnVwdCAwPW5vIGludGVycnVwdCBoYXMgYmVlbiBnZW5lcmF0ZWQsIDE9aW50ZXJydXB0IGhhcyBiZWVuIGdlbmVyYXRlZCAoc3RpY2t5KSAqLworCisvKiBEQ1BMQl9EQVRBIGFuZCBJQ1BMQl9EQVRBIFJlZ2lzdGVycyAqLworLyogKiogQml0IFBvc2l0aW9ucyAqLworI2RlZmluZSBDUExCX1ZBTElEX1AJCTB4MDAwMDAwMDAJLyogMD1pbnZhbGlkIGVudHJ5LCAxPXZhbGlkIGVudHJ5ICovCisjZGVmaW5lIENQTEJfTE9DS19QCQkweDAwMDAwMDAxCS8qIDA9ZW50cnkgbWF5IGJlIHJlcGxhY2VkLCAxPWVudHJ5IGxvY2tlZCAqLworI2RlZmluZSBDUExCX1VTRVJfUkRfUAkJMHgwMDAwMDAwMgkvKiAwPW5vIHJlYWQgYWNjZXNzLCAxPXJlYWQgYWNjZXNzIGFsbG93ZWQgKHVzZXIgbW9kZSkgKi8KKworLyogKiogTWFza3MgKi8KKyNkZWZpbmUgQ1BMQl9WQUxJRAkJMHgwMDAwMDAwMQkvKiAwPWludmFsaWQgZW50cnksIDE9dmFsaWQgZW50cnkgKi8KKyNkZWZpbmUgQ1BMQl9MT0NLCQkweDAwMDAwMDAyCS8qIDA9ZW50cnkgbWF5IGJlIHJlcGxhY2VkLCAxPWVudHJ5IGxvY2tlZCAqLworI2RlZmluZSBDUExCX1VTRVJfUkQJCTB4MDAwMDAwMDQJLyogMD1ubyByZWFkIGFjY2VzcywgMT1yZWFkIGFjY2VzcyBhbGxvd2VkICh1c2VyIG1vZGUpICovCisjZGVmaW5lIFBBR0VfU0laRV8xS0IJCTB4MDAwMDAwMDAJLyogMSBLQiBwYWdlIHNpemUgKi8KKyNkZWZpbmUgUEFHRV9TSVpFXzRLQgkJMHgwMDAxMDAwMAkvKiA0IEtCIHBhZ2Ugc2l6ZSAqLworI2RlZmluZSBQQUdFX1NJWkVfMU1CCQkweDAwMDIwMDAwCS8qIDEgTUIgcGFnZSBzaXplICovCisjZGVmaW5lIFBBR0VfU0laRV80TUIJCTB4MDAwMzAwMDAJLyogNCBNQiBwYWdlIHNpemUgKi8KKyNkZWZpbmUgQ1BMQl9MMVNSQU0JCTB4MDAwMDAwMjAJLyogMD1TUkFNIG1hcHBlZCBpbiBMMSwgMD1TUkFNIG5vdCBtYXBwZWQgdG8gTDEgKi8KKyNkZWZpbmUgQ1BMQl9QT1JUUFJJTwkJMHgwMDAwMDIwMAkvKiAwPWxvdyBwcmlvcml0eSBwb3J0LCAxPSBoaWdoIHByaW9yaXR5IHBvcnQgKi8KKyNkZWZpbmUgQ1BMQl9MMV9DSEJMCQkweDAwMDAxMDAwCS8qIDA9bm9uLWNhY2hlYWJsZSBpbiBMMSwgMT1jYWNoZWFibGUgaW4gTDEgKi8KKworLyogSUNQTEJfREFUQSBvbmx5ICovCisjZGVmaW5lIENQTEJfTFJVUFJJTwkJMHgwMDAwMDEwMAkvKiAwPWNhbiBiZSByZXBsYWNlZCBieSBhbnkgbGluZSwgMT1wcmlvcml0eSBmb3Igbm9uLXJlcGxhY2VtZW50ICovCisKKy8qIERDUExCX0RBVEEgb25seSAqLworI2RlZmluZSBDUExCX1VTRVJfV1IJCTB4MDAwMDAwMDgJLyogMD1ubyB3cml0ZSBhY2Nlc3MsIDA9d3JpdGUgYWNjZXNzIGFsbG93ZWQgKHVzZXIgbW9kZSkgKi8KKyNkZWZpbmUgQ1BMQl9TVVBWX1dSCQkweDAwMDAwMDEwCS8qIDA9bm8gd3JpdGUgYWNjZXNzLCAwPXdyaXRlIGFjY2VzcyBhbGxvd2VkIChzdXBlcnZpc29yIG1vZGUpICovCisjZGVmaW5lIENQTEJfRElSVFkJCTB4MDAwMDAwODAJLyogMT1kaXJ0eSwgMD1jbGVhbiAqLworI2RlZmluZSBDUExCX0wxX0FPVwkJMHgwMDAwODAwMAkvKiAwPWRvIG5vdCBhbGxvY2F0ZSBjYWNoZSBsaW5lcyBvbiB3cml0ZS10aHJvdWdoIHdyaXRlcyAqLworCQkJCQkJLyogMT0gYWxsb2NhdGUgY2FjaGUgbGluZXMgb24gd3JpdGUtdGhyb3VnaCB3cml0ZXMuICovCisjZGVmaW5lIENQTEJfV1QJCQkweDAwMDA0MDAwCS8qIDA9d3JpdGUtYmFjaywgMT13cml0ZS10aHJvdWdoICovCisKKy8qIElURVNUX0NPTU1BTkQgYW5kIERURVNUX0NPTU1BTkQgUmVnaXN0ZXJzICovCisvKiAqKiBNYXNrcyAqLworI2RlZmluZSBURVNUX1JFQUQJCTB4MDAwMDAwMDAJLyogUmVhZCBBY2Nlc3MgKi8KKyNkZWZpbmUgVEVTVF9XUklURQkJMHgwMDAwMDAwMgkvKiBXcml0ZSBBY2Nlc3MgKi8KKyNkZWZpbmUgVEVTVF9UQUcJCTB4MDAwMDAwMDAJLyogQWNjZXNzIFRBRyAqLworI2RlZmluZSBURVNUX0RBVEEJCTB4MDAwMDAwMDQJLyogQWNjZXNzIERBVEEgKi8KKyNkZWZpbmUgVEVTVF9EVzAJCTB4MDAwMDAwMDAJLyogU2VsZWN0IERvdWJsZSBXb3JkIDAgKi8KKyNkZWZpbmUgVEVTVF9EVzEJCTB4MDAwMDAwMDgJLyogU2VsZWN0IERvdWJsZSBXb3JkIDEgKi8KKyNkZWZpbmUgVEVTVF9EVzIJCTB4MDAwMDAwMTAJLyogU2VsZWN0IERvdWJsZSBXb3JkIDIgKi8KKyNkZWZpbmUgVEVTVF9EVzMJCTB4MDAwMDAwMTgJLyogU2VsZWN0IERvdWJsZSBXb3JkIDMgKi8KKyNkZWZpbmUgVEVTVF9NQjAJCTB4MDAwMDAwMDAJLyogU2VsZWN0IE1pbmktQmFuayAwICovCisjZGVmaW5lIFRFU1RfTUIxCQkweDAwMDEwMDAwCS8qIFNlbGVjdCBNaW5pLUJhbmsgMSAqLworI2RlZmluZSBURVNUX01CMgkJMHgwMDAyMDAwMAkvKiBTZWxlY3QgTWluaS1CYW5rIDIgKi8KKyNkZWZpbmUgVEVTVF9NQjMJCTB4MDAwMzAwMDAJLyogU2VsZWN0IE1pbmktQmFuayAzICovCisjZGVmaW5lIFRFU1RfU0VUKHgpCQkoKHggPDwgNSkgJiAweDAzRTApCS8qIFNldCBJbmRleCAwLT4zMSAqLworI2RlZmluZSBURVNUX1dBWTAJCTB4MDAwMDAwMDAJLyogQWNjZXNzIFdheTAgKi8KKyNkZWZpbmUgVEVTVF9XQVkxCQkweDA0MDAwMDAwCS8qIEFjY2VzcyBXYXkxICovCisKKy8qICoqIElURVNUX0NPTU1BTkQgb25seSAqLworI2RlZmluZSBURVNUX1dBWTIJCTB4MDgwMDAwMDAJLyogQWNjZXNzIFdheTIgKi8KKyNkZWZpbmUgVEVTVF9XQVkzCQkweDBDMDAwMDAwCS8qIEFjY2VzcyBXYXkzICovCisKKy8qICoqIERURVNUX0NPTU1BTkQgb25seSAqLworI2RlZmluZSBURVNUX0JOS1NFTEEJCTB4MDAwMDAwMDAJLyogQWNjZXNzIFN1cGVyQmFuayBBICovCisjZGVmaW5lIFRFU1RfQk5LU0VMQgkJMHgwMDgwMDAwMAkvKiBBY2Nlc3MgU3VwZXJCYW5rIEIgKi8KKworI2VuZGlmCS8qIF9ERUZfTFBCTEFDS0ZJTl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jdXJyZW50LmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9jdXJyZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA4YzI3OQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2N1cnJlbnQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogVS1ib290IC0gY3VycmVudC5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fQ1VSUkVOVF9ICisjZGVmaW5lIF9CTEFDS0ZJTl9DVVJSRU5UX0gKKy8qCisgKgljdXJyZW50LmgKKyAqCShDKSBDb3B5cmlnaHQgMjAwMCwgTGluZW8sIERhdmlkIE1jQ3VsbG91Z2ggPGRhdmlkbUBsaW5lby5jb20+CisgKgorICoJcmF0aGVyIHRoYW4gZGVkaWNhdGUgYSByZWdpc3RlciAoYXMgdGhlIG02OGsgc291cmNlIGRvZXMpLCB3ZQorICoJanVzdCBrZWVwIGEgZ2xvYmFsLCAgd2Ugc2hvdWxkIHByb2JhYmx5IGp1c3QgY2hhbmdlIGl0IGFsbCB0byBiZQorICoJY3VycmVudCBhbmQgbG9zZSBfY3VycmVudF90YXNrLgorICovCisKK2V4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9jdXJyZW50X3Rhc2s7CisjZGVmaW5lIGdldF9jdXJyZW50KCkJX2N1cnJlbnRfdGFzaworI2RlZmluZSBjdXJyZW50IAlfY3VycmVudF90YXNrCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vZGVsYXkuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2RlbGF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJiNzM4OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2RlbGF5LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIFUtYm9vdCAtIGRlbGF5LmggUm91dGluZXMgZm9yIGludHJvZHVjaW5nIGRlbGF5cworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX0JMQUNLRklOX0RFTEFZX0gKKyNkZWZpbmUgX0JMQUNLRklOX0RFTEFZX0gKKworLyoKKyAqIENoYW5nZXMgbWFkZSBieSBha2Jhci5odXNzYWluQExpbmVvLmNvbSwgZm9yIEJMQUNLRklOCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQgSGFtaXNoIE1hY2RvbmFsZAorICoKKyAqIERlbGF5IHJvdXRpbmVzLCB1c2luZyBhIHByZS1jb21wdXRlZCAibG9vcHNfcGVyX3NlY29uZCIgdmFsdWUuCisgKi8KKworZXh0ZXJuIF9faW5saW5lX18gdm9pZCBfX2RlbGF5KHVuc2lnbmVkIGxvbmcgbG9vcHMpCit7CisJX19hc21fXyBfX3ZvbGF0aWxlX18oIjE6XHQlMCArPSAtMTtcblx0IgorCQkJCSJjYyA9ICUwID09IDA7XG5cdCIKKwkJCQkiaWYgISBjYyBqdW1wIDFiO1xuIjoiPWQiKGxvb3BzKQorCQkJCToiMCIobG9vcHMpKTsKK30KKworLyoKKyAqIFVzZSBvbmx5IGZvciB2ZXJ5IHNtYWxsIGRlbGF5cyAoIDwgMSBtc2VjKS4gIFNob3VsZCBwcm9iYWJseSB1c2UgYQorICogbG9va3VwIHRhYmxlLCByZWFsbHksIGFzIHRoZSBtdWx0aXBsaWNhdGlvbnMgdGFrZSBtdWNoIHRvbyBsb25nIHdpdGgKKyAqIHNob3J0IGRlbGF5cy4gIFRoaXMgaXMgYSAicmVhc29uYWJsZSIgaW1wbGVtZW50YXRpb24sIHRob3VnaCAoYW5kIHRoZQorICogZmlyc3QgY29uc3RhbnQgbXVsdGlwbGljYXRpb25zIGdldHMgb3B0aW1pemVkIGF3YXkgaWYgdGhlIGRlbGF5IGlzCisgKiBhIGNvbnN0YW50KQorICovCitleHRlcm4gX19pbmxpbmVfXyB2b2lkIHVkZWxheSh1bnNpZ25lZCBsb25nIHVzZWNzKQoreworCV9fZGVsYXkodXNlY3MpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2VudHJ5LmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9lbnRyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwN2E1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9lbnRyeS5oCkBAIC0wLDAgKzEsMzg1IEBACisvKgorICogVS1ib290IC0gZW50cnkuaCBSb3V0aW5lcyBmb3IgY29udGV4dCBzYXZpbmcgYW5kIHJlc3RvcmluZworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19CTEFDS0ZJTl9FTlRSWV9ICisjZGVmaW5lIF9fQkxBQ0tGSU5fRU5UUllfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL3NldHVwLmg+CisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKworLyoKKyAqIFN0YWNrIGxheW91dCBpbiAncmV0X2Zyb21fZXhjZXB0aW9uJzoKKyAqCisgKi8KKworLyoKKyAqIFJlZ2lzdGVyICVwMiBpcyBub3cgc2V0IHRvIHRoZSBjdXJyZW50IHRhc2sgdGhyb3VnaG91dAorICogdGhlIHdob2xlIGtlcm5lbC4KKyAqLworCisjaWZkZWYgX19BU1NFTUJMWV9fCisKKyNkZWZpbmUJTEZMVVNIX0lfQU5EX0QJMHgwMDAwMDgwOAorI2RlZmluZQlMU0lHVFJBUAk1CisKKy8qIHByb2Nlc3MgYml0cyBmb3IgdGFza19zdHJ1Y3QuZmxhZ3MgKi8KKyNkZWZpbmUJUEZfVFJBQ0VTWVNfT0ZGCTMKKyNkZWZpbmUJUEZfVFJBQ0VTWVNfQklUCTUKKyNkZWZpbmUJUEZfUFRSQUNFRF9PRkYJMworI2RlZmluZQlQRl9QVFJBQ0VEX0JJVAk0CisjZGVmaW5lCVBGX0RUUkFDRV9PRkYJMQorI2RlZmluZQlQRl9EVFJBQ0VfQklUCTUKKworI2RlZmluZSBORVdfUFRfUkVHUworCisjaWYgZGVmaW5lZChORVdfUFRfUkVHUykKKworI2RlZmluZSBTQVZFX0FMTF9JTlQJCXNhdmVfY29udGV4dF9ub19pbnRlcnJ1cHRzCisjZGVmaW5lIFNBVkVfQUxMX1NZUwkJc2F2ZV9jb250ZXh0X25vX2ludGVycnVwdHMKKyNkZWZpbmUgU0FWRV9DT05URVhUCQlzYXZlX2NvbnRleHRfd2l0aF9pbnRlcnJ1cHRzCisKKyNkZWZpbmUgUkVTVE9SRV9BTEwJCXJlc3RvcmVfY29udGV4dF9ub19pbnRlcnJ1cHRzCisjZGVmaW5lIFJFU1RPUkVfQUxMX1NZUwkJcmVzdG9yZV9jb250ZXh0X25vX2ludGVycnVwdHMKKyNkZWZpbmUgUkVTVE9SRV9DT05URVhUCQlyZXN0b3JlX2NvbnRleHRfd2l0aF9pbnRlcnJ1cHRzCisKKyNlbHNlCisKKyNkZWZpbmUgU0FWRV9BTExfSU5UCQlzYXZlX2FsbF9pbnQKKyNkZWZpbmUgU0FWRV9BTExfU1lTCQlzYXZlX2FsbF9zeXMKKyNkZWZpbmUgU0FWRV9DT05URVhUCQlzYXZlX2NvbnRleHQKKyNkZWZpbmUgUkVTVE9SRV9BTEwJCXJlc3RvcmVfY29udGV4dAorI2RlZmluZSBSRVNUT1JFX0NPTlRFWFQJCXJlc3RvcmVfY29udGV4dAorCisjZW5kaWYKKworLyoKKyAqIENvZGUgdG8gc2F2ZSBwcm9jZXNzb3IgY29udGV4dC4KKyAqIFdlIGV2ZW4gc2F2ZSB0aGUgcmVnaXN0ZXIgd2hpY2ggYXJlIHByZXNlcnZlZCBieSBhIGZ1bmN0aW9uIGNhbGwKKyAqIC0gcjQsIHI1LCByNiwgcjcsIHAzLCBwNCwgcDUKKyAqLworLm1hY3JvIHNhdmVfY29udGV4dF93aXRoX2ludGVycnVwdHMKKwlbLS1zcF0gPSBSMDsKKwlbLS1zcF0gPSAoIFI3OjAsIFA1OjAgKTsKKwlbLS1zcF0gPSBmcDsKKwlbLS1zcF0gPSB1c3A7CisKKwlbLS1zcF0gPSBpMDsKKwlbLS1zcF0gPSBpMTsKKwlbLS1zcF0gPSBpMjsKKwlbLS1zcF0gPSBpMzsKKworCVstLXNwXSA9IG0wOworCVstLXNwXSA9IG0xOworCVstLXNwXSA9IG0yOworCVstLXNwXSA9IG0zOworCisJWy0tc3BdID0gbDA7CisJWy0tc3BdID0gbDE7CisJWy0tc3BdID0gbDI7CisJWy0tc3BdID0gbDM7CisKKwlbLS1zcF0gPSBiMDsKKwlbLS1zcF0gPSBiMTsKKwlbLS1zcF0gPSBiMjsKKwlbLS1zcF0gPSBiMzsKKwlbLS1zcF0gPSBhMC54OworCVstLXNwXSA9IGEwLnc7CisJWy0tc3BdID0gYTEueDsKKwlbLS1zcF0gPSBhMS53OworCisJWy0tc3BdID0gTEMwOworCVstLXNwXSA9IExDMTsKKwlbLS1zcF0gPSBMVDA7CisJWy0tc3BdID0gTFQxOworCVstLXNwXSA9IExCMDsKKwlbLS1zcF0gPSBMQjE7CisKKwlbLS1zcF0gPSBBU1RBVDsKKworCVstLXNwXSA9IHIwOwkvKiBTa2lwIHJlc2VydmVkICovCisJWy0tc3BdID0gUkVUUzsKKwlbLS1zcF0gPSBSRVRJOworCVstLXNwXSA9IFJFVFg7CisJWy0tc3BdID0gUkVUTjsKKwlbLS1zcF0gPSBSRVRFOworCVstLXNwXSA9IFNFUVNUQVQ7CisJWy0tc3BdID0gU1lTQ0ZHOworCVstLXNwXSA9IHIwOwkvKiBTa2lwIElQRU5EIGFzIHdlbGwuICovCisuZW5kbQorCisubWFjcm8gc2F2ZV9jb250ZXh0X25vX2ludGVycnVwdHMKKwlbLS1zcF0gPSBSMDsKKwlbLS1zcF0gPSAoIFI3OjAsIFA1OjAgKTsKKwlbLS1zcF0gPSBmcDsKKwlbLS1zcF0gPSB1c3A7CisKKwlbLS1zcF0gPSBpMDsKKwlbLS1zcF0gPSBpMTsKKwlbLS1zcF0gPSBpMjsKKwlbLS1zcF0gPSBpMzsKKworCVstLXNwXSA9IG0wOworCVstLXNwXSA9IG0xOworCVstLXNwXSA9IG0yOworCVstLXNwXSA9IG0zOworCisJWy0tc3BdID0gbDA7CisJWy0tc3BdID0gbDE7CisJWy0tc3BdID0gbDI7CisJWy0tc3BdID0gbDM7CisKKwlbLS1zcF0gPSBiMDsKKwlbLS1zcF0gPSBiMTsKKwlbLS1zcF0gPSBiMjsKKwlbLS1zcF0gPSBiMzsKKwlbLS1zcF0gPSBhMC54OworCVstLXNwXSA9IGEwLnc7CisJWy0tc3BdID0gYTEueDsKKwlbLS1zcF0gPSBhMS53OworCisJWy0tc3BdID0gTEMwOworCVstLXNwXSA9IExDMTsKKwlbLS1zcF0gPSBMVDA7CisJWy0tc3BdID0gTFQxOworCVstLXNwXSA9IExCMDsKKwlbLS1zcF0gPSBMQjE7CisKKwlbLS1zcF0gPSBBU1RBVDsKKworCVstLXNwXSA9IHIwOwkvKiBTa2lwIHJlc2VydmVkICovCisJWy0tc3BdID0gUkVUUzsKKwlyMCA9IFJFVEk7CisJWy0tc3BdID0gcjA7CisJWy0tc3BdID0gUkVUWDsKKwlbLS1zcF0gPSBSRVROOworCVstLXNwXSA9IFJFVEU7CisJWy0tc3BdID0gU0VRU1RBVDsKKwlbLS1zcF0gPSBTWVNDRkc7CisJWy0tc3BdID0gcjA7CS8qIFNraXAgSVBFTkQgYXMgd2VsbC4gKi8KKy5lbmRtCisKKy5tYWNybyByZXN0b3JlX2NvbnRleHRfbm9faW50ZXJydXB0cworCXNwICs9IDQ7CisJU1lTQ0ZHID0gW3NwKytdOworCVNFUVNUQVQgPSBbc3ArK107CisJUkVURSA9IFtzcCsrXTsKKwlSRVROID0gW3NwKytdOworCVJFVFggPSBbc3ArK107CisJcjAgPSBbc3ArK107CisJUkVUSSA9IHIwOworCVJFVFMgPSBbc3ArK107CisKKwlzcCArPSA0OworCisJQVNUQVQgPSBbc3ArK107CisKKwlMQjEgPSBbc3ArK107CisJTEIwID0gW3NwKytdOworCUxUMSA9IFtzcCsrXTsKKwlMVDAgPSBbc3ArK107CisJTEMxID0gW3NwKytdOworCUxDMCA9IFtzcCsrXTsKKworCWExLncgPSBbc3ArK107CisJYTEueCA9IFtzcCsrXTsKKwlhMC53ID0gW3NwKytdOworCWEwLnggPSBbc3ArK107CisJYjMgPSBbc3ArK107CisJYjIgPSBbc3ArK107CisJYjEgPSBbc3ArK107CisJYjAgPSBbc3ArK107CisKKwlsMyA9IFtzcCsrXTsKKwlsMiA9IFtzcCsrXTsKKwlsMSA9IFtzcCsrXTsKKwlsMCA9IFtzcCsrXTsKKworCW0zID0gW3NwKytdOworCW0yID0gW3NwKytdOworCW0xID0gW3NwKytdOworCW0wID0gW3NwKytdOworCisJaTMgPSBbc3ArK107CisJaTIgPSBbc3ArK107CisJaTEgPSBbc3ArK107CisJaTAgPSBbc3ArK107CisKKwlzcCArPSA0OworCWZwID0gW3NwKytdOworCisJKCBSNyA6IDAsIFA1IDogMCkgPSBbIFNQICsrIF07CisJc3AgKz0gNDsKKy5lbmRtCisKKy5tYWNybyByZXN0b3JlX2NvbnRleHRfd2l0aF9pbnRlcnJ1cHRzCisJc3AgKz0gNDsKKwlTWVNDRkcgPSBbc3ArK107CisJU0VRU1RBVCA9IFtzcCsrXTsKKwlSRVRFID0gW3NwKytdOworCVJFVE4gPSBbc3ArK107CisJUkVUWCA9IFtzcCsrXTsKKwlSRVRJID0gW3NwKytdOworCVJFVFMgPSBbc3ArK107CisKKwlzcCArPSA0OworCisJQVNUQVQgPSBbc3ArK107CisKKwlMQjEgPSBbc3ArK107CisJTEIwID0gW3NwKytdOworCUxUMSA9IFtzcCsrXTsKKwlMVDAgPSBbc3ArK107CisJTEMxID0gW3NwKytdOworCUxDMCA9IFtzcCsrXTsKKworCWExLncgPSBbc3ArK107CisJYTEueCA9IFtzcCsrXTsKKwlhMC53ID0gW3NwKytdOworCWEwLnggPSBbc3ArK107CisJYjMgPSBbc3ArK107CisJYjIgPSBbc3ArK107CisJYjEgPSBbc3ArK107CisJYjAgPSBbc3ArK107CisKKwlsMyA9IFtzcCsrXTsKKwlsMiA9IFtzcCsrXTsKKwlsMSA9IFtzcCsrXTsKKwlsMCA9IFtzcCsrXTsKKworCW0zID0gW3NwKytdOworCW0yID0gW3NwKytdOworCW0xID0gW3NwKytdOworCW0wID0gW3NwKytdOworCisJaTMgPSBbc3ArK107CisJaTIgPSBbc3ArK107CisJaTEgPSBbc3ArK107CisJaTAgPSBbc3ArK107CisKKwlzcCArPSA0OworCWZwID0gW3NwKytdOworCisJKCBSNyA6IDAsIFA1IDogMCkgPSBbIFNQICsrIF07CisJc3AgKz0gNDsKKy5lbmRtCisKKyNpZiAhZGVmaW5lZChORVdfUFRfUkVHUykKKy8qCisgKiBhIC0xIGluIHRoZSBvcmlnX3IwIGZpZWxkIHNpZ25pZmllcworICogdGhhdCB0aGUgc3RhY2sgZnJhbWUgaXMgTk9UIGZvciBzeXNjYWxsCisgKi8KKy5tYWNybwlzYXZlX2FsbF9pbnQKKy8qIHJlc2VydmVkIGFuZCBkaXNhYmxlIHRoZSBzaW5nbGUgc3RlcCBvZiBTWVNDRkcsIGJ5IFN0ZXZlbiBDaGVuIDAzLzA3LzEwICovCisJWy0tc3BdID0gcjA7CisJcjAubCA9IDB4MzA7CQkvKiBFcnJhdGEgZm9yIEJGNTMzICovCisJcjAuaCA9IDB4MDsKKwlzeXNjZmcgPSByMDsJCS8qIGRpc2FibGUgc2luZ2xlIHN0ZXAgZmxhZyBpbiBTWVNDRkcgKi8KKwlyMCA9IFtzcCsrXTsKKwlbLS1zcF0gPSBzeXNjZmc7CS8qIHN0b3JlIFNZU0NGRyAqLworCisJWy0tc3BdID0gcjA7CS8qIFJlc2VydmVkIGZvciBJUEVORCAqLworCVstLXNwXSA9IGZwOworCVstLXNwXSA9IHVzcDsKKwlbLS1zcF0gPSByMDsKKworCVstLXNwXSA9IHIwOworCXIwID0gW3NwICsgOF07CisJWy0tc3BdID0gYTAueDsKKwlbLS1zcF0gPSBhMS54OworCVstLXNwXSA9IGEwLnc7CisJWy0tc3BdID0gYTEudzsKKwlbLS1zcF0gPSByZXRzOworCVstLXNwXSA9IGFzdGF0OworCVstLXNwXSA9IHNlcXN0YXQ7CisJWy0tc3BdID0gcmV0eDsJLyogY3VycmVudCBwYyB3aGVuIGV4Y2VwdGlvbiBoYXBwZW5zICovCisJWy0tc3BdID0gKCByNzo1LCBwNTowICk7CisJWy0tc3BdID0gcjE7CisJWy0tc3BdID0gcjI7CisJWy0tc3BdID0gcjQ7CisJWy0tc3BdID0gcjM7CisuZW5kbQorCisubWFjcm8Jc2F2ZV9hbGxfc3lzCisJWy0tc3BdID0gcjA7CisJWy0tc3BdID0gcjA7CisJWy0tc3BdID0gYTAueDsKKwlbLS1zcF0gPSBhMS54OworCVstLXNwXSA9IGEwLnc7CisJWy0tc3BdID0gYTEudzsKKwlbLS1zcF0gPSByZXRzOworCVstLXNwXSA9IGFzdGF0OworCVstLXNwXSA9IHNlcXN0YXQ7CisJWy0tc3BdID0gcmV0eDsJLyogY3VycmVudCBwYyB3aGVuIGV4Y2VwdGlvbiBoYXBwZW5zICovCisJWy0tc3BdID0gKCByNzo1LCBwNTowICk7CisJWy0tc3BdID0gcjE7CisJWy0tc3BdID0gcjI7CisJWy0tc3BdID0gcjQ7CisJWy0tc3BdID0gcjM7CisuZW5kbQorCisubWFjcm8JcmVzdG9yZV9hbGwKKwlyMyA9IFtzcCsrXTsKKwlyNCA9IFtzcCsrXTsKKwlyMiA9IFtzcCsrXTsKKwlyMSA9IFtzcCsrXTsKKwkoIHI3OjUsIHA1OjAgKSA9IFtzcCsrXTsKKwlyZXR4ID0gW3NwKytdOworCXNlcXN0YXQgPSBbc3ArK107CisJYXN0YXQgPSBbc3ArK107CisJcmV0cyA9IFtzcCsrXTsKKwlhMS53ID0gW3NwKytdOworCWEwLncgPSBbc3ArK107CisJYTEueCA9IFtzcCsrXTsKKwlhMC54ID0gW3NwKytdOworCXNwICs9IDQ7CS8qIG9yaWcgcjAgKi8KKwlyMCA9IFtzcCsrXTsKKworCXNwICs9IDQ7CisJZnAgPSBbc3ArK107CisJc3AgKz00OwkJLyogU2tpcCB0aGUgSVBFTkQgKi8KKworCXN5c2NmZyA9IFtzcCsrXTsKKworLmVuZG0KKworI2VuZGlmCisKKyNkZWZpbmUgU1RSKFgpIAkJCVNUUjEoWCkKKyNkZWZpbmUgU1RSMShYKSAJCSNYCisKKyNpZiBkZWZpbmVkKE5FV19QVF9SRUdTKQorCisjZGVmaW5lIFBUX09GRl9PUklHX1IwCQkyMDgKKyNkZWZpbmUgUFRfT0ZGX1NSCQk4CisKKyNlbHNlCisKKyNkZWZpbmUgUFRfT0ZGX09SSUdfUjAJCTB4NTQKKyNkZWZpbmUgUFRfT0ZGX1NSCQkweDM4CS8qIHNlcXN0YXQgaW4gcHRfcmVncyAqLworCisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2Vycm5vLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9lcnJuby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxM2JiYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9lcnJuby5oCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogVS1ib290IC0gZXJybm8uaCBFcnJvciBudW1iZXIgZGVmaW5lcworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX0JMQUNLRklOX0VSUk5PX0gKKyNkZWZpbmUgX0JMQUNLRklOX0VSUk5PX0gKKworI2RlZmluZQlFUEVSTQkJMQkvKiBPcGVyYXRpb24gbm90IHBlcm1pdHRlZCAqLworI2RlZmluZQlFTk9FTlQJCTIJLyogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAqLworI2RlZmluZQlFU1JDSAkJMwkvKiBObyBzdWNoIHByb2Nlc3MgKi8KKyNkZWZpbmUJRUlOVFIJCTQJLyogSW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwgKi8KKyNkZWZpbmUJRUlPCQk1CS8qIEkvTyBlcnJvciAqLworI2RlZmluZQlFTlhJTwkJNgkvKiBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzICovCisjZGVmaW5lCUUyQklHCQk3CS8qIEFyZyBsaXN0IHRvbyBsb25nICovCisjZGVmaW5lCUVOT0VYRUMJCTgJLyogRXhlYyBmb3JtYXQgZXJyb3IgKi8KKyNkZWZpbmUJRUJBREYJCTkJLyogQmFkIGZpbGUgbnVtYmVyICovCisjZGVmaW5lCUVDSElMRAkJMTAJLyogTm8gY2hpbGQgcHJvY2Vzc2VzICovCisjZGVmaW5lCUVBR0FJTgkJMTEJLyogVHJ5IGFnYWluICovCisjZGVmaW5lCUVOT01FTQkJMTIJLyogT3V0IG9mIG1lbW9yeSAqLworI2RlZmluZQlFQUNDRVMJCTEzCS8qIFBlcm1pc3Npb24gZGVuaWVkICovCisjZGVmaW5lCUVGQVVMVAkJMTQJLyogQmFkIGFkZHJlc3MgKi8KKyNkZWZpbmUJRU5PVEJMSwkJMTUJLyogQmxvY2sgZGV2aWNlIHJlcXVpcmVkICovCisjZGVmaW5lCUVCVVNZCQkxNgkvKiBEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeSAqLworI2RlZmluZQlFRVhJU1QJCTE3CS8qIEZpbGUgZXhpc3RzICovCisjZGVmaW5lCUVYREVWCQkxOAkvKiBDcm9zcy1kZXZpY2UgbGluayAqLworI2RlZmluZQlFTk9ERVYJCTE5CS8qIE5vIHN1Y2ggZGV2aWNlICovCisjZGVmaW5lCUVOT1RESVIJCTIwCS8qIE5vdCBhIGRpcmVjdG9yeSAqLworI2RlZmluZQlFSVNESVIJCTIxCS8qIElzIGEgZGlyZWN0b3J5ICovCisjZGVmaW5lCUVJTlZBTAkJMjIJLyogSW52YWxpZCBhcmd1bWVudCAqLworI2RlZmluZQlFTkZJTEUJCTIzCS8qIEZpbGUgdGFibGUgb3ZlcmZsb3cgKi8KKyNkZWZpbmUJRU1GSUxFCQkyNAkvKiBUb28gbWFueSBvcGVuIGZpbGVzICovCisjZGVmaW5lCUVOT1RUWQkJMjUJLyogTm90IGEgdHlwZXdyaXRlciAqLworI2RlZmluZQlFVFhUQlNZCQkyNgkvKiBUZXh0IGZpbGUgYnVzeSAqLworI2RlZmluZQlFRkJJRwkJMjcJLyogRmlsZSB0b28gbGFyZ2UgKi8KKyNkZWZpbmUJRU5PU1BDCQkyOAkvKiBObyBzcGFjZSBsZWZ0IG9uIGRldmljZSAqLworI2RlZmluZQlFU1BJUEUJCTI5CS8qIElsbGVnYWwgc2VlayAqLworI2RlZmluZQlFUk9GUwkJMzAJLyogUmVhZC1vbmx5IGZpbGUgc3lzdGVtICovCisjZGVmaW5lCUVNTElOSwkJMzEJLyogVG9vIG1hbnkgbGlua3MgKi8KKyNkZWZpbmUJRVBJUEUJCTMyCS8qIEJyb2tlbiBwaXBlICovCisjZGVmaW5lCUVET00JCTMzCS8qIE1hdGggYXJndW1lbnQgb3V0IG9mIGRvbWFpbiBvZiBmdW5jICovCisjZGVmaW5lCUVSQU5HRQkJMzQJLyogTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGUgKi8KKyNkZWZpbmUJRURFQURMSwkJMzUJLyogUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIgKi8KKyNkZWZpbmUJRU5BTUVUT09MT05HCTM2CS8qIEZpbGUgbmFtZSB0b28gbG9uZyAqLworI2RlZmluZQlFTk9MQ0sJCTM3CS8qIE5vIHJlY29yZCBsb2NrcyBhdmFpbGFibGUgKi8KKyNkZWZpbmUJRU5PU1lTCQkzOAkvKiBGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQgKi8KKyNkZWZpbmUJRU5PVEVNUFRZCTM5CS8qIERpcmVjdG9yeSBub3QgZW1wdHkgKi8KKyNkZWZpbmUJRUxPT1AJCTQwCS8qIFRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkICovCisjZGVmaW5lCUVXT1VMREJMT0NLCUVBR0FJTgkvKiBPcGVyYXRpb24gd291bGQgYmxvY2sgKi8KKyNkZWZpbmUJRU5PTVNHCQk0MgkvKiBObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZSAqLworI2RlZmluZQlFSURSTQkJNDMJLyogSWRlbnRpZmllciByZW1vdmVkICovCisjZGVmaW5lCUVDSFJORwkJNDQJLyogQ2hhbm5lbCBudW1iZXIgb3V0IG9mIHJhbmdlICovCisjZGVmaW5lCUVMMk5TWU5DCTQ1CS8qIExldmVsIDIgbm90IHN5bmNocm9uaXplZCAqLworI2RlZmluZQlFTDNITFQJCTQ2CS8qIExldmVsIDMgaGFsdGVkICovCisjZGVmaW5lCUVMM1JTVAkJNDcJLyogTGV2ZWwgMyByZXNldCAqLworI2RlZmluZQlFTE5STkcJCTQ4CS8qIExpbmsgbnVtYmVyIG91dCBvZiByYW5nZSAqLworI2RlZmluZQlFVU5BVENICQk0OQkvKiBQcm90b2NvbCBkcml2ZXIgbm90IGF0dGFjaGVkICovCisjZGVmaW5lCUVOT0NTSQkJNTAJLyogTm8gQ1NJIHN0cnVjdHVyZSBhdmFpbGFibGUgKi8KKyNkZWZpbmUJRUwySExUCQk1MQkvKiBMZXZlbCAyIGhhbHRlZCAqLworI2RlZmluZQlFQkFERQkJNTIJLyogSW52YWxpZCBleGNoYW5nZSAqLworI2RlZmluZQlFQkFEUgkJNTMJLyogSW52YWxpZCByZXF1ZXN0IGRlc2NyaXB0b3IgKi8KKyNkZWZpbmUJRVhGVUxMCQk1NAkvKiBFeGNoYW5nZSBmdWxsICovCisjZGVmaW5lCUVOT0FOTwkJNTUJLyogTm8gYW5vZGUgKi8KKyNkZWZpbmUJRUJBRFJRQwkJNTYJLyogSW52YWxpZCByZXF1ZXN0IGNvZGUgKi8KKyNkZWZpbmUJRUJBRFNMVAkJNTcJLyogSW52YWxpZCBzbG90ICovCisKKyNkZWZpbmUJRURFQURMT0NLCUVERUFETEsKKworI2RlZmluZQlFQkZPTlQJCTU5CS8qIEJhZCBmb250IGZpbGUgZm9ybWF0ICovCisjZGVmaW5lCUVOT1NUUgkJNjAJLyogRGV2aWNlIG5vdCBhIHN0cmVhbSAqLworI2RlZmluZQlFTk9EQVRBCQk2MQkvKiBObyBkYXRhIGF2YWlsYWJsZSAqLworI2RlZmluZQlFVElNRQkJNjIJLyogVGltZXIgZXhwaXJlZCAqLworI2RlZmluZQlFTk9TUgkJNjMJLyogT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzICovCisjZGVmaW5lCUVOT05FVAkJNjQJLyogTWFjaGluZSBpcyBub3Qgb24gdGhlIG5ldHdvcmsgKi8KKyNkZWZpbmUJRU5PUEtHCQk2NQkvKiBQYWNrYWdlIG5vdCBpbnN0YWxsZWQgKi8KKyNkZWZpbmUJRVJFTU9URQkJNjYJLyogT2JqZWN0IGlzIHJlbW90ZSAqLworI2RlZmluZQlFTk9MSU5LCQk2NwkvKiBMaW5rIGhhcyBiZWVuIHNldmVyZWQgKi8KKyNkZWZpbmUJRUFEVgkJNjgJLyogQWR2ZXJ0aXNlIGVycm9yICovCisjZGVmaW5lCUVTUk1OVAkJNjkJLyogU3Jtb3VudCBlcnJvciAqLworI2RlZmluZQlFQ09NTQkJNzAJLyogQ29tbXVuaWNhdGlvbiBlcnJvciBvbiBzZW5kICovCisjZGVmaW5lCUVQUk9UTwkJNzEJLyogUHJvdG9jb2wgZXJyb3IgKi8KKyNkZWZpbmUJRU1VTFRJSE9QCTcyCS8qIE11bHRpaG9wIGF0dGVtcHRlZCAqLworI2RlZmluZQlFRE9URE9UCQk3MwkvKiBSRlMgc3BlY2lmaWMgZXJyb3IgKi8KKyNkZWZpbmUJRUJBRE1TRwkJNzQJLyogTm90IGEgZGF0YSBtZXNzYWdlICovCisjZGVmaW5lCUVPVkVSRkxPVwk3NQkvKiBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRlZmluZWQgZGF0YSB0eXBlICovCisjZGVmaW5lCUVOT1RVTklRCTc2CS8qIE5hbWUgbm90IHVuaXF1ZSBvbiBuZXR3b3JrICovCisjZGVmaW5lCUVCQURGRAkJNzcJLyogRmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZSAqLworI2RlZmluZQlFUkVNQ0hHCQk3OAkvKiBSZW1vdGUgYWRkcmVzcyBjaGFuZ2VkICovCisjZGVmaW5lCUVMSUJBQ0MJCTc5CS8qIENhbiBub3QgYWNjZXNzIGEgbmVlZGVkIHNoYXJlZCBsaWJyYXJ5ICovCisjZGVmaW5lCUVMSUJCQUQJCTgwCS8qIEFjY2Vzc2luZyBhIGNvcnJ1cHRlZCBzaGFyZWQgbGlicmFyeSAqLworI2RlZmluZQlFTElCU0NOCQk4MQkvKiAubGliIHNlY3Rpb24gaW4gYS5vdXQgY29ycnVwdGVkICovCisjZGVmaW5lCUVMSUJNQVgJCTgyCS8qIEF0dGVtcHRpbmcgdG8gbGluayBpbiB0b28gbWFueSBzaGFyZWQgbGlicmFyaWVzICovCisjZGVmaW5lCUVMSUJFWEVDCTgzCS8qIENhbm5vdCBleGVjIGEgc2hhcmVkIGxpYnJhcnkgZGlyZWN0bHkgKi8KKyNkZWZpbmUJRUlMU0VRCQk4NAkvKiBJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UgKi8KKyNkZWZpbmUJRVJFU1RBUlQJODUJLyogSW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwgc2hvdWxkIGJlIHJlc3RhcnRlZCAqLworI2RlZmluZQlFU1RSUElQRQk4NgkvKiBTdHJlYW1zIHBpcGUgZXJyb3IgKi8KKyNkZWZpbmUJRVVTRVJTCQk4NwkvKiBUb28gbWFueSB1c2VycyAqLworI2RlZmluZQlFTk9UU09DSwk4OAkvKiBTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQgKi8KKyNkZWZpbmUJRURFU1RBRERSUkVRCTg5CS8qIERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQgKi8KKyNkZWZpbmUJRU1TR1NJWkUJOTAJLyogTWVzc2FnZSB0b28gbG9uZyAqLworI2RlZmluZQlFUFJPVE9UWVBFCTkxCS8qIFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCAqLworI2RlZmluZQlFTk9QUk9UT09QVAk5MgkvKiBQcm90b2NvbCBub3QgYXZhaWxhYmxlICovCisjZGVmaW5lCUVQUk9UT05PU1VQUE9SVAk5MwkvKiBQcm90b2NvbCBub3Qgc3VwcG9ydGVkICovCisjZGVmaW5lCUVTT0NLVE5PU1VQUE9SVAk5NAkvKiBTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkICovCisjZGVmaW5lCUVPUE5PVFNVUFAJOTUJLyogT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdHJhbnNwb3J0IGVuZHBvaW50ICovCisjZGVmaW5lCUVQRk5PU1VQUE9SVAk5NgkvKiBQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZCAqLworI2RlZmluZQlFQUZOT1NVUFBPUlQJOTcJLyogQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCAqLworI2RlZmluZQlFQUREUklOVVNFCTk4CS8qIEFkZHJlc3MgYWxyZWFkeSBpbiB1c2UgKi8KKyNkZWZpbmUJRUFERFJOT1RBVkFJTAk5OQkvKiBDYW5ub3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzICovCisjZGVmaW5lCUVORVRET1dOCTEwMAkvKiBOZXR3b3JrIGlzIGRvd24gKi8KKyNkZWZpbmUJRU5FVFVOUkVBQ0gJMTAxCS8qIE5ldHdvcmsgaXMgdW5yZWFjaGFibGUgKi8KKyNkZWZpbmUJRU5FVFJFU0VUCTEwMgkvKiBOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlvbiBiZWNhdXNlIG9mIHJlc2V0ICovCisjZGVmaW5lCUVDT05OQUJPUlRFRAkxMDMJLyogU29mdHdhcmUgY2F1c2VkIGNvbm5lY3Rpb24gYWJvcnQgKi8KKyNkZWZpbmUJRUNPTk5SRVNFVAkxMDQJLyogQ29ubmVjdGlvbiByZXNldCBieSBwZWVyICovCisjZGVmaW5lCUVOT0JVRlMJCTEwNQkvKiBObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlICovCisjZGVmaW5lCUVJU0NPTk4JCTEwNgkvKiBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQgKi8KKyNkZWZpbmUJRU5PVENPTk4JMTA3CS8qIFRyYW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkICovCisjZGVmaW5lCUVTSFVURE9XTgkxMDgJLyogQ2Fubm90IHNlbmQgYWZ0ZXIgdHJhbnNwb3J0IGVuZHBvaW50IHNodXRkb3duICovCisjZGVmaW5lCUVUT09NQU5ZUkVGUwkxMDkJLyogVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fubm90IHNwbGljZSAqLworI2RlZmluZQlFVElNRURPVVQJMTEwCS8qIENvbm5lY3Rpb24gdGltZWQgb3V0ICovCisjZGVmaW5lCUVDT05OUkVGVVNFRAkxMTEJLyogQ29ubmVjdGlvbiByZWZ1c2VkICovCisjZGVmaW5lCUVIT1NURE9XTgkxMTIJLyogSG9zdCBpcyBkb3duICovCisjZGVmaW5lCUVIT1NUVU5SRUFDSAkxMTMJLyogTm8gcm91dGUgdG8gaG9zdCAqLworI2RlZmluZQlFQUxSRUFEWQkxMTQJLyogT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MgKi8KKyNkZWZpbmUJRUlOUFJPR1JFU1MJMTE1CS8qIE9wZXJhdGlvbiBub3cgaW4gcHJvZ3Jlc3MgKi8KKyNkZWZpbmUJRVNUQUxFCQkxMTYJLyogU3RhbGUgTkZTIGZpbGUgaGFuZGxlICovCisjZGVmaW5lCUVVQ0xFQU4JCTExNwkvKiBTdHJ1Y3R1cmUgbmVlZHMgY2xlYW5pbmcgKi8KKyNkZWZpbmUJRU5PVE5BTQkJMTE4CS8qIE5vdCBhIFhFTklYIG5hbWVkIHR5cGUgZmlsZSAqLworI2RlZmluZQlFTkFWQUlMCQkxMTkJLyogTm8gWEVOSVggc2VtYXBob3JlcyBhdmFpbGFibGUgKi8KKyNkZWZpbmUJRUlTTkFNCQkxMjAJLyogSXMgYSBuYW1lZCB0eXBlIGZpbGUgKi8KKyNkZWZpbmUJRVJFTU9URUlPCTEyMQkvKiBSZW1vdGUgSS9PIGVycm9yICovCisjZGVmaW5lCUVEUVVPVAkJMTIyCS8qIFF1b3RhIGV4Y2VlZGVkICovCisKKyNkZWZpbmUJRU5PTUVESVVNCTEyMwkvKiBObyBtZWRpdW0gZm91bmQgKi8KKyNkZWZpbmUJRU1FRElVTVRZUEUJMTI0CS8qIFdyb25nIG1lZGl1bSB0eXBlICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vZ2xvYmFsX2RhdGEuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2dsb2JhbF9kYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhMTJmMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2dsb2JhbF9kYXRhLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIFUtYm9vdCAtIGdsb2JhbF9kYXRhLmggRGVjbGFyYXRpb25zIGZvciBnbG9iYWwgZGF0YSBvZiB1LWJvb3QKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmCV9fQVNNX0dCTF9EQVRBX0gKKyNkZWZpbmUgX19BU01fR0JMX0RBVEFfSAorCisjaW5jbHVkZSA8YXNtL2lycS5oPgorCisvKgorICogVGhlIGZvbGxvd2luZyBkYXRhIHN0cnVjdHVyZSBpcyBwbGFjZWQgaW4gc29tZSBtZW1vcnkgd2ljaCBpcworICogYXZhaWxhYmxlIHZlcnkgZWFybHkgYWZ0ZXIgYm9vdCAobGlrZSBEUFJBTSBvbiBNUEM4eHgvTVBDODJ4eCwgb3IKKyAqIHNvbWUgbG9ja2VkIHBhcnRzIG9mIHRoZSBkYXRhIGNhY2hlKSB0byBhbGxvdyBmb3IgYSBtaW5pbXVtIHNldCBvZgorICogZ2xvYmFsIHZhcmlhYmxlcyBkdXJpbmcgc3lzdGVtIGluaXRpYWxpemF0aW9uICh1bnRpbCB3ZSBoYXZlIHNldAorICogdXAgdGhlIG1lbW9yeSBjb250cm9sbGVyIHNvIHRoYXQgd2UgY2FuIHVzZSBSQU0pLgorICoKKyAqIEtlZXAgaXQgKlNNQUxMKiBhbmQgcmVtZW1iZXIgdG8gc2V0IENGR19HQkxfREFUQV9TSVpFID4gc2l6ZW9mKGdkX3QpCisgKi8KK3R5cGVkZWYgc3RydWN0IGdsb2JhbF9kYXRhIHsKKwliZF90ICpiZDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGxvbmcgYm9hcmRfdHlwZTsKKwl1bnNpZ25lZCBsb25nIGJhdWRyYXRlOworCXVuc2lnbmVkIGxvbmcgaGF2ZV9jb25zb2xlOwkvKiBzZXJpYWxfaW5pdCgpIHdhcyBjYWxsZWQgKi8KKwl1bnNpZ25lZCBsb25nIHJhbV9zaXplOwkJLyogUkFNIHNpemUgKi8KKwl1bnNpZ25lZCBsb25nIHJlbG9jX29mZjsJLyogUmVsb2NhdGlvbiBPZmZzZXQgKi8KKwl1bnNpZ25lZCBsb25nIGVudl9hZGRyOwkJLyogQWRkcmVzcyAgb2YgRW52aXJvbm1lbnQgc3RydWN0ICovCisJdW5zaWduZWQgbG9uZyBlbnZfdmFsaWQ7CS8qIENoZWNrc3VtIG9mIEVudmlyb25tZW50IHZhbGlkPyAqLworCXZvaWQgKipqdDsJCQkvKiBqdW1wIHRhYmxlICovCit9IGdkX3Q7CisKKy8qCisgKiBHbG9iYWwgRGF0YSBGbGFncworICovCisjZGVmaW5lCUdEX0ZMR19SRUxPQwkweDAwMDAxCS8qIENvZGUgd2FzIHJlbG9jYXRlZCB0byBSQU0gICAgICovCisjZGVmaW5lCUdEX0ZMR19ERVZJTklUCTB4MDAwMDIJLyogRGV2aWNlcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgKi8KKyNkZWZpbmUJR0RfRkxHX1NJTEVOVAkweDAwMDA0CS8qIFNpbGVudCBtb2RlICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgICAgIHJlZ2lzdGVyIHZvbGF0aWxlIGdkX3QgKmdkIGFzbSAoIlA1IikKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9od19pcnEuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2h3X2lycS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZTA1MGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9od19pcnEuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogVS1ib290IC0gaHdfaXJxLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBUaGlzIGZpbGUgaXMgYmFzZWQgb24KKyAqIGxpbnV4L2FyY2gvJChBUkNIKS9wbGF0Zm9ybS8kKFBMQVRGT1JNKS9od19pcnEuaAorICogQmxhY2tGaW4gKEFESSkgYXNzZW1ibGVyIHJlc3RyaWN0ZWQgdmFsdWVzIGJ5IFRlZCBNYSA8bWF0ZWRAc3ltcGF0aWNvLmNhPgorICogQ29weXJpZ2h0IChjKSAyMDAyIEFyY3R1cnVzIE5ldHdvcmtzIEluYy4gKHd3dy5hcmN0dXJ1c25ldHdvcmtzLmNvbSkKKyAqIENvcHlyaWdodCAoYykgMjAwMiBMaW5lbywgSW5jIDxtYXR0d0BsaW5lby5jb20+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2lmZGVmIENPTkZJR19FWktJVDUzMworI2luY2x1ZGUgPGFzbS9ib2FyZC9iZjUzM19pcnEuaD4KKyNlbmRpZgorI2lmZGVmIENPTkZJR19TVEFNUAorI2luY2x1ZGUgPGFzbS9ib2FyZC9iZjUzM19pcnEuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vaW8ta2VybmVsLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9pby1rZXJuZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjA1NzJmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vaW8ta2VybmVsLmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBVLWJvb3QgLSBpby1rZXJuZWwuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX0JMQUNLRklOX0lPX0gKKyNkZWZpbmUgX0JMQUNLRklOX0lPX0gKKworI2lmZGVmIF9fS0VSTkVMX18KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisvKgorICogVGhlc2UgYXJlIGZvciBJU0EvUENJIHNoYXJlZCBtZW1vcnkgX29ubHlfIGFuZCBzaG91bGQgbmV2ZXIgYmUgdXNlZAorICogb24gYW55IG90aGVyIHR5cGUgb2YgbWVtb3J5LCBpbmNsdWRpbmcgWm9ycm8gbWVtb3J5LiBUaGV5IGFyZSBtZWFudCB0bworICogYWNjZXNzIHRoZSBidXMgaW4gdGhlIGJ1cyBieXRlIG9yZGVyIHdoaWNoIGlzIGxpdHRsZS1lbmRpYW4hLgorICoKKyAqIHJlYWRYL3dyaXRlWCgpIGFyZSB1c2VkIHRvIGFjY2VzcyBtZW1vcnkgbWFwcGVkIGRldmljZXMuIE9uIHNvbWUKKyAqIGFyY2hpdGVjdHVyZXMgdGhlIG1lbW9yeSBtYXBwZWQgSU8gc3R1ZmYgbmVlZHMgdG8gYmUgYWNjZXNzZWQKKyAqIGRpZmZlcmVudGx5LiBPbiB0aGUgbTY4ayBhcmNoaXRlY3R1cmUsIHdlIGp1c3QgcmVhZC93cml0ZSB0aGUKKyAqIG1lbW9yeSBsb2NhdGlvbiBkaXJlY3RseS4KKyAqLworLyogKytyb21hbjogVGhlIGFzc2lnbm1lbnRzIHRvIHRlbXAuIHZhcnMgYXZvaWQgdGhhdCBnY2Mgc29tZXRpbWVzIGdlbmVyYXRlcworICogdHdvIGFjY2Vzc2VzIHRvIG1lbW9yeSwgd2hpY2ggbWF5IGJlIHVuZGVzaXJlYWJsZSBmb3Igc29tZSBkZXZpY2VzLgorICovCisjZGVmaW5lIHJlYWRiKGFkZHIpICh7IHVuc2lnbmVkIGNoYXIgX192ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoYWRkcikpO2FzbSgic3N5bmM7Iik7IF9fdjsgfSkKKyNkZWZpbmUgcmVhZHcoYWRkcikgKHsgdW5zaWduZWQgc2hvcnQgX192ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKGFkZHIpKTsgYXNtKCJzc3luYzsiKTtfX3Y7IH0pCisjZGVmaW5lIHJlYWRsKGFkZHIpICh7IHVuc2lnbmVkIGludCBfX3YgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKGFkZHIpKTthc20oInNzeW5jOyIpOyBfX3Y7IH0pCisjZGVmaW5lIHdyaXRlYihiLGFkZHIpICh2b2lkKSgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopIChhZGRyKSkgPSAoYikpCisjZGVmaW5lIHdyaXRldyhiLGFkZHIpICh2b2lkKSgoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoYWRkcikpID0gKGIpKQorI2RlZmluZSB3cml0ZWwoYixhZGRyKSAodm9pZCkoKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopIChhZGRyKSkgPSAoYikpCisjZGVmaW5lIF9fcmF3X3JlYWRiIHJlYWRiCisjZGVmaW5lIF9fcmF3X3JlYWR3IHJlYWR3CisjZGVmaW5lIF9fcmF3X3JlYWRsIHJlYWRsCisjZGVmaW5lIF9fcmF3X3dyaXRlYiB3cml0ZWIKKyNkZWZpbmUgX19yYXdfd3JpdGV3IHdyaXRldworI2RlZmluZSBfX3Jhd193cml0ZWwgd3JpdGVsCisjZGVmaW5lIG1lbXNldF9pbyhhLGIsYykJbWVtc2V0KCh2b2lkICopKGEpLChiKSwoYykpCisjZGVmaW5lIG1lbWNweV9mcm9taW8oYSxiLGMpCW1lbWNweSgoYSksKHZvaWQgKikoYiksKGMpKQorI2RlZmluZSBtZW1jcHlfdG9pbyhhLGIsYykJbWVtY3B5KCh2b2lkICopKGEpLChiKSwoYykpCisjZGVmaW5lIGluYihhZGRyKQljZl9pbmIoKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIqKShhZGRyKSkKKyNkZWZpbmUgaW53KGFkZHIpCXJlYWR3KGFkZHIpCisjZGVmaW5lIGlubChhZGRyKQlyZWFkbChhZGRyKQorI2RlZmluZSBvdXRiKHgsYWRkcikJY2Zfb3V0YigodW5zaWduZWQgY2hhcikoeCksICh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyKikoYWRkcikpCisjZGVmaW5lIG91dHcoeCxhZGRyKQkoKHZvaWQpIHdyaXRldyh4LGFkZHIpKQorI2RlZmluZSBvdXRsKHgsYWRkcikJKCh2b2lkKSB3cml0ZWwoeCxhZGRyKSkKKyNkZWZpbmUgaW5iX3AoYWRkcikJaW5iKGFkZHIpCisjZGVmaW5lIGlud19wKGFkZHIpCWludyhhZGRyKQorI2RlZmluZSBpbmxfcChhZGRyKQlpbmwoYWRkcikKKyNkZWZpbmUgb3V0Yl9wKHgsYWRkcikJb3V0Yih4LGFkZHIpCisjZGVmaW5lIG91dHdfcCh4LGFkZHIpCW91dHcoeCxhZGRyKQorI2RlZmluZSBvdXRsX3AoeCxhZGRyKQlvdXRsKHgsYWRkcikKKyNkZWZpbmUgaW5zYihwb3J0LCBhZGRyLCBjb3VudCkJbWVtY3B5KCh2b2lkKilhZGRyLCAodm9pZCopcG9ydCwgY291bnQpCisjZGVmaW5lIGluc3cocG9ydCwgYWRkciwgY291bnQpCWNmX2luc3coKHVuc2lnbmVkIHNob3J0KilhZGRyLCAodW5zaWduZWQgc2hvcnQqKShwb3J0KSwgKGNvdW50KSkKKyNkZWZpbmUgaW5zbChwb3J0LCBhZGRyLCBjb3VudCkJbWVtY3B5KCh2b2lkKilhZGRyLCAodm9pZCopcG9ydCwgKDQqY291bnQpKQorI2RlZmluZSBvdXRzYihwb3J0LCBhZGRyLCBjb3VudCkJbWVtY3B5KCh2b2lkKilwb3J0LCAodm9pZCopYWRkciwgY291bnQpCisjZGVmaW5lIG91dHN3KHBvcnQsYWRkcixjb3VudCkJCWNmX291dHN3KCh1bnNpZ25lZCBzaG9ydCopKHBvcnQpLCAodW5zaWduZWQgc2hvcnQqKWFkZHIsIChjb3VudCkpCisjZGVmaW5lIG91dHNsKHBvcnQsIGFkZHIsIGNvdW50KQltZW1jcHkoKHZvaWQqKXBvcnQsICh2b2lkKilhZGRyLCAoNCpjb3VudCkpCisjZGVmaW5lIElPX1NQQUNFX0xJTUlUCTB4ZmZmZgorCisvKiBWYWx1ZXMgZm9yIG5vY2FjaGVmbGFnIGFuZCBjbW9kZSAqLworI2RlZmluZSBJT01BUF9GVUxMX0NBQ0hJTkcJCTAKKyNkZWZpbmUgSU9NQVBfTk9DQUNIRV9TRVIJCTEKKyNkZWZpbmUgSU9NQVBfTk9DQUNIRV9OT05TRVIJCTIKKyNkZWZpbmUgSU9NQVBfV1JJVEVUSFJPVUdICQkzCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdm9pZCAqX19pb3JlbWFwKHVuc2lnbmVkIGxvbmcgcGh5c2FkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgaW50IGNhY2hlZmxhZyk7CitleHRlcm4gdm9pZCBfX2lvdW5tYXAodm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKTsKK2V4dGVybiBpbmxpbmUgdm9pZCAqaW9yZW1hcCh1bnNpZ25lZCBsb25nIHBoeXNhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJcmV0dXJuIF9faW9yZW1hcChwaHlzYWRkciwgc2l6ZSwgSU9NQVBfTk9DQUNIRV9TRVIpOworfQorZXh0ZXJuIGlubGluZSB2b2lkICppb3JlbWFwX25vY2FjaGUodW5zaWduZWQgbG9uZyBwaHlzYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCXJldHVybiBfX2lvcmVtYXAocGh5c2FkZHIsIHNpemUsIElPTUFQX05PQ0FDSEVfU0VSKTsKK30KK2V4dGVybiBpbmxpbmUgdm9pZCAqaW9yZW1hcF93cml0ZXRocm91Z2godW5zaWduZWQgbG9uZyBwaHlzYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCXJldHVybiBfX2lvcmVtYXAocGh5c2FkZHIsIHNpemUsIElPTUFQX1dSSVRFVEhST1VHSCk7Cit9CitleHRlcm4gaW5saW5lIHZvaWQgKmlvcmVtYXBfZnVsbGNhY2hlKHVuc2lnbmVkIGxvbmcgcGh5c2FkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlyZXR1cm4gX19pb3JlbWFwKHBoeXNhZGRyLCBzaXplLCBJT01BUF9GVUxMX0NBQ0hJTkcpOworfQorCitleHRlcm4gdm9pZCBpb3VubWFwKHZvaWQgKmFkZHIpOworCisvKiBOb3RoaW5nIHRvIGRvICovCisKK2V4dGVybiB2b2lkIGJsa2Zpbl9pbnZfY2FjaGVfYWxsKHZvaWQpOworCisjZW5kaWYKKworI2RlZmluZSBkbWFfY2FjaGVfaW52KF9zdGFydCxfc2l6ZSkgZG8geyBibGtmaW5faW52X2NhY2hlX2FsbCgpO30gd2hpbGUgKDApCisjZGVmaW5lIGRtYV9jYWNoZV93YmFjayhfc3RhcnQsX3NpemUpIGRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZG1hX2NhY2hlX3diYWNrX2ludihfc3RhcnQsX3NpemUpIGRvIHsgYmxrZmluX2ludl9jYWNoZV9hbGwoKTt9IHdoaWxlICgwKQorCisvKiBQYWdlcyB0byBwaHlzaWNhbCBhZGRyZXNzLi4uICovCisjZGVmaW5lIHBhZ2VfdG9fcGh5cyhwYWdlKSAgICAgICgocGFnZSAtIG1lbV9tYXApIDw8IFBBR0VfU0hJRlQpCisjZGVmaW5lIHBhZ2VfdG9fYnVzKHBhZ2UpICAgICAgICgocGFnZSAtIG1lbV9tYXApIDw8IFBBR0VfU0hJRlQpCisKKyNkZWZpbmUgbW1fcHRvdih2YWRkcikJCSgodm9pZCAqKSAodmFkZHIpKQorI2RlZmluZSBtbV92dG9wKHZhZGRyKQkJKCh1bnNpZ25lZCBsb25nKSAodmFkZHIpKQorI2RlZmluZSBwaHlzX3RvX3ZpcnQodmFkZHIpCSgodm9pZCAqKSAodmFkZHIpKQorI2RlZmluZSB2aXJ0X3RvX3BoeXModmFkZHIpCSgodW5zaWduZWQgbG9uZykgKHZhZGRyKSkKKworI2RlZmluZSB2aXJ0X3RvX2J1cyB2aXJ0X3RvX3BoeXMKKyNkZWZpbmUgYnVzX3RvX3ZpcnQgcGh5c190b192aXJ0CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2lvLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YjM4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9pby5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogVS1ib290IC0gaW8uaCBJTyByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX0JMQUNLRklOX0lPX0gKKyNkZWZpbmUgX0JMQUNLRklOX0lPX0gKKworI2lmZGVmIF9fS0VSTkVMX18KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisvKiBmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBDRiBzdXBwb3J0ICovCitleHRlcm4gdm9pZCBjZl9vdXRzdyh1bnNpZ25lZCBzaG9ydCAqYWRkciwgdW5zaWduZWQgc2hvcnQgKnNlY3RfYnVmLCBpbnQgd29yZHMpOworZXh0ZXJuIHZvaWQgY2ZfaW5zdyh1bnNpZ25lZCBzaG9ydCAqc2VjdF9idWYsIHVuc2lnbmVkIHNob3J0ICphZGRyLCBpbnQgd29yZHMpOworZXh0ZXJuIHVuc2lnbmVkIGNoYXIgY2ZfaW5iKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKmFkZHIpOworZXh0ZXJuIHZvaWQgY2Zfb3V0Yih1bnNpZ25lZCBjaGFyIHZhbCwgdm9sYXRpbGUgdW5zaWduZWQgY2hhciogYWRkcik7CisKKy8qCisgKiBUaGVzZSBhcmUgZm9yIElTQS9QQ0kgc2hhcmVkIG1lbW9yeSBfb25seV8gYW5kIHNob3VsZCBuZXZlciBiZSB1c2VkCisgKiBvbiBhbnkgb3RoZXIgdHlwZSBvZiBtZW1vcnksIGluY2x1ZGluZyBab3JybyBtZW1vcnkuIFRoZXkgYXJlIG1lYW50IHRvCisgKiBhY2Nlc3MgdGhlIGJ1cyBpbiB0aGUgYnVzIGJ5dGUgb3JkZXIgd2hpY2ggaXMgbGl0dGxlLWVuZGlhbiEuCisgKgorICogcmVhZFgvd3JpdGVYKCkgYXJlIHVzZWQgdG8gYWNjZXNzIG1lbW9yeSBtYXBwZWQgZGV2aWNlcy4gT24gc29tZQorICogYXJjaGl0ZWN0dXJlcyB0aGUgbWVtb3J5IG1hcHBlZCBJTyBzdHVmZiBuZWVkcyB0byBiZSBhY2Nlc3NlZAorICogZGlmZmVyZW50bHkuIE9uIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSwgd2UganVzdCByZWFkL3dyaXRlIHRoZQorICogbWVtb3J5IGxvY2F0aW9uIGRpcmVjdGx5LgorICovCisKKworI2RlZmluZSByZWFkYihhZGRyKQkJKHsgdW5zaWduZWQgY2hhciBfX3YgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopIChhZGRyKSk7YXNtKCJzc3luYzsiKTsgX192OyB9KQorI2RlZmluZSByZWFkdyhhZGRyKQkJKHsgdW5zaWduZWQgc2hvcnQgX192ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKGFkZHIpKTsgYXNtKCJzc3luYzsiKTtfX3Y7IH0pCisjZGVmaW5lIHJlYWRsKGFkZHIpCQkoeyB1bnNpZ25lZCBpbnQgX192ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopIChhZGRyKSk7YXNtKCJzc3luYzsiKTsgX192OyB9KQorCisjZGVmaW5lIHdyaXRlYihiLGFkZHIpCQl7KCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKGFkZHIpKSA9IChiKSk7IGFzbSgic3N5bmM7Iik7fQorI2RlZmluZSB3cml0ZXcoYixhZGRyKQkJeygoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoYWRkcikpID0gKGIpKTsgYXNtKCJzc3luYzsiKTt9CisjZGVmaW5lIHdyaXRlbChiLGFkZHIpCQl7KCgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoYWRkcikpID0gKGIpKTsgYXNtKCJzc3luYzsiKTt9CisKKyNkZWZpbmUgbWVtc2V0X2lvKGEsYixjKQltZW1zZXQoKHZvaWQgKikoYSksKGIpLChjKSkKKyNkZWZpbmUgbWVtY3B5X2Zyb21pbyhhLGIsYykJbWVtY3B5KChhKSwodm9pZCAqKShiKSwoYykpCisjZGVmaW5lIG1lbWNweV90b2lvKGEsYixjKQltZW1jcHkoKHZvaWQgKikoYSksKGIpLChjKSkKKworI2RlZmluZSBpbmJfcChhZGRyKQkJcmVhZGIoKGFkZHIpICsgQkY1MzNfUENJSU9fQkFTRSkKKyNkZWZpbmUgaW5iKGFkZHIpCQljZl9pbmIoKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIqKShhZGRyKSkKKworI2RlZmluZSBvdXRiKHgsYWRkcikJCWNmX291dGIoKHVuc2lnbmVkIGNoYXIpKHgpLCAodm9sYXRpbGUgdW5zaWduZWQgY2hhciopKGFkZHIpKQorI2RlZmluZSBvdXRiX3AoeCxhZGRyKQkJb3V0Yih4LCAoYWRkcikgKyBCRjUzM19QQ0lJT19CQVNFKQorCisjZGVmaW5lIGludyhhZGRyKQkJcmVhZHcoKGFkZHIpICsgQkY1MzNfUENJSU9fQkFTRSkKKyNkZWZpbmUgaW5sKGFkZHIpCQlyZWFkbCgoYWRkcikgKyBCRjUzM19QQ0lJT19CQVNFKQorCisjZGVmaW5lIG91dHcoeCxhZGRyKQkJd3JpdGV3KHgsIChhZGRyKSArIEJGNTMzX1BDSUlPX0JBU0UpCisjZGVmaW5lIG91dGwoeCxhZGRyKQkJd3JpdGVsKHgsIChhZGRyKSArIEJGNTMzX1BDSUlPX0JBU0UpCisKKyNkZWZpbmUgaW5zYihwb3J0LCBhZGRyLCBjb3VudCkJbWVtY3B5KCh2b2lkKilhZGRyLCAodm9pZCopKEJGNTMzX1BDSUlPX0JBU0UgKyBwb3J0KSwgY291bnQpCisjZGVmaW5lIGluc3cocG9ydCwgYWRkciwgY291bnQpCWNmX2luc3coKHVuc2lnbmVkIHNob3J0KilhZGRyLCAodW5zaWduZWQgc2hvcnQqKShwb3J0KSwgKGNvdW50KSkKKyNkZWZpbmUgaW5zbChwb3J0LCBhZGRyLCBjb3VudCkJbWVtY3B5KCh2b2lkKilhZGRyLCAodm9pZCopKEJGNTMzX1BDSUlPX0JBU0UgKyBwb3J0KSwgKDQqY291bnQpKQorCisjZGVmaW5lIG91dHNiKHBvcnQsYWRkcixjb3VudCkJbWVtY3B5KCh2b2lkKikoQkY1MzNfUENJSU9fQkFTRSArIHBvcnQpLCAodm9pZCopYWRkciwgY291bnQpCisjZGVmaW5lIG91dHN3KHBvcnQsYWRkcixjb3VudCkJY2Zfb3V0c3coKHVuc2lnbmVkIHNob3J0KikocG9ydCksICh1bnNpZ25lZCBzaG9ydCopYWRkciwgKGNvdW50KSkKKyNkZWZpbmUgb3V0c2wocG9ydCxhZGRyLGNvdW50KQltZW1jcHkoKHZvaWQqKShCRjUzM19QQ0lJT19CQVNFICsgcG9ydCksICh2b2lkKilhZGRyLCAoNCpjb3VudCkpCisKKyNkZWZpbmUgSU9fU1BBQ0VfTElNSVQJCTB4ZmZmZgorCisvKiBWYWx1ZXMgZm9yIG5vY2FjaGVmbGFnIGFuZCBjbW9kZSAqLworI2RlZmluZSBJT01BUF9GVUxMX0NBQ0hJTkcJMAorI2RlZmluZSBJT01BUF9OT0NBQ0hFX1NFUgkxCisjZGVmaW5lIElPTUFQX05PQ0FDSEVfTk9OU0VSCTIKKyNkZWZpbmUgSU9NQVBfV1JJVEVUSFJPVUdICTMKKworZXh0ZXJuIHZvaWQgKl9faW9yZW1hcCh1bnNpZ25lZCBsb25nIHBoeXNhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsCisJCSAgICAgICBpbnQgY2FjaGVmbGFnKTsKK2V4dGVybiB2b2lkIF9faW91bm1hcCh2b2lkICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpOworCitleHRlcm4gaW5saW5lIHZvaWQgKmlvcmVtYXAodW5zaWduZWQgbG9uZyBwaHlzYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCXJldHVybiBfX2lvcmVtYXAocGh5c2FkZHIsIHNpemUsIElPTUFQX05PQ0FDSEVfU0VSKTsKK30KK2V4dGVybiBpbmxpbmUgdm9pZCAqaW9yZW1hcF9ub2NhY2hlKHVuc2lnbmVkIGxvbmcgcGh5c2FkZHIsCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlyZXR1cm4gX19pb3JlbWFwKHBoeXNhZGRyLCBzaXplLCBJT01BUF9OT0NBQ0hFX1NFUik7Cit9CitleHRlcm4gaW5saW5lIHZvaWQgKmlvcmVtYXBfd3JpdGV0aHJvdWdoKHVuc2lnbmVkIGxvbmcgcGh5c2FkZHIsCisJCQkJCSB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJcmV0dXJuIF9faW9yZW1hcChwaHlzYWRkciwgc2l6ZSwgSU9NQVBfV1JJVEVUSFJPVUdIKTsKK30KK2V4dGVybiBpbmxpbmUgdm9pZCAqaW9yZW1hcF9mdWxsY2FjaGUodW5zaWduZWQgbG9uZyBwaHlzYWRkciwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJcmV0dXJuIF9faW9yZW1hcChwaHlzYWRkciwgc2l6ZSwgSU9NQVBfRlVMTF9DQUNISU5HKTsKK30KKworZXh0ZXJuIHZvaWQgaW91bm1hcCh2b2lkICphZGRyKTsKKworZXh0ZXJuIHZvaWQgYmxrZmluX2ludl9jYWNoZV9hbGwodm9pZCk7CisjZGVmaW5lIGRtYV9jYWNoZV9pbnYoX3N0YXJ0LF9zaXplKQkJZG8geyBibGtmaW5faW52X2NhY2hlX2FsbCgpO30gd2hpbGUgKDApCisjZGVmaW5lIGRtYV9jYWNoZV93YmFjayhfc3RhcnQsX3NpemUpCQlkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIGRtYV9jYWNoZV93YmFja19pbnYoX3N0YXJ0LF9zaXplKQlkbyB7IGJsa2Zpbl9pbnZfY2FjaGVfYWxsKCk7fSB3aGlsZSAoMCkKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL2lycS5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vaXJxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZiYzVhMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2lycS5oCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogVS1ib290IC0gaXJxLmggSW50ZXJydXB0IHJlbGF0ZWQgaGVhZGVyIGZpbGUKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBUaGlzIGZpbGUgd2FzIGJhc2VkIG9uCisgKiBsaW51eC9hcmNoLyQoQVJDSCkvcGxhdGZvcm0vJChQTEFURk9STSkvaXJxLmMKKyAqCisgKiBDaGFuZ2VkIGJ5IEh1VGFvIEFwcjE4LCAyMDAzCisgKgorICogQ29weXJpZ2h0IHdhcyBtaXNzaW5nIHdoZW4gSSBnb3QgdGhlIGNvZGUgc28gdG9vayBmcm9tIE1JUFMgYXJjaCAuLi5NYVRlZC0tLQorICogQ29weXJpZ2h0IChDKSAxOTk0IGJ5IFdhbGRvcmYgR01CSCwgd3JpdHRlbiBieSBSYWxmIEJhZWNobGUKKyAqIENvcHlyaWdodCAoQykgMTk5NSwgOTYsIDk3LCA5OCwgOTksIDIwMDAsIDIwMDEgYnkgUmFsZiBCYWVjaGxlCisgKgorICogQWRhcHRlZCBmb3IgQmxhY2tGaW4gKEFESSkgYnkgVGVkIE1hIDxtYXRlZEBzeW1wYXRpY28uY2E+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgQXJjdHVydXMgTmV0d29ya3MgSW5jLiAod3d3LmFyY3R1cnVzbmV0d29ya3MuY29tKQorICogQ29weXJpZ2h0IChjKSAyMDAyIExpbmVvLCBJbmMuIDxtYXR0d0BsaW5lby5jb20+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fSVJRX0hfCisjZGVmaW5lIF9CTEFDS0ZJTl9JUlFfSF8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9jcHUvYmY1MzNfaXJxLmg+CisKKy8qCisgKiAgIE9uIHRoZSBCbGFja2ZpbiwgdGhlIGludGVycnVwdCBzdHJ1Y3R1cmUgYWxsb3dzIHJlbW1hcHBpbmcgb2YgdGhlIGhhcmR3YXJlCisgKiAgIGxldmVscy4KKyAqIC0gSSdtIGdvaW5nIHRvIGFzc3VtZSB0aGF0IHRoZSBIL1cgbGV2ZWwgaXMgZ29pbmcgdG8gc3RheSBhdCB0aGUgZGVmYXVsdAorICogICBzZXR0aW5ncy4gSWYgc29tZW9uZSB3YW50cyB0byBnbyB0aHJvdWdoIGFuZCBhYnN0YXJ0IHRoaXMgb3V0LCBmZWVsIGZyZWUKKyAqICAgdG8gbW9kIHRoZSBpbnRlcnJ1cHQgbnVtYmVyaW5nIHNjaGVtZS4KKyAqIC0gSSdtIGFic3RyYWN0aW5nIHRoZSBpbnRlcnJ1cHRzIHNvIHRoYXQgdUNsaW51eCBkb2VzIG5vdCBrbm93IGFueXRoaW5nCisgKiAgIGFib3V0IHRoZSBIL1cgbGV2ZWxzLiBJZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIEgvVyBBTkQga2VlcCB0aGUgYWJzdHJhY3RlZAorICogICBsZXZlbHMgdGhhdCB1Q2xpbnV4IHNlZXMsIHlvdSBzaG91bGQgYmUgYWJsZSB0byBkbyBtb3N0IG9mIGl0IGhlcmUuCisgKiAtIEkndmUgbGVmdCB0aGUgImFic3RyYWN0IiBudW1iZXJpbmcgc3BhcmNlIGluIGNhc2Ugc29tZW9uZSB3YW50cyB0byBwdWxsIHRoZQorICogICBpbnRlcnJ1cHRzIGFwYXJ0IChqdXN0IHRoZSBUWC9SWCBmb3IgdGhlIHZhcmlvdXMgZGV2aWNlcykKKyAqLworCisjZGVmaW5lCU5SX0lSUVMJCVNZU19JUlFTCisvKgorICogIkdlbmVyaWMiIGludGVycnVwdCBzb3VyY2VzCisgKi8KKyNkZWZpbmUgSVJRX1NDSEVEX1RJTUVSCSg4KQkvKiBpbnRlcnJ1cHQgc291cmNlIGZvciBzY2hlZHVsaW5nIHRpbWVyICovCisKK3N0YXRpYyBfX2lubGluZV9fIGludCBpcnFfY2Fubm9uaWNhbGl6ZShpbnQgaXJxKQoreworCXJldHVybiBpcnE7Cit9CisKKy8qCisgKiBNYWNoaW5lIHNwZWNpZmljIGludGVycnVwdCBzb3VyY2VzLgorICoKKyAqIEFkZGluZyBhbiBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGZvciBhIHNvdXJjZSB3aXRoIHRoaXMgYml0CisgKiBzZXQgaW5kaWNhdGVzIGEgc3BlY2lhbCBtYWNoaW5lIHNwZWNpZmljIGludGVycnVwdCBzb3VyY2UuCisgKiBUaGUgbWFjaGluZSBzcGVjaWZpYyBmaWxlcyBkZWZpbmUgdGhlc2Ugc291cmNlcy4KKyAqCisgKiBUaGUgSVJRX01BQ0hTUEVDIGJpdCBpcyBub3cgZ29uZSAtIHRoZSBvbmx5IHRoaW5nIGl0IGRpZCB3YXMgdG8KKyAqIGludHJvZHVjZSB1bm5lY2Vzc2FyeSBvdmVyaGVhZC4KKyAqCisgKiBBbGwgaW50ZXJydXB0IGhhbmRsaW5nIGlzIGFjdHVhbGx5IG1hY2hpbmUgc3BlY2lmaWMgc28gaXQgaXMgYmV0dGVyCisgKiB0byB1c2UgZnVuY3Rpb24gcG9pbnRlcnMsIGFzIHVzZWQgYnkgdGhlIFNwYXJjIHBvcnQsIGFuZCBzZWxlY3QgdGhlCisgKiBpbnRlcnJ1cHQgaGFuZGxpbmcgZnVuY3Rpb25zIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBrZXJuZWwuIFRoaXMgd2F5CisgKiB3ZSBzYXZlIHNvbWUgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQgYXQgcnVuLXRpbWUuCisgKiAwMS8xMS85NyAtIEplcworICovCisKK2V4dGVybiB2b2lkICgqbWFjaF9lbmFibGVfaXJxKSAodW5zaWduZWQgaW50KTsKK2V4dGVybiB2b2lkICgqbWFjaF9kaXNhYmxlX2lycSkgKHVuc2lnbmVkIGludCk7CitleHRlcm4gaW50IHN5c19yZXF1ZXN0X2lycSh1bnNpZ25lZCBpbnQsCisJCQl2b2lkICgqKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCisJCQl1bnNpZ25lZCBsb25nLCBjb25zdCBjaGFyICosIHZvaWQgKik7CitleHRlcm4gdm9pZCBzeXNfZnJlZV9pcnEodW5zaWduZWQgaW50LCB2b2lkICopOworCisvKgorICogdmFyaW91cyBmbGFncyBmb3IgcmVxdWVzdF9pcnEoKSAtIHRoZSBBbWlnYSBub3cgdXNlcyB0aGUgc3RhbmRhcmQKKyAqIG1lY2hhbmlzbSBsaWtlIGFsbCBvdGhlciBhcmNoaXRlY3R1cmVzIC0gU0FfSU5URVJSVVBUIGFuZCBTQV9TSElSUQorICogYXJlIHlvdXIgZnJpZW5kcy4KKyAqLworI2RlZmluZSBJUlFfRkxHX0xPQ0sJKDB4MDAwMSkJLyogaGFuZGxlciBpcyBub3QgcmVwbGFjZWFibGUgICAqLworI2RlZmluZSBJUlFfRkxHX1JFUExBQ0UJKDB4MDAwMikJLyogcmVwbGFjZSBleGlzdGluZyBoYW5kbGVyICAgICAqLworI2RlZmluZSBJUlFfRkxHX0ZBU1QJKDB4MDAwNCkKKyNkZWZpbmUgSVJRX0ZMR19TTE9XCSgweDAwMDgpCisjZGVmaW5lIElSUV9GTEdfU1RECSgweDgwMDApCS8qIGludGVybmFsbHkgdXNlZCAgICAgICAgICAgICAgKi8KKworLyoKKyAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gY2hhaW4gdG9nZXRoZXIgdGhlIElTUnMgZm9yIGEgcGFydGljdWxhcgorICogaW50ZXJydXB0IHNvdXJjZSAoaWYgaXQgc3VwcG9ydHMgY2hhaW5pbmcpLgorICovCit0eXBlZGVmIHN0cnVjdCBpcnFfbm9kZSB7CisJdm9pZCAoKmhhbmRsZXIpIChpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl2b2lkICpkZXZfaWQ7CisJY29uc3QgY2hhciAqZGV2bmFtZTsKKwlzdHJ1Y3QgaXJxX25vZGUgKm5leHQ7Cit9IGlycV9ub2RlX3Q7CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBoYXMgb25seSA0IGVsZW1lbnRzIGZvciBzcGVlZCByZWFzb25zCisgKi8KK3R5cGVkZWYgc3RydWN0IGlycV9oYW5kbGVyIHsKKwl2b2lkICgqaGFuZGxlcikgKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXZvaWQgKmRldl9pZDsKKwljb25zdCBjaGFyICpkZXZuYW1lOworfSBpcnFfaGFuZGxlcl90OworCisvKiBjb3VudCBvZiBzcHVyaW91cyBpbnRlcnJ1cHRzICovCitleHRlcm4gdm9sYXRpbGUgdW5zaWduZWQgaW50IG51bV9zcHVyaW91czsKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBpcnFfbm9kZV90CisgKi8KK2V4dGVybiBpcnFfbm9kZV90ICpuZXdfaXJxX25vZGUodm9pZCk7CisKKy8qCisgKiBTb21lIGRyaXZlcnMgd2FudCB0aGVzZSBlbnRyeSBwb2ludHMKKyAqLworI2RlZmluZSBlbmFibGVfaXJxKHgpCShtYWNoX2VuYWJsZV9pcnEgID8gKCptYWNoX2VuYWJsZV9pcnEpKHgpICA6IDApCisjZGVmaW5lIGRpc2FibGVfaXJxKHgpCShtYWNoX2Rpc2FibGVfaXJxID8gKCptYWNoX2Rpc2FibGVfaXJxKSh4KSA6IDApCisKKyNkZWZpbmUgZW5hYmxlX2lycV9ub3N5bmMoeCkJZW5hYmxlX2lycSh4KQorI2RlZmluZSBkaXNhYmxlX2lycV9ub3N5bmMoeCkJZGlzYWJsZV9pcnEoeCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9saW5rYWdlLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9saW5rYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThmMGMzNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL2xpbmthZ2UuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogVS1ib290IC0gbGlua2FnZS5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfTElOVVhfTElOS0FHRV9ICisjZGVmaW5lIF9MSU5VWF9MSU5LQUdFX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgQ1BQX0FTTUxJTktBR0UJCWV4dGVybiAiQyIKKyNlbHNlCisjZGVmaW5lIENQUF9BU01MSU5LQUdFCisjZW5kaWYKKworI2RlZmluZSBhc21saW5rYWdlIENQUF9BU01MSU5LQUdFCisKKyNkZWZpbmUgU1lNQk9MX05BTUVfU1RSKFgpCSNYCisjZGVmaW5lIFNZTUJPTF9OQU1FKFgpCQlYCisjaWZkZWYgX19TVERDX18KKyNkZWZpbmUgU1lNQk9MX05BTUVfTEFCRUwoWCkJWCMjOgorI2Vsc2UKKyNkZWZpbmUgU1lNQk9MX05BTUVfTEFCRUwoWCkJWDoKKyNlbmRpZgorCisjZGVmaW5lIF9fQUxJR04gLmFsaWduCQk0CisjZGVmaW5lIF9fQUxJR05fU1RSCQkiLmFsaWduIDQiCisKKyNpZmRlZiBfX0FTU0VNQkxZX18KKworI2RlZmluZSBBTElHTgkJCV9fQUxJR04KKyNkZWZpbmUgQUxJR05fU1RSCQlfX0FMSUdOX1NUUgorCisjZGVmaW5lIEVOVFJZKG5hbWUpIFwKKwkuZ2xvYmwgU1lNQk9MX05BTUUobmFtZSk7IFwKKwlBTElHTjsgXAorCVNZTUJPTF9OQU1FX0xBQkVMKG5hbWUpCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9tYWNoZGVwLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9tYWNoZGVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE0M2JhMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL21hY2hkZXAuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogVS1ib290IC0gbWFjaGRlcC5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fTUFDSERFUF9ICisjZGVmaW5lIF9CTEFDS0ZJTl9NQUNIREVQX0gKKworLyogTWFjaGluZSBkZXBlbmRlbnQgaW5pdGlhbCByb3V0aW5lczoKKyAqCisgKiBCYXNlZCBvbiBpbmNsdWRlL2FzbS1tNjhrbm9tbXUvbWFjaGRlcC5oCisgKiBGb3IgYmxhY2tmaW4sIGp1c3Qgbm93IHdlIG9ubHkgaGF2ZSBiZmluLCBzbyB0aGV5J2QgcG9pbnQgdG8gdGhlIGRlZmF1bHQgYmZpbgorICoKKyAqLworCitzdHJ1Y3QgcHRfcmVnczsKK3N0cnVjdCBrYmRfcmVwZWF0Oworc3RydWN0IG1rdGltZTsKK3N0cnVjdCBod2Nsa190aW1lOworc3RydWN0IGdlbmRpc2s7CitzdHJ1Y3QgYnVmZmVyX2hlYWQ7CisKK2V4dGVybiB2b2lkICgqbWFjaF9zY2hlZF9pbml0KSAodm9pZCAoKmhhbmRsZXIpCShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKikpOworCisvKiBtYWNoaW5lIGRlcGVuZGVudCBrZXlib2FyZCBmdW5jdGlvbnMgKi8KK2V4dGVybiBpbnQgKCptYWNoX2tleWJfaW5pdCkgKHZvaWQpOworZXh0ZXJuIGludCAoKm1hY2hfa2JkcmF0ZSkgKHN0cnVjdCBrYmRfcmVwZWF0ICopOworZXh0ZXJuIHZvaWQgKCptYWNoX2tiZF9sZWRzKSAodW5zaWduZWQgaW50KTsKKworLyogbWFjaGluZSBkZXBlbmRlbnQgaXJxIGZ1bmN0aW9ucyAqLworZXh0ZXJuIHZvaWQgKCptYWNoX2luaXRfSVJRKSAodm9pZCk7CitleHRlcm4gdm9pZCAoKigqbWFjaF9kZWZhdWx0X2hhbmRsZXIpW10pIChpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CitleHRlcm4gaW50ICgqbWFjaF9yZXF1ZXN0X2lycSkgKHVuc2lnbmVkIGludCBpcnEsCisJCQkJdm9pZCAoKmhhbmRsZXIpIChpbnQsIHZvaWQgKiwKKwkJCQkJCSBzdHJ1Y3QgcHRfcmVncyAqKSwKKwkJCQl1bnNpZ25lZCBsb25nIGZsYWdzLCBjb25zdCBjaGFyICpkZXZuYW1lLAorCQkJCXZvaWQgKmRldl9pZCk7CitleHRlcm4gdm9pZCAoKm1hY2hfZnJlZV9pcnEpICh1bnNpZ25lZCBpbnQgaXJxLCB2b2lkICpkZXZfaWQpOworZXh0ZXJuIHZvaWQgKCptYWNoX2dldF9tb2RlbCkgKGNoYXIgKm1vZGVsKTsKK2V4dGVybiBpbnQgKCptYWNoX2dldF9oYXJkd2FyZV9saXN0KSAoY2hhciAqYnVmZmVyKTsKK2V4dGVybiBpbnQgKCptYWNoX2dldF9pcnFfbGlzdCkgKGNoYXIgKmJ1Zik7CitleHRlcm4gdm9pZCAoKm1hY2hfcHJvY2Vzc19pbnQpIChpbnQgaXJxLCBzdHJ1Y3QgcHRfcmVncyAqIGZwKTsKKworLyogbWFjaGluZSBkZXBlbmRlbnQgdGltZXIgZnVuY3Rpb25zICovCitleHRlcm4gdW5zaWduZWQgbG9uZyAoKm1hY2hfZ2V0dGltZW9mZnNldCkgKHZvaWQpOworZXh0ZXJuIHZvaWQgKCptYWNoX2dldHRvZCkgKGludCAqeWVhciwgaW50ICptb24sIGludCAqZGF5LCBpbnQgKmhvdXIsCisJCQkgICAgaW50ICptaW4sIGludCAqc2VjKTsKK2V4dGVybiBpbnQgKCptYWNoX2h3Y2xrKSAoaW50LCBzdHJ1Y3QgaHdjbGtfdGltZSAqKTsKK2V4dGVybiBpbnQgKCptYWNoX3NldF9jbG9ja19tbXNzKSAodW5zaWduZWQgbG9uZyk7CitleHRlcm4gdm9pZCAoKm1hY2hfcmVzZXQpICh2b2lkKTsKK2V4dGVybiB2b2lkICgqbWFjaF9oYWx0KSAodm9pZCk7CitleHRlcm4gdm9pZCAoKm1hY2hfcG93ZXJfb2ZmKSAodm9pZCk7CitleHRlcm4gdW5zaWduZWQgbG9uZyAoKm1hY2hfaGRfaW5pdCkgKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworZXh0ZXJuIHZvaWQgKCptYWNoX2hkX3NldHVwKSAoY2hhciAqLCBpbnQgKik7CitleHRlcm4gbG9uZyBtYWNoX21heF9kbWFfYWRkcmVzczsKK2V4dGVybiB2b2lkICgqbWFjaF9mbG9wcHlfc2V0dXApIChjaGFyICosIGludCAqKTsKK2V4dGVybiB2b2lkICgqbWFjaF9mbG9wcHlfZWplY3QpICh2b2lkKTsKK2V4dGVybiB2b2lkICgqbWFjaF9oZWFydGJlYXQpIChpbnQpOworZXh0ZXJuIHZvaWQgKCptYWNoX2wyX2ZsdXNoKSAoaW50KTsKK2V4dGVybiBpbnQgbWFjaF9zeXNycV9rZXk7CitleHRlcm4gaW50IG1hY2hfc3lzcnFfc2hpZnRfc3RhdGU7CitleHRlcm4gaW50IG1hY2hfc3lzcnFfc2hpZnRfbWFzazsKK2V4dGVybiBjaGFyICptYWNoX3N5c3JxX3hsYXRlOworCisjaWZkZWYgQ09ORklHX1VDTElOVVgKK2V4dGVybiB2b2lkIGNvbmZpZ19CU1AoY2hhciAqY29tbWFuZCwgaW50IGxlbik7CitleHRlcm4gdm9pZCAoKm1hY2hfdGljaykgKHZvaWQpOworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vbWVtX2luaXQuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL21lbV9pbml0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExM2Q5MAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL21lbV9pbml0LmgKQEAgLTAsMCArMSwyODcgQEAKKy8qCisgKiBVLWJvb3QgLSBtZW1faW5pdC5oIEhlYWRlciBmaWxlIGZvciBtZW1vcnkgaW5pdGlhbGl6YXRpb24KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWYgKCBDT05GSUdfTUVNX01UNDhMQzE2TTE2QTJUR183NSAgfHwgIENPTkZJR19NRU1fTVQ0OExDNjRNNEEyRkJfN0UgKQorCSNpZiAoIENPTkZJR19TQ0xLX0haID4gMTE5NDAyOTg1ICkKKwkJI2RlZmluZSBTRFJBTV90UlAJVFJQXzIKKwkJI2RlZmluZSBTRFJBTV90UlBfbnVtCTIKKwkJI2RlZmluZSBTRFJBTV90UkFTCVRSQVNfNworCQkjZGVmaW5lIFNEUkFNX3RSQVNfbnVtCTcKKwkJI2RlZmluZSBTRFJBTV90UkNECVRSQ0RfMgorCQkjZGVmaW5lIFNEUkFNX3RXUglUV1JfMgorCSNlbmRpZgorCSNpZiAoIENPTkZJR19TQ0xLX0haID4gMTA0NDc3NjEyICkgJiYgKCBDT05GSUdfU0NMS19IWiA8PSAxMTk0MDI5ODUgKQorCQkjZGVmaW5lIFNEUkFNX3RSUAlUUlBfMgorCQkjZGVmaW5lIFNEUkFNX3RSUF9udW0JMgorCQkjZGVmaW5lIFNEUkFNX3RSQVMJVFJBU182CisJCSNkZWZpbmUgU0RSQU1fdFJBU19udW0JNgorCQkjZGVmaW5lIFNEUkFNX3RSQ0QJVFJDRF8yCisJCSNkZWZpbmUgU0RSQU1fdFdSCVRXUl8yCisJI2VuZGlmCisJI2lmICggQ09ORklHX1NDTEtfSFogPiAgODk1NTIyMzkgKSAmJiAoIENPTkZJR19TQ0xLX0haIDw9IDEwNDQ3NzYxMiApCisJCSNkZWZpbmUgU0RSQU1fdFJQCVRSUF8yCisJCSNkZWZpbmUgU0RSQU1fdFJQX251bQkyCisJCSNkZWZpbmUgU0RSQU1fdFJBUwlUUkFTXzUKKwkJI2RlZmluZSBTRFJBTV90UkFTX251bQk1CisJCSNkZWZpbmUgU0RSQU1fdFJDRAlUUkNEXzIKKwkJI2RlZmluZSBTRFJBTV90V1IJVFdSXzIKKwkjZW5kaWYKKwkjaWYgKCBDT05GSUdfU0NMS19IWiA+ICA3NDYyNjg2NiApICYmICggQ09ORklHX1NDTEtfSFogPD0gIDg5NTUyMjM5ICkKKwkJI2RlZmluZSBTRFJBTV90UlAJVFJQXzIKKwkJI2RlZmluZSBTRFJBTV90UlBfbnVtCTIKKwkJI2RlZmluZSBTRFJBTV90UkFTCVRSQVNfNAorCQkjZGVmaW5lIFNEUkFNX3RSQVNfbnVtCTQKKwkJI2RlZmluZSBTRFJBTV90UkNECVRSQ0RfMgorCQkjZGVmaW5lIFNEUkFNX3RXUglUV1JfMgorCSNlbmRpZgorCSNpZiAoIENPTkZJR19TQ0xLX0haID4gIDY2NjY2NjY3ICkgJiYgKCBDT05GSUdfU0NMS19IWiA8PSA3NDYyNjg2NiApCisJCSNkZWZpbmUgU0RSQU1fdFJQCVRSUF8yCisJCSNkZWZpbmUgU0RSQU1fdFJQX251bQkyCisJCSNkZWZpbmUgU0RSQU1fdFJBUwlUUkFTXzMKKwkJI2RlZmluZSBTRFJBTV90UkFTX251bQkzCisJCSNkZWZpbmUgU0RSQU1fdFJDRAlUUkNEXzIKKwkJI2RlZmluZSBTRFJBTV90V1IJVFdSXzIKKwkjZW5kaWYKKwkjaWYgKCBDT05GSUdfU0NMS19IWiA+ICA1OTcwMTQ5MyApICYmICggQ09ORklHX1NDTEtfSFogPD0gNjY2NjY2NjcgKQorCQkjZGVmaW5lIFNEUkFNX3RSUAlUUlBfMQorCQkjZGVmaW5lIFNEUkFNX3RSUF9udW0JMQorCQkjZGVmaW5lIFNEUkFNX3RSQVMJVFJBU180CisJCSNkZWZpbmUgU0RSQU1fdFJBU19udW0JMworCQkjZGVmaW5lIFNEUkFNX3RSQ0QJVFJDRF8xCisJCSNkZWZpbmUgU0RSQU1fdFdSCVRXUl8yCisJI2VuZGlmCisJI2lmICggQ09ORklHX1NDTEtfSFogPiAgNDQ3NzYxMTkgKSAmJiAoIENPTkZJR19TQ0xLX0haIDw9ICA1OTcwMTQ5MyApCisJCSNkZWZpbmUgU0RSQU1fdFJQCVRSUF8xCisJCSNkZWZpbmUgU0RSQU1fdFJQX251bQkxCisJCSNkZWZpbmUgU0RSQU1fdFJBUwlUUkFTXzMKKwkJI2RlZmluZSBTRFJBTV90UkFTX251bQkzCisJCSNkZWZpbmUgU0RSQU1fdFJDRAlUUkNEXzEKKwkJI2RlZmluZSBTRFJBTV90V1IJVFdSXzIKKwkjZW5kaWYKKwkjaWYgKCBDT05GSUdfU0NMS19IWiA+ICAyOTg1MDc0NiApICYmICggQ09ORklHX1NDTEtfSFogPD0gIDQ0Nzc2MTE5ICkKKwkJI2RlZmluZSBTRFJBTV90UlAJVFJQXzEKKwkJI2RlZmluZSBTRFJBTV90UlBfbnVtCTEKKwkJI2RlZmluZSBTRFJBTV90UkFTCVRSQVNfMgorCQkjZGVmaW5lIFNEUkFNX3RSQVNfbnVtCTIKKwkJI2RlZmluZSBTRFJBTV90UkNECVRSQ0RfMQorCQkjZGVmaW5lIFNEUkFNX3RXUglUV1JfMgorCSNlbmRpZgorCSNpZiAoIENPTkZJR19TQ0xLX0haIDw9ICAyOTg1MDc0NiApCisJCSNkZWZpbmUgU0RSQU1fdFJQCVRSUF8xCisJCSNkZWZpbmUgU0RSQU1fdFJQX251bQkxCisJCSNkZWZpbmUgU0RSQU1fdFJBUwlUUkFTXzEKKwkJI2RlZmluZSBTRFJBTV90UkFTX251bQkxCisJCSNkZWZpbmUgU0RSQU1fdFJDRAlUUkNEXzEKKwkJI2RlZmluZSBTRFJBTV90V1IJVFdSXzIKKwkjZW5kaWYKKyNlbmRpZgorCisjaWYgKENPTkZJR19NRU1fTVQ0OExDMTZNMTZBMlRHXzc1KQorCS8qU0RSQU0gSU5GT1JNQVRJT046ICovCisJI2RlZmluZSBTRFJBTV9UcmVmCTY0ICAgICAgIC8qIFJlZnJlc2ggcGVyaW9kIGluIG1pbGxpc2Vjb25kcyAgICovCisJI2RlZmluZSBTRFJBTV9OUkEJODE5MiAgICAgLyogTnVtYmVyIG9mIHJvdyBhZGRyZXNzZXMgaW4gU0RSQU0gKi8KKwkjZGVmaW5lIFNEUkFNX0NMCUNMXzMKKyNlbmRpZgorCisjaWYgKENPTkZJR19NRU1fTVQ0OExDNjRNNEEyRkJfN0UpCisJLypTRFJBTSBJTkZPUk1BVElPTjogKi8KKwkjZGVmaW5lIFNEUkFNX1RyZWYJNjQgICAgICAgLyogUmVmcmVzaCBwZXJpb2QgaW4gbWlsbGlzZWNvbmRzICAgKi8KKwkjZGVmaW5lIFNEUkFNX05SQQk4MTkyICAgICAvKiBOdW1iZXIgb2Ygcm93IGFkZHJlc3NlcyBpbiBTRFJBTSAqLworCSNkZWZpbmUgU0RSQU1fQ0wJQ0xfMgorI2VuZGlmCisKKyNpZiAoIENPTkZJR19NRU1fU0laRSA9PSAxMjggKQorCSNkZWZpbmUgU0RSQU1fU0laRQlFQlNaXzEyOAorI2VuZGlmCisjaWYgKCBDT05GSUdfTUVNX1NJWkUgPT0gNjQgKQorCSNkZWZpbmUgU0RSQU1fU0laRQlFQlNaXzY0CisjZW5kaWYKKyNpZiAoICBDT05GSUdfTUVNX1NJWkUgPT0gMzIgKQorCSNkZWZpbmUgU0RSQU1fU0laRQlFQlNaXzMyCisjZW5kaWYKKyNpZiAoIENPTkZJR19NRU1fU0laRSA9PSAxNiApCisJI2RlZmluZSBTRFJBTV9TSVpFCUVCU1pfMTYKKyNlbmRpZgorI2lmICggQ09ORklHX01FTV9BRERfV0RUSCA9PSAxMSApCisJI2RlZmluZSBTRFJBTV9XSURUSAlFQkNBV18xMQorI2VuZGlmCisjaWYgKCBDT05GSUdfTUVNX0FERF9XRFRIID09IDEwICkKKwkjZGVmaW5lIFNEUkFNX1dJRFRICUVCQ0FXXzEwCisjZW5kaWYKKyNpZiAoIENPTkZJR19NRU1fQUREX1dEVEggPT0gOSApCisJI2RlZmluZSBTRFJBTV9XSURUSAlFQkNBV185CisjZW5kaWYKKyNpZiAoIENPTkZJR19NRU1fQUREX1dEVEggPT0gOCApCisJI2RlZmluZSBTRFJBTV9XSURUSAlFQkNBV184CisjZW5kaWYKKworI2RlZmluZSBtZW1fU0RCQ1RMCVNEUkFNX1dJRFRIIHwgU0RSQU1fU0laRSB8IEVCRQorCisvKiBFcXVhdGlvbiBmcm9tIHNlY3Rpb24gMTcgKHAxNy00Nikgb2YgQkY1MzMgSFJNICovCisjZGVmaW5lIG1lbV9TRFJSQwkoKCggQ09ORklHX1NDTEtfSFogLyAxMDAwKSAqIFNEUkFNX1RyZWYpICAvIFNEUkFNX05SQSkgLSAoU0RSQU1fdFJBU19udW0gKyBTRFJBTV90UlBfbnVtKQorCisvKiBFbmFibGUgU0NMSyBPdXQgKi8KKyNkZWZpbmUgbWVtX1NER0NUTAkoIFNDVExFIHwgU0RSQU1fQ0wgfCBTRFJBTV90UkFTIHwgU0RSQU1fdFJQIHwgU0RSQU1fdFJDRCB8IFNEUkFNX3RXUiB8IFBTUyApCisKKyNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVExfV0FUCSggKCBDT05GSUdfRkxBU0hfU1BFRURfQldBVCAqIDQgKSAgLyAoIDQwMDAwMDAwMDAgLyBDT05GSUdfU0NMS19IWiApICkgKyAxCisjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMX1JBVAkoICggQ09ORklHX0ZMQVNIX1NQRUVEX0JSQVQgKiA0ICkgIC8gKCA0MDAwMDAwMDAwIC8gQ09ORklHX1NDTEtfSFogKSApICsgMQorI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTF9IVAkoICggQ09ORklHX0ZMQVNIX1NQRUVEX0JIVCAgKiA0ICkgIC8gKCA0MDAwMDAwMDAwIC8gQ09ORklHX1NDTEtfSFogKSApCisjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMX1NUCSggKCBDT05GSUdfRkxBU0hfU1BFRURfQlNUICAqIDQgKSAgLyAoIDQwMDAwMDAwMDAgLyBDT05GSUdfU0NMS19IWiApICkgKyAxCisjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMX1RUCSggKCBDT05GSUdfRkxBU0hfU1BFRURfQlRUICAqIDQgKSAgLyAoIDQwMDAwMDAwMDAgLyBDT05GSUdfU0NMS19IWiApICkgKyAxCisKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfVFQgPiAzICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9UVAlCMFRUXzQKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9UVCA9PSAzICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9UVAlCMFRUXzMKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9UVCA9PSAyICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9UVAlCMFRUXzIKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9UVCA8IDIgKQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1RUCUIwVFRfMQorI2VuZGlmCisKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfU1QgPiAzICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9TVAlCMFNUXzQKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9TVCA9PSAzICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9TVAlCMFNUXzMKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9TVCA9PSAyICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9TVAlCMFNUXzIKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9TVCA8IDIgKQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1NUCUIwU1RfMQorI2VuZGlmCisKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfSFQgPiAyICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9IVAlCMEhUXzMKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9IVCA9PSAyICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9IVAlCMEhUXzIKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9IVCA9PSAxICkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9IVAlCMEhUXzEKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9IVCA9PSAwICAmJiBDT05GSUdfRkxBU0hfU1BFRURfQkhUID09IDApCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfSFQJQjBIVF8wCisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfSFQgPT0gMCAgJiYgQ09ORklHX0ZMQVNIX1NQRUVEX0JIVCAhPSAwKQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX0hUCUIwSFRfMQorI2VuZGlmCisKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfV0FUID4gMTQpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfV0FUCUIwV0FUXzE1CisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfV0FUID09IDE0KQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1dBVAlCMFdBVF8xNAorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1dBVCA9PSAxMykKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9XQVQJQjBXQVRfMTMKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9XQVQgPT0gMTIpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfV0FUCUIwV0FUXzEyCisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfV0FUID09IDExKQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1dBVAlCMFdBVF8xMQorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1dBVCA9PSAxMCkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9XQVQJQjBXQVRfMTAKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9XQVQgPT0gOSkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9XQVQJQjBXQVRfOQorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1dBVCA9PSA4KQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1dBVAlCMFdBVF84CisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfV0FUID09IDcpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfV0FUCUIwV0FUXzcKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9XQVQgPT0gNikKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9XQVQJQjBXQVRfNgorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1dBVCA9PSA1KQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1dBVAlCMFdBVF81CisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfV0FUID09IDQpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfV0FUCUIwV0FUXzQKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9XQVQgPT0gMykKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9XQVQJQjBXQVRfMworI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1dBVCA9PSAyKQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1dBVAlCMFdBVF8yCisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfV0FUID09IDEpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfV0FUCUIwV0FUXzEKKyNlbmRpZgorCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1JBVCA+IDE0KQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1JBVAlCMFJBVF8xNQorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1JBVCA9PSAxNCkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9SQVQJQjBSQVRfMTQKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9SQVQgPT0gMTMpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfUkFUCUIwUkFUXzEzCisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfUkFUID09IDEyKQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1JBVAlCMFJBVF8xMgorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1JBVCA9PSAxMSkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9SQVQJQjBSQVRfMTEKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9SQVQgPT0gMTApCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfUkFUCUIwUkFUXzEwCisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfUkFUID09IDkpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfUkFUCUIwUkFUXzkKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9SQVQgPT0gOCkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9SQVQJQjBSQVRfOAorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1JBVCA9PSA3KQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1JBVAlCMFJBVF83CisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfUkFUID09IDYpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfUkFUCUIwUkFUXzYKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9SQVQgPT0gNSkKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9SQVQJQjBSQVRfNQorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1JBVCA9PSA0KQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1JBVAlCMFJBVF80CisjZW5kaWYKKyNpZiAoZmxhc2hfRUJJVV9BTUJDVExfUkFUID09IDMpCisJI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDBfUkFUCUIwUkFUXzMKKyNlbmRpZgorI2lmIChmbGFzaF9FQklVX0FNQkNUTF9SQVQgPT0gMikKKwkjZGVmaW5lIGZsYXNoX0VCSVVfQU1CQ1RMMF9SQVQJQjBSQVRfMgorI2VuZGlmCisjaWYgKGZsYXNoX0VCSVVfQU1CQ1RMX1JBVCA9PSAxKQorCSNkZWZpbmUgZmxhc2hfRUJJVV9BTUJDVEwwX1JBVAlCMFJBVF8xCisjZW5kaWYKKworI2RlZmluZSBmbGFzaF9FQklVX0FNQkNUTDAJZmxhc2hfRUJJVV9BTUJDVEwwX1dBVCB8IGZsYXNoX0VCSVVfQU1CQ1RMMF9SQVQgfCBmbGFzaF9FQklVX0FNQkNUTDBfSFQgfCBmbGFzaF9FQklVX0FNQkNUTDBfU1QgfCBmbGFzaF9FQklVX0FNQkNUTDBfVFQgfCBDT05GSUdfRkxBU0hfU1BFRURfUkRZRU4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL3BhZ2UuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3BhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDZlY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vcGFnZS5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogVS1ib290IC0gIHBhZ2UuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX0JMQUNLRklOX1BBR0VfSAorI2RlZmluZSBfQkxBQ0tGSU5fUEFHRV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworLyogUEFHRV9TSElGVCBkZXRlcm1pbmVzIHRoZSBwYWdlIHNpemUgKi8KKworI2RlZmluZSBQQUdFX1NISUZUCQkJKDEyKQorI2RlZmluZSBQQUdFX1NJWkUJCQkoNDA5NikKKyNkZWZpbmUgUEFHRV9NQVNLCQkJKH4oUEFHRV9TSVpFLTEpKQorCisjaWZkZWYgX19LRVJORUxfXworCisjaW5jbHVkZSA8YXNtL3NldHVwLmg+CisKKyNpZiBQQUdFX1NISUZUIDwgMTMKKyNkZWZpbmUJCQkJCUtUSFJFQURfU0laRSAoODE5MikKKyNlbHNlCisjZGVmaW5lCQkJCQlLVEhSRUFEX1NJWkUgUEFHRV9TSVpFCisjZW5kaWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworI2RlZmluZSBnZXRfdXNlcl9wYWdlKHZhZGRyKQkJX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpCisjZGVmaW5lIGZyZWVfdXNlcl9wYWdlKHBhZ2UsIGFkZHIpCWZyZWVfcGFnZShhZGRyKQorCisjZGVmaW5lIGNsZWFyX3BhZ2UocGFnZSkJCW1lbXNldCgocGFnZSksIDAsIFBBR0VfU0laRSkKKyNkZWZpbmUgY29weV9wYWdlKHRvLGZyb20pCQltZW1jcHkoKHRvKSwgKGZyb20pLCBQQUdFX1NJWkUpCisKKyNkZWZpbmUgY2xlYXJfdXNlcl9wYWdlKHBhZ2UsIHZhZGRyKQljbGVhcl9wYWdlKHBhZ2UpCisjZGVmaW5lIGNvcHlfdXNlcl9wYWdlKHRvLCBmcm9tLCB2YWRkcikJY29weV9wYWdlKHRvLCBmcm9tKQorCisvKgorICogVGhlc2UgYXJlIHVzZWQgdG8gbWFrZSB1c2Ugb2YgQyB0eXBlLWNoZWNraW5nLi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgeworCXVuc2lnbmVkIGxvbmcgcHRlOworfSBwdGVfdDsKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBsb25nIHBtZFsxNl07Cit9IHBtZF90OwordHlwZWRlZiBzdHJ1Y3QgeworCXVuc2lnbmVkIGxvbmcgcGdkOworfSBwZ2RfdDsKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBsb25nIHBncHJvdDsKK30gcGdwcm90X3Q7CisKKyNkZWZpbmUgcHRlX3ZhbCh4KQkJCSgoeCkucHRlKQorI2RlZmluZSBwbWRfdmFsKHgpCQkJKCgmeCktPnBtZFswXSkKKyNkZWZpbmUgcGdkX3ZhbCh4KQkJCSgoeCkucGdkKQorI2RlZmluZSBwZ3Byb3RfdmFsKHgpCQkJKCh4KS5wZ3Byb3QpCisKKyNkZWZpbmUgX19wdGUoeCkJCQkoKHB0ZV90KSB7ICh4KSB9ICkKKyNkZWZpbmUgX19wbWQoeCkJCQkoKHBtZF90KSB7ICh4KSB9ICkKKyNkZWZpbmUgX19wZ2QoeCkJCQkoKHBnZF90KSB7ICh4KSB9ICkKKyNkZWZpbmUgX19wZ3Byb3QoeCkJCQkoKHBncHJvdF90KSB7ICh4KSB9ICkKKworLyogdG8gYWxpZ24gdGhlIHBvaW50ZXIgdG8gdGhlIChuZXh0KSBwYWdlIGJvdW5kYXJ5ICovCisjZGVmaW5lIFBBR0VfQUxJR04oYWRkcikJCSgoKGFkZHIpK1BBR0VfU0laRS0xKSZQQUdFX01BU0spCisKKy8qIFB1cmUgMl5uIHZlcnNpb24gb2YgZ2V0X29yZGVyICovCitleHRlcm4gX19pbmxpbmVfXyBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlpbnQgb3JkZXI7CisKKwlzaXplID0gKHNpemUgLSAxKSA+PiAoUEFHRV9TSElGVCAtIDEpOworCW9yZGVyID0gLTE7CisJZG8geworCQlzaXplID4+PSAxOworCQlvcmRlcisrOworCX0gd2hpbGUgKHNpemUpOworCXJldHVybiBvcmRlcjsKK30KKworI2VuZGlmCS8qICFfX0FTU0VNQkxZX18gKi8KKworI2luY2x1ZGUgPGFzbS9wYWdlX29mZnNldC5oPgorCisjZGVmaW5lIFBBR0VfT0ZGU0VUCQkJKFBBR0VfT0ZGU0VUX1JBVykKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworI2RlZmluZSBfX3BhKHZhZGRyKQkJCXZpcnRfdG9fcGh5cygodm9pZCAqKXZhZGRyKQorI2RlZmluZSBfX3ZhKHBhZGRyKQkJCXBoeXNfdG9fdmlydCgodW5zaWduZWQgbG9uZylwYWRkcikKKworI2RlZmluZSBNQVBfTlIoYWRkcikJCQkoKCh1bnNpZ25lZCBsb25nKShhZGRyKS1QQUdFX09GRlNFVCkgPj4gUEFHRV9TSElGVCkKKyNkZWZpbmUgdmlydF90b19wYWdlKGFkZHIpCQkobWVtX21hcCArICgoKHVuc2lnbmVkIGxvbmcpKGFkZHIpLVBBR0VfT0ZGU0VUKSA+PiBQQUdFX1NISUZUKSkKKyNkZWZpbmUgVkFMSURfUEFHRShwYWdlKQkJKChwYWdlIC0gbWVtX21hcCkgPCBtYXhfbWFwbnIpCisKKyNkZWZpbmUgQlVHKCkgZG8JeyBcCisJIFwKKwl3aGlsZSAoMSk7CS8qIGRlYWQtbG9vcCAqLyBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIFBBR0VfQlVHKHBhZ2UpIGRvCXsgXAorCUJVRygpOyBcCit9IHdoaWxlICgwKQorCisjZW5kaWYKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vcGFnZV9vZmZzZXQuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3BhZ2Vfb2Zmc2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYyNDczZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3BhZ2Vfb2Zmc2V0LmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIFUtYm9vdCAtIHBhZ2Vfb2Zmc2V0LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKgorICogQ2hhbmdlcyBtYWRlIGJ5IEFrYmFyIEh1c3NhaW4gQXByaWwgMTAsIDIwMDEKKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKy8qIFRoaXMgaGFuZGxlcyB0aGUgbWVtb3J5IG1hcC4uICovCisKKyNpZmRlZiBDT05GSUdfQkxBQ0tGSU4KKyNkZWZpbmUgUEFHRV9PRkZTRVRfUkFXCQkweDAwMDAwMDAwCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL3Bvc2l4X3R5cGVzLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9wb3NpeF90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjJiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9wb3NpeF90eXBlcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBVLWJvb3QgLSBwb3NpeF90eXBlcy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0FSQ0hfQkxBQ0tGSU5fUE9TSVhfVFlQRVNfSAorI2RlZmluZSBfX0FSQ0hfQkxBQ0tGSU5fUE9TSVhfVFlQRVNfSAorCisvKgorICogVGhpcyBmaWxlIGlzIGdlbmVyYWxseSB1c2VkIGJ5IHVzZXItbGV2ZWwgc29mdHdhcmUsIHNvIHlvdSBuZWVkIHRvCisgKiBiZSBhIGxpdHRsZSBjYXJlZnVsIGFib3V0IG5hbWVzcGFjZSBwb2xsdXRpb24gZXRjLiAgQWxzbywgd2UgY2Fubm90CisgKiBhc3N1bWUgR0NDIGlzIGJlaW5nIHVzZWQuCisgKi8KKwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9kZXZfdDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2tlcm5lbF9pbm9fdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfbW9kZV90OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9ubGlua190OwordHlwZWRlZiBsb25nIF9fa2VybmVsX29mZl90OwordHlwZWRlZiBpbnQgX19rZXJuZWxfcGlkX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2lwY19waWRfdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlkX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2dpZF90OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfc2l6ZV90OwordHlwZWRlZiBpbnQgX19rZXJuZWxfc3NpemVfdDsKK3R5cGVkZWYgaW50IF9fa2VybmVsX3B0cmRpZmZfdDsKK3R5cGVkZWYgbG9uZyBfX2tlcm5lbF90aW1lX3Q7Cit0eXBlZGVmIGxvbmcgX19rZXJuZWxfc3VzZWNvbmRzX3Q7Cit0eXBlZGVmIGxvbmcgX19rZXJuZWxfY2xvY2tfdDsKK3R5cGVkZWYgaW50IF9fa2VybmVsX2RhZGRyX3Q7Cit0eXBlZGVmIGNoYXIgKl9fa2VybmVsX2NhZGRyX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX3VpZDE2X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2dpZDE2X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWQzMl90OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfZ2lkMzJfdDsKKwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfdWlkX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF9naWRfdDsKKworI2lmZGVmIF9fR05VQ19fCit0eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgeworI2lmIGRlZmluZWQoX19LRVJORUxfXykgfHwgZGVmaW5lZChfX1VTRV9BTEwpCisJaW50IHZhbFsyXTsKKyNlbHNlCQkJCS8qICFkZWZpbmVkKF9fS0VSTkVMX18pICYmICFkZWZpbmVkKF9fVVNFX0FMTCkgKi8KKwlpbnQgX192YWxbMl07CisjZW5kaWYJCQkJLyogIWRlZmluZWQoX19LRVJORUxfXykgJiYgIWRlZmluZWQoX19VU0VfQUxMKSAqLworfSBfX2tlcm5lbF9mc2lkX3Q7CisKKyNpZiBkZWZpbmVkKF9fS0VSTkVMX18pIHx8ICFkZWZpbmVkKF9fR0xJQkNfXykgfHwgKF9fR0xJQkNfXyA8IDIpCisKKyN1bmRlZglfX0ZEX1NFVAorI2RlZmluZQlfX0ZEX1NFVChkLCBzZXQpCSgoc2V0KS0+ZmRzX2JpdHNbX19GREVMVChkKV0gfD0gX19GRE1BU0soZCkpCisKKyN1bmRlZglfX0ZEX0NMUgorI2RlZmluZQlfX0ZEX0NMUihkLCBzZXQpCSgoc2V0KS0+ZmRzX2JpdHNbX19GREVMVChkKV0gJj0gfl9fRkRNQVNLKGQpKQorCisjdW5kZWYJX19GRF9JU1NFVAorI2RlZmluZQlfX0ZEX0lTU0VUKGQsIHNldCkJKChzZXQpLT5mZHNfYml0c1tfX0ZERUxUKGQpXSAmIF9fRkRNQVNLKGQpKQorCisjdW5kZWYJX19GRF9aRVJPCisjZGVmaW5lIF9fRkRfWkVSTyhmZHNldHApIChtZW1zZXQgKGZkc2V0cCwgMCwgc2l6ZW9mKCooZmRfc2V0ICopZmRzZXRwKSkpCisKKyNlbmRpZgkvKiBkZWZpbmVkKF9fS0VSTkVMX18pIHx8ICFkZWZpbmVkKF9fR0xJQkNfXykgfHwgKF9fR0xJQkNfXyA8IDIpICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vcHJvY2Vzc29yLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9wcm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWJkNzIwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vcHJvY2Vzc29yLmgKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBVLWJvb3QgLSBwcm9jZXNzb3IuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbgorICogaW5jbHVkZS9hc20tbTY4ay9wcm9jZXNzb3IuaAorICogQ2hhbmdlcyBtYWRlIGJ5IEFrYmFyIEh1c3NhaW4gTGluZW8sIEluYywgTWF5IDIwMDEgZm9yIEJMQUNLRklOCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUgSGFtaXNoIE1hY2RvbmFsZAorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19BU01fQkxBQ0tGSU5fUFJPQ0VTU09SX0gKKyNkZWZpbmUgX19BU01fQkxBQ0tGSU5fUFJPQ0VTU09SX0gKKworLyoKKyAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgbWFjcm8gdGhhdCByZXR1cm5zIGN1cnJlbnQKKyAqIGluc3RydWN0aW9uIHBvaW50ZXIgKCJwcm9ncmFtIGNvdW50ZXIiKS4KKyAqLworI2RlZmluZSBjdXJyZW50X3RleHRfYWRkcigpCSh7IF9fbGFiZWxfXyBfbDsgX2w6ICYmX2w7fSkKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9zZWdtZW50Lmg+CisjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CisKK2V4dGVybiBpbmxpbmUgdW5zaWduZWQgbG9uZyByZHVzcCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgdXNwOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oIiUwID0gdXNwO1xuXHQiOiI9ZGEiKHVzcCkpOworCXJldHVybiB1c3A7Cit9CisKK2V4dGVybiBpbmxpbmUgdm9pZCB3cnVzcCh1bnNpZ25lZCBsb25nIHVzcCkKK3sKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygidXNwID0gJTA7XG5cdCI6OiJkYSIodXNwKSk7Cit9CisKKy8qCisgKiBVc2VyIHNwYWNlIHByb2Nlc3Mgc2l6ZTogMy43NUdCLiBUaGlzIGlzIGhhcmRjb2RlZCBpbnRvIGEgZmV3IHBsYWNlcywKKyAqIHNvIGRvbid0IGNoYW5nZSBpdCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLgorICovCisjZGVmaW5lIFRBU0tfU0laRQkJKDB4RjAwMDAwMDBVTCkKKworLyoKKyAqIEJ1cyB0eXBlcworICovCisjZGVmaW5lIEVJU0FfYnVzCQkwCisjZGVmaW5lIE1DQV9idXMJCQkwCisKKy8qICBUaGVyZSBpcyBubyBwYyByZWdpc3RlciBhdmFsaWFibGUgZm9yIEJMQUNLRklOLCBzbyB3ZSBhcmUgZ29pbmcgdG8gZ2V0CisgKiAgaXQgaW5kaXJlY3RseQorICovCisKKyNpZiAwCitpbmxpbmUgdW5zaWduZWQgbG9uZyBvYnRhaW5fcGNfaW5kaXJlY3RseSh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgcGM7CisJX19hc21fXyBfX3ZvbGF0aWxlX18oIiUwID0gcmV0cztcbiI6Ij1kIihwYykpOworCXJldHVybiAocGMgLSA0KTsJLyogY2FsbCBwY3JlbDI0IGlzIDQgYnl0ZXMgbG9uZyAgKi8KK30KKyNlbmRpZgorCisvKgorICogaWYgeW91IGNoYW5nZSB0aGlzIHN0cnVjdHVyZSwgeW91IG11c3QgY2hhbmdlIHRoZSBjb2RlIGFuZCBvZmZzZXRzCisgKiBpbiBtNjhrL21hY2hhc20uUworICovCisKK3N0cnVjdCB0aHJlYWRfc3RydWN0IHsKKwl1bnNpZ25lZCBsb25nIGtzcDsJLyoga2VybmVsIHN0YWNrIHBvaW50ZXIgKi8KKwl1bnNpZ25lZCBsb25nIHVzcDsJLyogdXNlciBzdGFjayBwb2ludGVyICovCisJdW5zaWduZWQgc2hvcnQgc2Vxc3RhdDsJLyogc2F2ZWQgc3RhdHVzIHJlZ2lzdGVyICovCisJdW5zaWduZWQgbG9uZyBlc3AwOwkvKiBwb2ludHMgdG8gU1Igb2Ygc3RhY2sgZnJhbWUgcHRfcmVncyAqLworCXVuc2lnbmVkIGxvbmcgcGM7CS8qIGluc3RydWN0aW9uIHBvaW50ZXIgKi8KK307CisKKyNkZWZpbmUgSU5JVF9NTUFQIHsgJmluaXRfbW0sIDAsIDB4NDAwMDAwMDAsIE5VTEwsIF9fcGdwcm90KF9QQUdFX1BSRVNFTlR8X1BBR0VfQUNDRVNTRUQpLCBWTV9SRUFEIHwgVk1fV1JJVEUgfCBWTV9FWEVDLCAxLCBOVUxMLCBOVUxMIH0KKworI2RlZmluZSBJTklUX1RIUkVBRCAgeyBcCisJc2l6ZW9mKGluaXRfc3RhY2spICsgKHVuc2lnbmVkIGxvbmcpIGluaXRfc3RhY2ssIDAsIFwKKwlQU19TLCAwXAorfQorCisvKgorICogRG8gbmVjZXNzYXJ5IHNldHVwIHRvIHN0YXJ0IHVwIGEgbmV3bHkgZXhlY3V0ZWQgdGhyZWFkLgorICoKKyAqIHBhc3MgdGhlIGRhdGEgc2VnbWVudCBpbnRvIHVzZXIgcHJvZ3JhbXMgaWYgaXQgZXhpc3RzLAorICogaXQgY2FuJ3QgaHVydCBhbnl0aGluZyBhcyBmYXIgYXMgSSBjYW4gdGVsbAorICovCisjZGVmaW5lIHN0YXJ0X3RocmVhZChfcmVncywgX3BjLCBfdXNwKSAgICAgICAgICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlzZXRfZnMoVVNFUl9EUyk7IC8qIHJlYWRzIGZyb20gdXNlciBzcGFjZSAqLyBcCisJKF9yZWdzKS0+cGMgPSAoX3BjKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWlmIChjdXJyZW50LT5tbSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJKF9yZWdzKS0+cjUgPSBjdXJyZW50LT5tbS0+c3RhcnRfZGF0YTsgICBcCisJKF9yZWdzKS0+c2Vxc3RhdCAmPSB+MHgwYzAwOyAgICAgICAgICAgICAgICAgICAgICBcCisJd3J1c3AoX3VzcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCS8qIEFkZGUgYnkgSHVUYW8sIE1heSAyNiwgMjAwMyAzOjM5UE0gKi9cCisJaWYgKChfcmVncyktPmlwZW5kICYgMHg4MDAwKSAvKiBjaGVjayB3aGV0aGVyIHN5c3RlbSBpbiBzdXBwZXIgbW9kZSAtIFN0Q2hlbiAqL1wKKwkJKF9yZWdzKS0+aXBlbmQgPSAweDA7XAorfSB3aGlsZSgwKQorCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uLCBhIHN0cmFuZ2UgQyB0aGluZyAqLworc3RydWN0IHRhc2tfc3RydWN0OworCisvKiBGcmVlIGFsbCByZXNvdXJjZXMgaGVsZCBieSBhIHRocmVhZC4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKmRlYWRfdGFzaykKK3sKK30KKworZXh0ZXJuIGludCBrZXJuZWxfdGhyZWFkKGludCAoKmZuKSAodm9pZCAqKSwgdm9pZCAqYXJnLAorCQkJIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworCisjZGVmaW5lIGNvcHlfc2VnbWVudHModHNrLCBtbSkJCWRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgcmVsZWFzZV9zZWdtZW50cyhtbSkJCWRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZm9yZ2V0X3NlZ21lbnRzKCkJCWRvIHsgfSB3aGlsZSAoMCkKKworLyoKKyAqIEZyZWUgY3VycmVudCB0aHJlYWQgZGF0YSBzdHJ1Y3R1cmVzIGV0Yy4uCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBleGl0X3RocmVhZCh2b2lkKQoreworfQorCisvKgorICogUmV0dXJuIHNhdmVkIFBDIG9mIGEgYmxvY2tlZCB0aHJlYWQuCisgKi8KK2V4dGVybiBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aHJlYWRfc2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQpCit7CisJZXh0ZXJuIHZvaWQgc2NoZWR1bGluZ19mdW5jdGlvbnNfc3RhcnRfaGVyZSh2b2lkKTsKKwlleHRlcm4gdm9pZCBzY2hlZHVsaW5nX2Z1bmN0aW9uc19lbmRfaGVyZSh2b2lkKTsKKwlyZXR1cm4gMDsKK30KKwordW5zaWduZWQgbG9uZyBnZXRfd2NoYW4oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKKworI2RlZmluZQlLU1RLX0VJUCh0c2spCVwKKwkoewkJCVwKKwl1bnNpZ25lZCBsb25nIGVpcCA9IDA7CSBcCisJaWYgKCh0c2spLT50aHJlYWQuZXNwMCA+IFBBR0VfU0laRSAmJiBcCisJCU1BUF9OUigodHNrKS0+dGhyZWFkLmVzcDApIDwgbWF4X21hcG5yKSBcCisJCWVpcCA9ICgoc3RydWN0IHB0X3JlZ3MgKikgKHRzayktPnRocmVhZC5lc3AwKS0+cGM7IFwKKwllaXA7IH0pCisjZGVmaW5lCUtTVEtfRVNQKHRzaykJKCh0c2spID09IGN1cnJlbnQgPyByZHVzcCgpIDogKHRzayktPnRocmVhZC51c3ApCisjZGVmaW5lIFRIUkVBRF9TSVpFCSgyKlBBR0VfU0laRSkKKworLyogQWxsb2NhdGlvbiBhbmQgZnJlZWluZyBvZiBiYXNpYyB0YXNrIHJlc291cmNlcy4gKi8KKyNkZWZpbmUgYWxsb2NfdGFza19zdHJ1Y3QoKSBcCisJKChzdHJ1Y3QgdGFza19zdHJ1Y3QgKikgX19nZXRfZnJlZV9wYWdlcyhHRlBfS0VSTkVMLDEpKQorI2RlZmluZSBmcmVlX3Rhc2tfc3RydWN0KHApCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpKHApLDEpCisjZGVmaW5lIGdldF90YXNrX3N0cnVjdCh0c2spCWF0b21pY19pbmMoJm1lbV9tYXBbTUFQX05SKHRzayldLmNvdW50KQorCisjZGVmaW5lIGluaXRfdGFzawkJKGluaXRfdGFza191bmlvbi50YXNrKQorI2RlZmluZSBpbml0X3N0YWNrCQkoaW5pdF90YXNrX3VuaW9uLnN0YWNrKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL3B0cmFjZS5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vcHRyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkNTc3NwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3B0cmFjZS5oCkBAIC0wLDAgKzEsMjY5IEBACisvKgorICogVS1ib290IC0gcHRyYWNlLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9CTEFDS0ZJTl9QVFJBQ0VfSAorI2RlZmluZSBfQkxBQ0tGSU5fUFRSQUNFX0gKKworI2RlZmluZSBORVdfUFRfUkVHUworCisvKgorICogR0NDIGRlZmluZXMgcmVnaXN0ZXIgbnVtYmVyIGxpa2UgdGhpczoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgICAgICAwIC0gNyBhcmUgZGF0YSByZWdpc3RlcnMgUjAtUjcKKyAqICAgICAgIDggLSAxNSBhcmUgYWRkcmVzcyByZWdpc3RlcnMgUDAtUDcKKyAqICAgICAgMTYgLSAzMSBkc3AgcmVnaXN0ZXJzIEkvQi9MMCAtLSBJL0IvTDMgJiBNMC0tTTMKKyAqICAgICAgMzIgLSAzMyBBIHJlZ2lzdGVycyBBMCAmIEExCisgKiAgICAgIDM0IC0gICAgc3RhdHVzIHJlZ2lzdGVyCisgKgorICogV2UgZm9sbG93cyBhYm92ZSwgZXhjZXB0OgorICogICAgICAzMi0zMyAtLS0gTG93IDMyLWJpdCBvZiBBMCYxCisgKiAgICAgIDM0LTM1IC0tLSBIaWdoIDgtYml0IG9mIEEwJjEKKyAqLworCisjaWYgZGVmaW5lZChORVdfUFRfUkVHUykKKworI2RlZmluZSBQVF9JUEVORAkwCisjZGVmaW5lIFBUX1NZU0NGRwkoUFRfSVBFTkQrNCkKKyNkZWZpbmUgUFRfU0VRU1RBVAkoUFRfU1lTQ0ZHKzQpCisjZGVmaW5lIFBUX1JFVEUJCShQVF9TRVFTVEFUKzQpCisjZGVmaW5lIFBUX1JFVE4JCShQVF9SRVRFKzQpCisjZGVmaW5lIFBUX1JFVFgJCShQVF9SRVROKzQpCisjZGVmaW5lIFBUX1JFVEkJCShQVF9SRVRYKzQpCisjZGVmaW5lIFBUX1BDCQlQVF9SRVRJCisjZGVmaW5lIFBUX1JFVFMJCShQVF9SRVRJKzQpCisjZGVmaW5lIFBUX1JFU0VSVkVECShQVF9SRVRTKzQpCisjZGVmaW5lIFBUX0FTVEFUCShQVF9SRVNFUlZFRCs0KQorI2RlZmluZSBQVF9MQjEJCShQVF9BU1RBVCs0KQorI2RlZmluZSBQVF9MQjAJCShQVF9MQjErNCkKKyNkZWZpbmUgUFRfTFQxCQkoUFRfTEIwKzQpCisjZGVmaW5lIFBUX0xUMAkJKFBUX0xUMSs0KQorI2RlZmluZSBQVF9MQzEJCShQVF9MVDArNCkKKyNkZWZpbmUgUFRfTEMwCQkoUFRfTEMxKzQpCisjZGVmaW5lIFBUX0ExVwkJKFBUX0xDMCs0KQorI2RlZmluZSBQVF9BMVgJCShQVF9BMVcrNCkKKyNkZWZpbmUgUFRfQTBXCQkoUFRfQTFYKzQpCisjZGVmaW5lIFBUX0EwWAkJKFBUX0EwVys0KQorI2RlZmluZSBQVF9CMwkJKFBUX0EwWCs0KQorI2RlZmluZSBQVF9CMgkJKFBUX0IzKzQpCisjZGVmaW5lIFBUX0IxCQkoUFRfQjIrNCkKKyNkZWZpbmUgUFRfQjAJCShQVF9CMSs0KQorI2RlZmluZSBQVF9MMwkJKFBUX0IwKzQpCisjZGVmaW5lIFBUX0wyCQkoUFRfTDMrNCkKKyNkZWZpbmUgUFRfTDEJCShQVF9MMis0KQorI2RlZmluZSBQVF9MMAkJKFBUX0wxKzQpCisjZGVmaW5lIFBUX00zCQkoUFRfTDArNCkKKyNkZWZpbmUgUFRfTTIJCShQVF9NMys0KQorI2RlZmluZSBQVF9NMQkJKFBUX00yKzQpCisjZGVmaW5lIFBUX00wCQkoUFRfTTErNCkKKyNkZWZpbmUgUFRfSTMJCShQVF9NMCs0KQorI2RlZmluZSBQVF9JMgkJKFBUX0kzKzQpCisjZGVmaW5lIFBUX0kxCQkoUFRfSTIrNCkKKyNkZWZpbmUgUFRfSTAJCShQVF9JMSs0KQorI2RlZmluZSBQVF9VU1AJCShQVF9JMCs0KQorI2RlZmluZSBQVF9GUAkJKFBUX1VTUCs0KQorI2RlZmluZSBQVF9QNQkJKFBUX0ZQKzQpCisjZGVmaW5lIFBUX1A0CQkoUFRfUDUrNCkKKyNkZWZpbmUgUFRfUDMJCShQVF9QNCs0KQorI2RlZmluZSBQVF9QMgkJKFBUX1AzKzQpCisjZGVmaW5lIFBUX1AxCQkoUFRfUDIrNCkKKyNkZWZpbmUgUFRfUDAJCShQVF9QMSs0KQorI2RlZmluZSBQVF9SNwkJKFBUX1AwKzQpCisjZGVmaW5lIFBUX1I2CQkoUFRfUjcrNCkKKyNkZWZpbmUgUFRfUjUJCShQVF9SNis0KQorI2RlZmluZSBQVF9SNAkJKFBUX1I1KzQpCisjZGVmaW5lIFBUX1IzCQkoUFRfUjQrNCkKKyNkZWZpbmUgUFRfUjIJCShQVF9SMys0KQorI2RlZmluZSBQVF9SMQkJKFBUX1IyKzQpCisjZGVmaW5lIFBUX1IwCQkoUFRfUjErNCkKKyNkZWZpbmUgUFRfT1JJR19SMAkoUFRfUjArNCkKKyNkZWZpbmUgUFRfU1IJCVBUX1NFUVNUQVQKKworI2Vsc2UKKy8qCisgKiBIZXJlIHV0aWxpemUgYmxhY2tmaW4gOiBkcHJlZ3MgPSBbcHJlZ3MgKyBpbW0xNnM0XQorICogICAgICAgICAgICAgICAgICAgICBbcHJlZ3MgKyBpbW0xNnM0XSA9IGRwcmVncworICogdG8gYWNjZXNzIGRlZmZlcmVudCBzYXZlZCByZWcgaW4gc3RhY2sKKyAqLworI2RlZmluZSBQVF9SMwkJMAorI2RlZmluZSBQVF9SNAkJNAorI2RlZmluZSBQVF9SMgkJOAorI2RlZmluZSBQVF9SMQkJMTIKKyNkZWZpbmUgUFRfUDUJCTE2CisjZGVmaW5lIFBUX1A0CQkyMAorI2RlZmluZSBQVF9QMwkJMjQKKyNkZWZpbmUgUFRfUDIJCTI4CisjZGVmaW5lIFBUX1AxCQkzMgorI2RlZmluZSBQVF9QMAkJMzYKKyNkZWZpbmUgUFRfUjcJCTQwCisjZGVmaW5lIFBUX1I2CQk0NAorI2RlZmluZSBQVF9SNQkJNDgKKyNkZWZpbmUgUFRfUEMJCTUyCisjZGVmaW5lIFBUX1NFUVNUQVQJNTYJLyogc28tY2FsbGVkIFNSIHJlZyAqLworI2RlZmluZSBQVF9TUgkJUFRfU0VRU1RBVAorI2RlZmluZSBQVF9BU1RBVAk2MAorI2RlZmluZSBQVF9SRVRTCQk2NAorI2RlZmluZSBQVF9BMXcJCTY4CisjZGVmaW5lIFBUX0EwdwkJNzIKKyNkZWZpbmUgUFRfQTF4CQk3NgorI2RlZmluZSBQVF9BMHgJCTgwCisjZGVmaW5lIFBUX09SSUdfUjAJODQKKyNkZWZpbmUgUFRfUjAJCTg4CisjZGVmaW5lIFBUX1VTUAkJOTIKKyNkZWZpbmUgUFRfRlAJCTk2CisjZGVmaW5lIFBUX1NQCQkxMDAKKworLyogQWRkZWQgYnkgSHVUYW8sIE1heTI2IDIwMDMgMzoxOFBNICovCisjZGVmaW5lIFBUX0lQRU5ECTEwMAorCisvKiBBZGQgU1lTQ0ZHIHJlZ2lzdGVyIGZvciBzaW5nbGUgc3RlcHBpbmcgc3VwcG9ydCAqLworI2RlZmluZSBQVF9TWVNDRkcJMTA0CisKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjaWYgZGVmaW5lZChORVdfUFRfUkVHUykKKy8qIHRoaXMgc3RydWN0IGRlZmluZXMgdGhlIHdheSB0aGUgcmVnaXN0ZXJzIGFyZSBzdG9yZWQgb24gdGhlCisgKiBzdGFjayBkdXJpbmcgYSBzeXN0ZW0gY2FsbC4KKyAqLworc3RydWN0IHB0X3JlZ3MgeworCWxvbmcgaXBlbmQ7CisJbG9uZyBzeXNjZmc7CisJbG9uZyBzZXFzdGF0OworCWxvbmcgcmV0ZTsKKwlsb25nIHJldG47CisJbG9uZyByZXR4OworCWxvbmcgcGM7CisJbG9uZyByZXRzOworCWxvbmcgcmVzZXJ2ZWQ7CisJbG9uZyBhc3RhdDsKKwlsb25nIGxiMTsKKwlsb25nIGxiMDsKKwlsb25nIGx0MTsKKwlsb25nIGx0MDsKKwlsb25nIGxjMTsKKwlsb25nIGxjMDsKKwlsb25nIGExdzsKKwlsb25nIGExeDsKKwlsb25nIGEwdzsKKwlsb25nIGEweDsKKwlsb25nIGIzOworCWxvbmcgYjI7CisJbG9uZyBiMTsKKwlsb25nIGIwOworCWxvbmcgbDM7CisJbG9uZyBsMjsKKwlsb25nIGwxOworCWxvbmcgbDA7CisJbG9uZyBtMzsKKwlsb25nIG0yOworCWxvbmcgbTE7CisJbG9uZyBtMDsKKwlsb25nIGkzOworCWxvbmcgaTI7CisJbG9uZyBpMTsKKwlsb25nIGkwOworCWxvbmcgdXNwOworCWxvbmcgZnA7CisJbG9uZyBwNTsKKwlsb25nIHA0OworCWxvbmcgcDM7CisJbG9uZyBwMjsKKwlsb25nIHAxOworCWxvbmcgcDA7CisJbG9uZyByNzsKKwlsb25nIHI2OworCWxvbmcgcjU7CisJbG9uZyByNDsKKwlsb25nIHIzOworCWxvbmcgcjI7CisJbG9uZyByMTsKKwlsb25nIHIwOworCWxvbmcgb3JpZ19yMDsKK307CisKKyNlbHNlCisvKiBub3cgd2UgZG9uJ3Qga25vdyB3aGF0IHJlZ3MgdGhlIHN5c3RlbSBjYWxsIHdpbGwgdXNlCSovCitzdHJ1Y3QgcHRfcmVncyB7CisJbG9uZyByMzsKKwlsb25nIHI0OworCWxvbmcgcjI7CisJbG9uZyByMTsKKwlsb25nIHA1OworCWxvbmcgcDQ7CisJbG9uZyBwMzsKKwlsb25nIHAyOworCWxvbmcgcDE7CisJbG9uZyBwMDsKKwlsb25nIHI3OworCWxvbmcgcjY7CisJbG9uZyByNTsKKwl1bnNpZ25lZCBsb25nIHBjOworCXVuc2lnbmVkIGxvbmcgc2Vxc3RhdDsKKwl1bnNpZ25lZCBsb25nIGFzdGF0OworCXVuc2lnbmVkIGxvbmcgcmV0czsKKwlsb25nIGExdzsKKwlsb25nIGEwdzsKKwlsb25nIGExeDsKKwlsb25nIGEweDsKKwlsb25nIG9yaWdfcjA7CisJbG9uZyByMDsKKwlsb25nIHVzcDsKKwlsb25nIGZwOworLyoKKyAqIEFkZGVkIGZvciBzdXBlcnZpc29yL3VzZXIgbW9kZSBzd2l0Y2guCisgKgorICogSHVUYW8gTWF5MjYgMDMgMzoyM1BNCisgKi8KKwlsb25nIGlwZW5kOworCWxvbmcgc3lzY2ZnOworfTsKKworI2VuZGlmCisKKy8qIEFyYml0cmFyaWx5IGNob29zZSB0aGUgc2FtZSBwdHJhY2UgbnVtYmVycyBhcyB1c2VkIGJ5IHRoZSBTcGFyYyBjb2RlLiAqLworI2RlZmluZSBQVFJBQ0VfR0VUUkVHUwkJMTIKKyNkZWZpbmUgUFRSQUNFX1NFVFJFR1MJCTEzCS8qIHB0cmFjZSBzaWduYWwgKi8KKworI2lmZGVmIF9fS0VSTkVMX18KKworI2lmbmRlZiBQU19TCisjZGVmaW5lIFBTX1MJCQkoMHgwYzAwKQorCisvKiBCaXQgMTE6MTAgb2YgU0VRU1RBVCBkZWZpbmVzIHVzZXIvc3VwZXJ2aXNvci9kZWJ1ZyBtb2RlCisgKiAgICAgICAgMDA6IHVzZXIKKyAqICAgICAgICAwMTogc3VwZXJ2aXNvcgorICogICAgICAgIDF4OiBkZWJ1ZworICovCisKKyNkZWZpbmUgUFNfTQkJCSgweDEwMDApCS8qIEkgYW0gbm90IHN1cmUgd2h5IHRoaXMgaXMgcmVxdWlyZWQgaGVyZSBBa2JhciAqLworI2VuZGlmCisKKyNkZWZpbmUgdXNlcl9tb2RlKHJlZ3MpCQkJKCEoKHJlZ3MpLT5zZXFzdGF0ICYgUFNfUykpCisjZGVmaW5lIGluc3RydWN0aW9uX3BvaW50ZXIocmVncykJKChyZWdzKS0+cGMpCitleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3MgKik7CisKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL3NlZ21lbnQuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3NlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTZkODE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vc2VnbWVudC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBVLWJvb3QgLSBzZWdtZW50LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9CTEFDS0ZJTl9TRUdNRU5UX0gKKyNkZWZpbmUgX0JMQUNLRklOX1NFR01FTlRfSAorCisvKiBkZWZpbmUgY29uc3RhbnRzICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbW1fc2VnbWVudF90OwkvKiBkb21haW4gcmVnaXN0ZXIgKi8KKworI2RlZmluZSBLRVJORUxfQ1MJCTB4MAorI2RlZmluZSBLRVJORUxfRFMJCTB4MAorI2RlZmluZSBfX0tFUk5FTF9DUwkJMHgwCisjZGVmaW5lIF9fS0VSTkVMX0RTCQkweDAKKworI2RlZmluZSBVU0VSX0NTCQkJMHgxCisjZGVmaW5lIFVTRVJfRFMJCQkweDEKKyNkZWZpbmUgX19VU0VSX0NTCQkweDEKKyNkZWZpbmUgX19VU0VSX0RTCQkweDEKKworI2RlZmluZSBnZXRfZHMoKQkJKEtFUk5FTF9EUykKKyNkZWZpbmUgZ2V0X2ZzKCkJCShfX1VTRVJfRFMpCisjZGVmaW5lIHNlZ21lbnRfZXEoYSxiKQkJKChhKSA9PSAoYikpCisjZGVmaW5lIHNldF9mcyh2YWwpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vc2V0dXAuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3NldHVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlOTY4OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3NldHVwLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIFUtYm9vdCAtIHNldHVwLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBUaGlzIGZpbGUgaXMgYmFzZWQgb24KKyAqIGFzbS9zZXR1cC5oIC0tIERlZmluaXRpb24gb2YgdGhlIExpbnV4L0JsYWNrZmluIHNldHVwIGluZm9ybWF0aW9uCisgKiBDb3B5cmlnaHQgTGluZW8sIEluYyAyMDAxIFRvbnkgS291CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fU0VUVVBfSAorI2RlZmluZSBfQkxBQ0tGSU5fU0VUVVBfSAorCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKy8qCisgKiBMaW51eC9CbGFja2ZpbiBBcmNoaXRlY3R1cmVzCisgKi8KKworI2RlZmluZSBNQUNIX0JGSU4JMQorCisjaWZkZWYgX19LRVJORUxfXworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYmxhY2tmaW5fbWFjaHR5cGU7CisjZW5kaWYKKworI2lmIGRlZmluZWQoQ09ORklHX0JGSU4pCisjZGVmaW5lIE1BQ0hfSVNfQkZJTiAoYmxhY2tmaW5fbWFjaHR5cGUgPT0gTUFDSF9CRklOKQorI2VuZGlmCisKKyNpZm5kZWYgTUFDSF9UWVBFCisjZGVmaW5lIE1BQ0hfVFlQRSAoYmxhY2tmaW5fbWFjaHR5cGUpCisjZW5kaWYKKworI2VuZGlmCisKKy8qCisgKiBDUFUsIEZQVSBhbmQgTU1VIHR5cGVzCisgKgorICogTm90ZTogd2UgZG9uJ3QgbmVlZCBub3c6CisgKgorICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitleHRlcm4gdW5zaWduZWQgbG9uZyBibGFja2Zpbl9jcHV0eXBlOworI2lmZGVmIENPTkZJR19WTUUKK2V4dGVybiB1bnNpZ25lZCBsb25nIHZtZV9icmR0eXBlOworI2VuZGlmCisKKy8qCisgKiAgTWlzY2VsbGFuZW91cworICovCisKKyNkZWZpbmUgTlVNX01FTUlORk8JNAorI2RlZmluZSBDTF9TSVpFCQkyNTYKKworZXh0ZXJuIGludCBibGFja2Zpbl9udW1fbWVtb3J5OwkvKiAjIG9mIG1lbW9yeSBibG9ja3MgZm91bmQgKGFuZCB1c2VkKSAqLworZXh0ZXJuIGludCBibGFja2Zpbl9yZWFsbnVtX21lbW9yeTsJLyogcmVhbCAjIG9mIG1lbW9yeSBibG9ja3MgZm91bmQgKi8KK2V4dGVybiBzdHJ1Y3QgbWVtX2luZm8gYmxhY2tmaW5fbWVtb3J5W05VTV9NRU1JTkZPXTsJLyogbWVtb3J5IGRlc2NyaXB0aW9uICovCisKK3N0cnVjdCBtZW1faW5mbyB7CisJdW5zaWduZWQgbG9uZyBhZGRyOwkvKiBwaHlzaWNhbCBhZGRyZXNzIG9mIG1lbW9yeSBjaHVuayAqLworCXVuc2lnbmVkIGxvbmcgc2l6ZTsJLyogbGVuZ3RoIG9mIG1lbW9yeSBjaHVuayAoaW4gYnl0ZXMpICovCit9OworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vc2hhcmVkX3Jlc291cmNlcy5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vc2hhcmVkX3Jlc291cmNlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZWYxODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9zaGFyZWRfcmVzb3VyY2VzLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIFUtYm9vdCAtIHNldHVwLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9TSEFSRURfUkVTT1VSQ0VTX0hfCisjZGVmaW5lIF9TSEFSRURfUkVTT1VSQ0VTX0hfCisKK3ZvaWQgc3dhcF90byhpbnQgZGV2aWNlX2lkKTsKKworI2RlZmluZSBGTEFTSCAJIDAKKyNkZWZpbmUgRVRIRVJORVQgMQorCisjZW5kaWYgLyogX1NIQVJFRF9SRVNPVVJDRVNfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL3N0cmluZy5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vc3RyaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZkODFkNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3N0cmluZy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBVLWJvb3QgLSBzdHJpbmcuaCBTdHJpbmcgZnVuY3Rpb25zCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworLyogQ2hhbmdlZCBieSBMaW5lbyBJbmMuIE1heSAyMDAxICovCisKKyNpZm5kZWYgX0JMQUNLRklOTk9NTVVfU1RSSU5HX0hfCisjZGVmaW5lIF9CTEFDS0ZJTk5PTU1VX1NUUklOR19IXworCisjaWZkZWYgX19LRVJORUxfXwkJLyogb25seSBzZXQgdGhlc2UgdXAgZm9yIGtlcm5lbCBjb2RlICovCisKKyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2luY2x1ZGUgPGFzbS9jcHUvZGVmQkY1MzMuaD4KKworI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJDUFkKKyNkZWZpbmUgX19IQVZFX0FSQ0hfU1RSTkNQWQorI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJDTVAKKyNkZWZpbmUgX19IQVZFX0FSQ0hfU1RSTkNNUAorI2RlZmluZSBfX0hBVkVfQVJDSF9NRU1DUFkKKworZXh0ZXJuIGNoYXIgKnN0cmNweShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpOworZXh0ZXJuIGNoYXIgKnN0cm5jcHkoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgbik7CitleHRlcm4gaW50IHN0cmNtcChjb25zdCBjaGFyICpjcywgY29uc3QgY2hhciAqY3QpOworZXh0ZXJuIGludCBzdHJuY21wKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCwgc2l6ZV90IGNvdW50KTsKK2V4dGVybiB2b2lkICogbWVtY3B5KHZvaWQgKiBkZXN0LGNvbnN0IHZvaWQgKnNyYyxzaXplX3QgY291bnQpOworZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICpzLCBpbnQgYywgc2l6ZV90IGNvdW50KTsKK2V4dGVybiBpbnQgbWVtY21wKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBfX2tlcm5lbF9zaXplX3QpOworCisjZWxzZQkJCQkvKiBLRVJORUwgKi8KKworLyoKKyAqIGxldCB1c2VyIGxpYnJhcmllcyBkZWFsIHdpdGggdGhlc2UsCisgKiBJTUhPIHRoZSBrZXJuZWwgaGFzIG5vIHBsYWNlIGRlZmluaW5nIHRoZXNlIGZ1bmN0aW9ucyBmb3IgdXNlciBhcHBzCisgKi8KKworI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJDUFkJMQorI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJOQ1BZCTEKKyNkZWZpbmUgX19IQVZFX0FSQ0hfU1RSQ0FUCTEKKyNkZWZpbmUgX19IQVZFX0FSQ0hfU1RSTkNBVAkxCisjZGVmaW5lIF9fSEFWRV9BUkNIX1NUUkNNUAkxCisjZGVmaW5lIF9fSEFWRV9BUkNIX1NUUk5DTVAJMQorI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJOSUNNUAkxCisjZGVmaW5lIF9fSEFWRV9BUkNIX1NUUkNIUgkxCisjZGVmaW5lIF9fSEFWRV9BUkNIX1NUUlJDSFIJMQorI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJTVFIJMQorI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJMRU4JMQorI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJOTEVOCTEKKyNkZWZpbmUgX19IQVZFX0FSQ0hfTUVNU0VUCTEKKyNkZWZpbmUgX19IQVZFX0FSQ0hfTUVNQ1BZCTEKKyNkZWZpbmUgX19IQVZFX0FSQ0hfTUVNTU9WRQkxCisjZGVmaW5lIF9fSEFWRV9BUkNIX01FTVNDQU4JMQorI2RlZmluZSBfX0hBVkVfQVJDSF9NRU1DTVAJMQorI2RlZmluZSBfX0hBVkVfQVJDSF9NRU1DSFIJMQorI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJUT0sJMQorCisjZW5kaWYJCQkJLyogS0VSTkVMICovCisKKyNlbmRpZgkJCQkvKiBfQkxBQ0tGSU5fU1RSSU5HX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3N5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNTNhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9zeXN0ZW0uaApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqIFUtYm9vdCAtIHN5c3RlbS5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fU1lTVEVNX0gKKyNkZWZpbmUgX0JMQUNLRklOX1NZU1RFTV9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4JLyogZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zICovCisjaW5jbHVkZSA8YXNtL2xpbmthZ2UuaD4KKyNpbmNsdWRlIDxhc20vYmxhY2tmaW4uaD4KKyNpbmNsdWRlIDxhc20vc2VnbWVudC5oPgorI2luY2x1ZGUgPGFzbS9lbnRyeS5oPgorCisjZGVmaW5lIHByZXBhcmVfdG9fc3dpdGNoKCkJZG8geyB9IHdoaWxlKDApCisKKy8qCisgKiBzd2l0Y2hfdG8obikgc2hvdWxkIHN3aXRjaCB0YXNrcyB0byB0YXNrIHB0ciwgZmlyc3QgY2hlY2tpbmcgdGhhdAorICogcHRyIGlzbid0IHRoZSBjdXJyZW50IHRhc2ssIGluIHdoaWNoIGNhc2UgaXQgZG9lcyBub3RoaW5nLiAgVGhpcworICogYWxzbyBjbGVhcnMgdGhlIFRTLWZsYWcgaWYgdGhlIHRhc2sgd2Ugc3dpdGNoZWQgdG8gaGFzIHVzZWQgdGhlCisgKiBtYXRoIGNvLXByb2Nlc3NvciBsYXRlc3QuCisgKgorICogMDUvMjUvMDEgLSBUb255IEtvdSAodG9ueWtvQGxpbmVvLmNhKQorICoKKyAqIEFkYXB0ZWQgZm9yIEJsYWNrRmluIChBREkpIGJ5IFRlZCBNYSwgTWV0cm93ZXJrcywgYW5kIE1vdG9yb2xhIEdTRworICogQ29weXJpZ2h0IChjKSAyMDAyIEFyY3R1cnVzIE5ldHdvcmtzIEluYy4gKHd3dy5hcmN0dXJ1c25ldHdvcmtzLmNvbSkKKyAqIENvcHlyaWdodCAoYykgMjAwMyBNZXRyb3dlcmtzICh3d3cubWV0cm93ZXJrcy5jb20pCisgKi8KKworYXNtbGlua2FnZSB2b2lkIHJlc3VtZSh2b2lkKTsKKworI2RlZmluZSBzd2l0Y2hfdG8ocHJldixuZXh0LGxhc3QpCXsJCQkJCVwKKwl2b2lkICpfbGFzdDsJCQkJCQkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJCQkJXAorICAJCQkicjAgPSAlMTtcblx0IgkJCQkJCVwKKwkJCSJyMSA9ICUyO1xuXHQiCQkJCQkJXAorCQkJImNhbGwgcmVzdW1lO1xuXHQiIAkJCQkJXAorCQkJIiUwID0gcjA7XG5cdCIJCQkJCQlcCisJCQk6ICI9ZCIgKF9sYXN0KQkJCQkJCVwKKwkJCTogImQiIChwcmV2KSwJCQkJCQlcCisJCQkiZCIgKG5leHQpCQkJCQkJXAorCQkJOiAiQ0MiLCAiUjAiLCAiUjEiLCAiUjIiLCAiUjMiLCAiUjQiLCAiUjUiLCAiUDAiLCAiUDEiKTtcCisJCQkobGFzdCkgPSBfbGFzdDsJCQkJCQlcCit9CisKKy8qIEZvcmNlIGtlcmVubCBzd2l0Y2ggdG8gdXNlciBtb2RlIC0tIFN0ZXZlbiBDaGVuICovCisjZGVmaW5lIHN3aXRjaF90b191c2VyX21vZGUoKQl7CQkJCQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCQlcCisJCQkiY2FsbCBrZXJuZWxfdG9fdXNlcl9tb2RlO1xuXHQiCQkJCVwKKwkJCTo6CQkJCQkJCVwKKwkJCTogIkNDIiwgIlIwIiwgIlIxIiwgIlIyIiwgIlIzIiwgIlI0IiwgIlI1IiwgIlAwIiwgIlAxIik7XAorfQorCisvKgorICogSW50ZXJydXB0IGNvbmZpZ3VyaW5nIG1hY3Jvcy4KKyAqLworCitleHRlcm4gaW50IGlycV9mbGFnczsKKworI2RlZmluZSBfX3N0aSgpCXsJCQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJXAorCQkicjMgPSAlMDsiCQlcCisJCSJzdGkgcjM7IgkJXAorCQk6OiJtIihpcnFfZmxhZ3MpOiJSMyIpOwlcCit9CisKKyNkZWZpbmUgX19jbGkoKQl7CQkJXAorCV9fYXNtX18gX192b2xhdGlsZV9fICgJCVwKKwkJImNsaSByMzsiCQlcCisJCTo6OiJSMyIpOwkJXAorfQorCisjZGVmaW5lIF9fc2F2ZV9mbGFncyh4KQl7CQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJXAorCQkiY2xpIHIzOyIJCVwKKwkJIiUwID0gcjM7IgkJXAorCQkic3RpIHIzOyIJCVwKKwkJOjoibSIoeCk6IlIzIik7CQlcCit9CisKKyNkZWZpbmUgX19zYXZlX2FuZF9jbGkoeCkJewlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18gKCAgICAgICAgICBcCisJCSJjbGkgcjM7IgkJXAorCQkiJTAgPSByMzsiCQlcCisJCTo6Im0iKHgpOiJSMyIpOwkJXAorfQorCisjZGVmaW5lIF9fcmVzdG9yZV9mbGFncyh4KSB7CQlcCisJX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJXAorCQkicjMgPSAlMDsiCQlcCisJCSJzdGkgcjM7IgkJXAorCQk6OiJtIih4KToiUjMiKTsJCVwKK30KKworLyogRm9yIHNwaW5sb2NrcyBldGMgKi8KKyNkZWZpbmUgbG9jYWxfaXJxX3NhdmUoeCkJX19zYXZlX2FuZF9jbGkoeCkKKyNkZWZpbmUgbG9jYWxfaXJxX3Jlc3RvcmUoeCkJX19yZXN0b3JlX2ZsYWdzKHgpCisjZGVmaW5lIGxvY2FsX2lycV9kaXNhYmxlKCkJX19jbGkoKQorI2RlZmluZSBsb2NhbF9pcnFfZW5hYmxlKCkJX19zdGkoKQorCisjZGVmaW5lIGNsaSgpCQkJX19jbGkoKQorI2RlZmluZSBzdGkoKQkJCV9fc3RpKCkKKyNkZWZpbmUgc2F2ZV9mbGFncyh4KQkJX19zYXZlX2ZsYWdzKHgpCisjZGVmaW5lIHJlc3RvcmVfZmxhZ3MoeCkJX19yZXN0b3JlX2ZsYWdzKHgpCisjZGVmaW5lIHNhdmVfYW5kX2NsaSh4KQkJX19zYXZlX2FuZF9jbGkoeCkKKworLyoKKyAqIEZvcmNlIHN0cmljdCBDUFUgb3JkZXJpbmcuCisgKi8KKyNkZWZpbmUgbm9wKCkJCQlhc20gdm9sYXRpbGUgKCJub3A7XG5cdCI6OikKKyNkZWZpbmUgbWIoKQkJCWFzbSB2b2xhdGlsZSAoIiIgICA6IDogOiJtZW1vcnkiKQorI2RlZmluZSBybWIoKQkJCWFzbSB2b2xhdGlsZSAoIiIgICA6IDogOiJtZW1vcnkiKQorI2RlZmluZSB3bWIoKQkJCWFzbSB2b2xhdGlsZSAoIiIgICA6IDogOiJtZW1vcnkiKQorI2RlZmluZSBzZXRfcm1iKHZhciwgdmFsdWUpCWRvIHsgeGNoZygmdmFyLCB2YWx1ZSk7IH0gd2hpbGUgKDApCisjZGVmaW5lIHNldF9tYih2YXIsIHZhbHVlKQlzZXRfcm1iKHZhciwgdmFsdWUpCisjZGVmaW5lIHNldF93bWIodmFyLCB2YWx1ZSkJZG8geyB2YXIgPSB2YWx1ZTsgd21iKCk7IH0gd2hpbGUgKDApCisKKyNpZmRlZiBDT05GSUdfU01QCisjZGVmaW5lIHNtcF9tYigpCQltYigpCisjZGVmaW5lIHNtcF9ybWIoKQkJcm1iKCkKKyNkZWZpbmUgc21wX3dtYigpCQl3bWIoKQorI2Vsc2UKKyNkZWZpbmUgc21wX21iKCkJCWJhcnJpZXIoKQorI2RlZmluZSBzbXBfcm1iKCkJCWJhcnJpZXIoKQorI2RlZmluZSBzbXBfd21iKCkJCWJhcnJpZXIoKQorI2VuZGlmCisKKyNkZWZpbmUgeGNoZyhwdHIseCkJCSgoX190eXBlb2ZfXygqKHB0cikpKV9feGNoZygodW5zaWduZWQgbG9uZykoeCksKHB0ciksc2l6ZW9mKCoocHRyKSkpKQorI2RlZmluZSB0YXMocHRyKQkJKHhjaGcoKHB0ciksMSkpCisKK3N0cnVjdCBfX3hjaGdfZHVtbXkgeworCXVuc2lnbmVkIGxvbmcgYVsxMDBdOworfTsKKyNkZWZpbmUgX194Zyh4KQkJCSgodm9sYXRpbGUgc3RydWN0IF9feGNoZ19kdW1teSAqKSh4KSkKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQgKnB0ciwKKwkJCQkgICBpbnQgc2l6ZSkKK3sKKwl1bnNpZ25lZCBsb25nIHRtcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKKworCXNhdmVfYW5kX2NsaShmbGFncyk7CisKKwlzd2l0Y2ggKHNpemUpIHsKKwljYXNlIDE6CisJICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiUwID0gJTI7XG5cdCIgIiUyID0gJTE7XG5cdCI6ICI9JmQiKHRtcCk6ICJkIih4KSwgIm0iKCpfX3hnKHB0cikpOiJtZW1vcnkiKTsKKwkJYnJlYWs7CisJY2FzZSAyOgorCSAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIlMCA9ICUyO1xuXHQiICIlMiA9ICUxO1xuXHQiOiAiPSZkIih0bXApOiAiZCIoeCksICJtIigqX194ZyhwdHIpKToibWVtb3J5Iik7CisJCWJyZWFrOworCWNhc2UgNDoKKwkgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiJTAgPSAlMjtcblx0IiAiJTIgPSAlMTtcblx0IjogIj0mZCIodG1wKTogImQiKHgpLCAibSIoKl9feGcocHRyKSk6Im1lbW9yeSIpOworCQlicmVhazsKKwl9CisJcmVzdG9yZV9mbGFncyhmbGFncyk7CisJcmV0dXJuIHRtcDsKK30KKworLyogRGVwZW5kIG9uIHdoZXRoZXIgQmxhY2tmaW4gaGFzIGhhcmQgcmVzZXQgZnVuY3Rpb24gKi8KKy8qIFlFUyBpdCBkb2VzLCBidXQgaXQgaXMgdHJpY2t5IHRvIGltcGxlbWVudCAtIEZJWE1FIGxhdGVyIC4uLk1hVGVkLS0tICovCisjZGVmaW5lIEhBUkRfUkVTRVRfTk9XKCkgKHt9KQorCisjZW5kaWYJLyogX0JMQUNLRklOX1NZU1RFTV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi90cmFwcy5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vdHJhcHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWU2ZWJhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vdHJhcHMuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogVS1ib290IC0gdHJhcHMuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbgorICogbGludXgvaW5jbHVkZS9hc20vdHJhcHMuaAorICogQ29weXJpZ2h0IChDKSAxOTkzICAgICAgICBIYW1pc2ggTWFjZG9uYWxkCisgKiBMaW5lbywgSW5jICAgIEp1bCAyMDAxICAgIFRvbnkgS291CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworLyoKKyAgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fVFJBUFNfSAorI2RlZmluZSBfQkxBQ0tGSU5fVFJBUFNfSAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXwordHlwZWRlZiB2b2lkICgqZV92ZWN0b3IpICh2b2lkKTsKK2V4dGVybiBlX3ZlY3RvciB2ZWN0b3JzW107CisjZW5kaWYKKworI2RlZmluZSBWRUNfU1lTCQkoMCkKKyNkZWZpbmUgVkVDX0VYQ1BUMDEJKDEpCisjZGVmaW5lIFZFQ19FWENQVDAyCSgyKQorI2RlZmluZSBWRUNfRVhDUFQwMwkoMykKKyNkZWZpbmUgVkVDX0VYQ1BUMDQJKDQpCisjZGVmaW5lIFZFQ19FWENQVDA1CSg1KQorI2RlZmluZSBWRUNfRVhDUFQwNgkoNikKKyNkZWZpbmUgVkVDX0VYQ1BUMDcJKDcpCisjZGVmaW5lIFZFQ19FWENQVDA4CSg4KQorI2RlZmluZSBWRUNfRVhDUFQwOQkoOSkKKyNkZWZpbmUgVkVDX0VYQ1BUMTAJKDEwKQorI2RlZmluZSBWRUNfRVhDUFQxMQkoMTEpCisjZGVmaW5lIFZFQ19FWENQVDEyCSgxMikKKyNkZWZpbmUgVkVDX0VYQ1BUMTMJKDEzKQorI2RlZmluZSBWRUNfRVhDUFQxNAkoMTQpCisjZGVmaW5lIFZFQ19FWENQVDE1CSgxNSkKKyNkZWZpbmUgVkVDX1NURVAJKDE2KQorI2RlZmluZSBWRUNfT1ZGTE9XCSgxNykKKyNkZWZpbmUgVkVDX1VOREVGX0kJKDMzKQorI2RlZmluZSBWRUNfSUxHQUxfSQkoMzQpCisjZGVmaW5lIFZFQ19DUExCX1ZMCSgzNSkKKyNkZWZpbmUgVkVDX01JU0FMSV9ECSgzNikKKyNkZWZpbmUgVkVDX1VOQ09WCSgzNykKKyNkZWZpbmUgVkVDX0NQTEJfTQkoMzgpCisjZGVmaW5lIFZFQ19DUExCX01ISVQJKDM5KQorI2RlZmluZSBWRUNfV0FUQ0gJKDQwKQorI2RlZmluZSBWRUNfSVNUUlVfVkwJKDQxKQorI2RlZmluZSBWRUNfTUlTQUxJX0kJKDQyKQorI2RlZmluZSBWRUNfQ1BMQl9JX1ZMCSg0MykKKyNkZWZpbmUgVkVDX0NQTEJfSV9NCSg0NCkKKyNkZWZpbmUgVkVDX0NQTEJfSV9NSElUCSg0NSkKKyNkZWZpbmUgVkVDX0lMTF9SRVMJKDQ2KQkvKiBpbmNsdWRpbmcgdW52YWxpZCBzdXBlcnZpc29yIG1vZGUgaW5zbiAqLworCisjZGVmaW5lIFZFQ09GRih2ZWMpCSgodmVjKTw8MikKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworLyogU3RhdHVzIHJlZ2lzdGVyIGJpdHMgKi8KKyNkZWZpbmUgUFNfVCAgKDB4ODAwMCkKKyNkZWZpbmUgUFNfUyAgKDB4MGMwMCkJCS8qICBTdXBlcnZpc29yIG1vZGUgPSAwYjAxICAgICAgKi8KKyNkZWZpbmUgUFNfRCAgKDB4MGMwMCkJCS8qICBEZWJ1ZyBtb2RlID0gMGIxeCAgICAgICAgICAgKi8KKyNkZWZpbmUgUFNfTSAgKDB4MTAwMCkKKyNkZWZpbmUgUFNfQyAgKDB4MDAwMSkKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL3R5cGVzLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MmVkMjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi90eXBlcy5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBVLWJvb3QgLSB0eXBlcy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfQkxBQ0tGSU5fVFlQRVNfSAorI2RlZmluZSBfQkxBQ0tGSU5fVFlQRVNfSAorCisvKgorICogVGhpcyBmaWxlIGlzIG5ldmVyIGluY2x1ZGVkIGJ5IGFwcGxpY2F0aW9uIHNvZnR3YXJlIHVubGVzcworICogZXhwbGljaXRseSByZXF1ZXN0ZWQgKGUuZy4sIHZpYSBsaW51eC90eXBlcy5oKSBpbiB3aGljaCBjYXNlIHRoZQorICogYXBwbGljYXRpb24gaXMgTGludXggc3BlY2lmaWMgc28gKHVzZXItKSBuYW1lIHNwYWNlIHBvbGx1dGlvbiBpcworICogbm90IGEgbWFqb3IgaXNzdWUuICBIb3dldmVyLCBmb3IgaW50ZXJvcGVyYWJpbGl0eSwgbGlicmFyaWVzIHN0aWxsCisgKiBuZWVkIHRvIGJlIGNhcmVmdWwgdG8gYXZvaWQgYSBuYW1lIGNsYXNoZXMuCisgKi8KKwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1bW9kZV90OworCisvKgorICogX194eCBpcyBvazogaXQgZG9lc24ndCBwb2xsdXRlIHRoZSBQT1NJWCBuYW1lc3BhY2UuIFVzZSB0aGVzZSBpbiB0aGUKKyAqIGhlYWRlciBmaWxlcyBleHBvcnRlZCB0byB1c2VyIHNwYWNlCisgKi8KKwordHlwZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19zODsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OworCit0eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQgX19zMTY7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OworCit0eXBlZGVmIF9fc2lnbmVkX18gaW50IF9fczMyOwordHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CisKKy8qIEhLMDYxNyAgIC0tIENoYW5nZXMgdG8gdW5zaWduZWQgbG9uZyB0ZW1wb3JhcmlseSAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKK3R5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKKyNlbmRpZgorCisvKgorICogVGhlc2UgYXJlbid0IGV4cG9ydGVkIG91dHNpZGUgdGhlIGtlcm5lbCB0byBhdm9pZCBuYW1lIHNwYWNlIGNsYXNoZXMKKyAqLworI2lmZGVmIF9fS0VSTkVMX18KKwordHlwZWRlZiBzaWduZWQgY2hhciBzODsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKKwordHlwZWRlZiBzaWduZWQgc2hvcnQgczE2OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7CisKK3R5cGVkZWYgc2lnbmVkIGludCBzMzI7Cit0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7CisKK3R5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7CisKKyNkZWZpbmUgQklUU19QRVJfTE9ORyAzMgorCisvKiBEbWEgYWRkcmVzc2VzIGFyZSAzMi1iaXRzIHdpZGUuICovCisKK3R5cGVkZWYgdTMyIGRtYV9hZGRyX3Q7CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL3UtYm9vdC5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vdS1ib290LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMzOTMzOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3UtYm9vdC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBVLWJvb3QgLSB1LWJvb3QuaCBTdHJ1Y3R1cmUgZGVjbGFyYXRpb25zIGZvciBib2FyZCBzcGVjaWZpYyBkYXRhCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfVV9CT09UX0hfCisjZGVmaW5lIF9VX0JPT1RfSF8JMQorCit0eXBlZGVmIHN0cnVjdCBiZF9pbmZvIHsKKwlpbnQgYmlfYmF1ZHJhdGU7CQkvKiBzZXJpYWwgY29uc29sZSBiYXVkcmF0ZSAqLworCXVuc2lnbmVkIGxvbmcgYmlfaXBfYWRkcjsJLyogSVAgQWRkcmVzcyAqLworCXVuc2lnbmVkIGNoYXIgYmlfZW5ldGFkZHJbNl07CS8qIEV0aGVybmV0IGFkcmVzcyAqLworCXVuc2lnbmVkIGxvbmcgYmlfYXJjaF9udW1iZXI7CS8qIHVuaXF1ZSBpZCBmb3IgdGhpcyBib2FyZCAqLworCXVuc2lnbmVkIGxvbmcgYmlfYm9vdF9wYXJhbXM7CS8qIHdoZXJlIHRoaXMgYm9hcmQgZXhwZWN0cyBwYXJhbXMgKi8KKwl1bnNpZ25lZCBsb25nIGJpX21lbXN0YXJ0OwkvKiBzdGFydCBvZiBEUkFNIG1lbW9yeSAqLworCXVuc2lnbmVkIGxvbmcgYmlfbWVtc2l6ZTsJLyogc2l6ZSAgb2YgRFJBTSBtZW1vcnkgaW4gYnl0ZXMgKi8KKwl1bnNpZ25lZCBsb25nIGJpX2ZsYXNoc3RhcnQ7CS8qIHN0YXJ0IG9mIEZMQVNIIG1lbW9yeSAqLworCXVuc2lnbmVkIGxvbmcgYmlfZmxhc2hzaXplOwkvKiBzaXplICBvZiBGTEFTSCBtZW1vcnkgKi8KKwl1bnNpZ25lZCBsb25nIGJpX2ZsYXNob2Zmc2V0OwkvKiByZXNlcnZlZCBhcmVhIGZvciBzdGFydHVwIG1vbml0b3IgKi8KK30gYmRfdDsKKworI2RlZmluZSBiaV9lbnZfZGF0YSBiaV9lbnYtPmRhdGEKKyNkZWZpbmUgYmlfZW52X2NyYyAgYmlfZW52LT5jcmMKKworI2VuZGlmCS8qIF9VX0JPT1RfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWJsYWNrZmluL3VhY2Nlc3MuaCBiL2luY2x1ZGUvYXNtLWJsYWNrZmluL3VhY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTc4MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vdWFjY2Vzcy5oCkBAIC0wLDAgKzEsMjA3IEBACisvKgorICogVS1ib290IC0gdWFjY2Vzcy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogVGhpcyBmaWxlIGlzIGJhc2VkIG9uCisgKiBCYXNlZCBvbjogaW5jbHVkZS9hc20tbTY4a25vbW11L3VhY2Nlc3MuaAorICogQ2hhbmdlcyBtYWRlIGJ5IExpbmVvIEluYy4gICAgTWF5IDIwMDEKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQkxBQ0tGSU5fVUFDQ0VTU19ICisjZGVmaW5lIF9fQkxBQ0tGSU5fVUFDQ0VTU19ICisKKy8qCisgKiBVc2VyIHNwYWNlIG1lbW9yeSBhY2Nlc3MgZnVuY3Rpb25zCisgKi8KKyNpbmNsdWRlIDxhc20vc2VnbWVudC5oPgorI2luY2x1ZGUgPGFzbS9lcnJuby5oPgorCisjZGVmaW5lIFZFUklGWV9SRUFECTAKKyNkZWZpbmUgVkVSSUZZX1dSSVRFCTEKKworLyogV2UgbGV0IHRoZSBNTVUgZG8gYWxsIGNoZWNraW5nICovCitzdGF0aWMgaW5saW5lIGludCBhY2Nlc3Nfb2soaW50IHR5cGUsIGNvbnN0IHZvaWQgKmFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlyZXR1cm4gKCh1bnNpZ25lZCBsb25nKSBhZGRyIDwgMHgxMGYwMDAwMCk7CS8qIG5lZWQgZmluYWwgZGVjaXNpb24gLSBUb255ICovCit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHZlcmlmeV9hcmVhKGludCB0eXBlLCBjb25zdCB2b2lkICphZGRyLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBzaXplKQoreworCXJldHVybiBhY2Nlc3Nfb2sodHlwZSwgYWRkciwgc2l6ZSkgPyAwIDogLUVGQVVMVDsKK30KKworLyoKKyAqIFRoZSBleGNlcHRpb24gdGFibGUgY29uc2lzdHMgb2YgcGFpcnMgb2YgYWRkcmVzc2VzOiB0aGUgZmlyc3QgaXMgdGhlCisgKiBhZGRyZXNzIG9mIGFuIGluc3RydWN0aW9uIHRoYXQgaXMgYWxsb3dlZCB0byBmYXVsdCwgYW5kIHRoZSBzZWNvbmQgaXMKKyAqIHRoZSBhZGRyZXNzIGF0IHdoaWNoIHRoZSBwcm9ncmFtIHNob3VsZCBjb250aW51ZS4gIE5vIHJlZ2lzdGVycyBhcmUKKyAqIG1vZGlmaWVkLCBzbyBpdCBpcyBlbnRpcmVseSB1cCB0byB0aGUgY29udGludWF0aW9uIGNvZGUgdG8gZmlndXJlIG91dAorICogd2hhdCB0byBkby4KKyAqCisgKiBBbGwgdGhlIHJvdXRpbmVzIGJlbG93IHVzZSBiaXRzIG9mIGZpeHVwIGNvZGUgdGhhdCBhcmUgb3V0IG9mIGxpbmUKKyAqIHdpdGggdGhlIG1haW4gaW5zdHJ1Y3Rpb24gcGF0aC4gIFRoaXMgbWVhbnMgd2hlbiBldmVyeXRoaW5nIGlzIHdlbGwsCisgKiB3ZSBkb24ndCBldmVuIGhhdmUgdG8ganVtcCBvdmVyIHRoZW0uICBGdXJ0aGVyLCB0aGV5IGRvIG5vdCBpbnRydWRlCisgKiBvbiBvdXIgY2FjaGUgb3IgdGxiIGVudHJpZXMuCisgKi8KKworc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSB7CisJdW5zaWduZWQgbG9uZyBpbnNuLCBmaXh1cDsKK307CisKKy8qIFJldHVybnMgMCBpZiBleGNlcHRpb24gbm90IGZvdW5kIGFuZCBmaXh1cCBvdGhlcndpc2UuICAqLworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2VhcmNoX2V4Y2VwdGlvbl90YWJsZSh1bnNpZ25lZCBsb25nKTsKKworLyoKKyAqIFRoZXNlIGFyZSB0aGUgbWFpbiBzaW5nbGUtdmFsdWUgdHJhbnNmZXIgcm91dGluZXMuICBUaGV5IGF1dG9tYXRpY2FsbHkKKyAqIHVzZSB0aGUgcmlnaHQgc2l6ZSBpZiB3ZSBqdXN0IGhhdmUgdGhlIHJpZ2h0IHBvaW50ZXIgdHlwZS4KKyAqLworCisjZGVmaW5lIHB1dF91c2VyKHgsIHB0cikJCQkJXAorKHsJCQkJCQkJXAorICAgIGludCBfX3B1X2VyciA9IDA7CQkJCQlcCisgICAgdHlwZW9mKCoocHRyKSkgX19wdV92YWwgPSAoeCk7CQkJXAorICAgIHN3aXRjaCAoc2l6ZW9mICgqKHB0cikpKSB7CQkJCVwKKyAgICBjYXNlIDE6CQkJCQkJXAorCV9fcHV0X3VzZXJfYXNtKF9fcHVfZXJyLCBfX3B1X3ZhbCwgcHRyLCBCKTsJXAorCWJyZWFrOwkJCQkJCVwKKyAgICBjYXNlIDI6CQkJCQkJXAorCV9fcHV0X3VzZXJfYXNtKF9fcHVfZXJyLCBfX3B1X3ZhbCwgcHRyLCBXKTsJXAorCWJyZWFrOwkJCQkJCVwKKyAgICBjYXNlIDQ6CQkJCQkJXAorCV9fcHV0X3VzZXJfYXNtKF9fcHVfZXJyLCBfX3B1X3ZhbCwgcHRyLCAgKTsJXAorCWJyZWFrOwkJCQkJCVwKKyAgICBkZWZhdWx0OgkJCQkJCVwKKwlfX3B1X2VyciA9IF9fcHV0X3VzZXJfYmFkKCk7CQkJXAorCWJyZWFrOwkJCQkJCVwKKyAgICB9CQkJCQkJCVwKKyAgICBfX3B1X2VycjsJCQkJCQlcCit9KQorLyoKKyAqIFtwcmVnc10gPSBkcmVncyAgPT0+IDMyYml0cworICogSFtwcmVnc10gPSBkcmVncyAgPT0+IDE2Yml0cworICogQltwcmVnc10gPSBkcmVncyAgPT0+IDggYml0cworICovCisKKyNkZWZpbmUgX19wdXRfdXNlcih4LCBwdHIpIHB1dF91c2VyKHgsIHB0cikKKworc3RhdGljIGlubGluZSBpbnQgYmFkX3VzZXJfYWNjZXNzX2xlbmd0aCh2b2lkKQoreworCXBhbmljKCJiYWRfdXNlcl9hY2Nlc3NfbGVuZ3RoIik7CisJcmV0dXJuIC0xOworfQorCisjZGVmaW5lIF9fcHV0X3VzZXJfYmFkKCkgKGJhZF91c2VyX2FjY2Vzc19sZW5ndGgoKSwgKC1FRkFVTFQpKQorCisvKgorICogVGVsbCBnY2Mgd2UgcmVhZCBmcm9tIG1lbW9yeSBpbnN0ZWFkIG9mIHdyaXRpbmc6IHRoaXMgaXMgYmVjYXVzZQorICogd2UgZG8gbm90IHdyaXRlIHRvIGFueSBtZW1vcnkgZ2NjIGtub3dzIGFib3V0LCBzbyB0aGVyZSBhcmUgbm8KKyAqIGFsaWFzaW5nIGlzc3Vlcy4KKyAqLworCisjZGVmaW5lIF9fcHRyKHgpICgodW5zaWduZWQgbG9uZyAqKSh4KSkKKworI2RlZmluZSBfX3B1dF91c2VyX2FzbShlcnIseCxwdHIsYmh3KQkJCQkJXAorCV9fYXNtX18gKCNiaHciWyUxXSA9ICUwO1xuXHQiCQkJCQlcCisJCToJLyogbm8gb3V0cHV0cyAqLwkJCQlcCisJCToiZCIgKHgpLCJhIiAoX19wdHIocHRyKSkgOiAibWVtb3J5IikKKworI2RlZmluZSBnZXRfdXNlcih4LCBwdHIpCQkJCQkJXAorKHsJCQkJCQkJCQlcCisJaW50IF9fZ3VfZXJyID0gMDsJCQkJCQlcCisJdHlwZW9mKCoocHRyKSkgX19ndV92YWwgPSAwOwkJCQkJXAorCXN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsJCQkJCVwKKwljYXNlIDE6CQkJCQkJCQlcCisJCV9fZ2V0X3VzZXJfYXNtKF9fZ3VfZXJyLCBfX2d1X3ZhbCwgcHRyLCBCLCAiPWQiLChaKSk7CVwKKwkJYnJlYWs7CQkJCQkJCVwKKwljYXNlIDI6CQkJCQkJCQlcCisJCV9fZ2V0X3VzZXJfYXNtKF9fZ3VfZXJyLCBfX2d1X3ZhbCwgcHRyLCBXLCAiPXIiLChaKSk7CVwKKwkJYnJlYWs7CQkJCQkJCVwKKwljYXNlIDQ6CQkJCQkJCQlcCisJCV9fZ2V0X3VzZXJfYXNtKF9fZ3VfZXJyLCBfX2d1X3ZhbCwgcHRyLCAgLCAiPXIiLCk7CVwKKwkJYnJlYWs7CQkJCQkJCVwKKwlkZWZhdWx0OgkJCQkJCQlcCisJCV9fZ3VfdmFsID0gMDsJCQkJCQlcCisJCV9fZ3VfZXJyID0gX19nZXRfdXNlcl9iYWQoKTsJCQkJXAorCQlicmVhazsJCQkJCQkJXAorCX0JCQkJCQkJCVwKKwkoeCkgPSBfX2d1X3ZhbDsJCQkJCQkJXAorCV9fZ3VfZXJyOwkJCQkJCQlcCit9KQorCisvKiBkcmVncyA9IFtwcmVnc10gPT0+IDMyYml0cworICogSFtwcmVnc10gICA9PT4gMTZiaXRzCisgKiBCW3ByZWdzXSAgID09PiA4IGJpdHMKKyAqLworCisjZGVmaW5lIF9fZ2V0X3VzZXIoeCwgcHRyKQlnZXRfdXNlcih4LCBwdHIpCisjZGVmaW5lIF9fZ2V0X3VzZXJfYmFkKCkJKGJhZF91c2VyX2FjY2Vzc19sZW5ndGgoKSwgKC1FRkFVTFQpKQorCisjZGVmaW5lIF9fZ2V0X3VzZXJfYXNtKGVycix4LHB0cixiaHcscmVnLG9wdGlvbikJCVwKKwlfX2FzbV9fICgiJTAgPSIgI2JodyAiWyUxXSIjb3B0aW9uIjtcblx0IgkJXAorCQk6ICI9ZCIgKHgpCQkJCQlcCisJCTogImEiIChfX3B0cihwdHIpKSkKKworI2RlZmluZSBjb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbikJKG1lbWNweSh0bywgZnJvbSwgbiksIDApCisjZGVmaW5lIGNvcHlfdG9fdXNlcih0bywgZnJvbSwgbikJKG1lbWNweSh0bywgZnJvbSwgbiksIDApCisKKyNkZWZpbmUgX19jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbikJY29weV9mcm9tX3VzZXIodG8sIGZyb20sIG4pCisjZGVmaW5lIF9fY29weV90b191c2VyKHRvLCBmcm9tLCBuKQljb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pCisKKyNkZWZpbmUgY29weV90b191c2VyX3JldCh0byxmcm9tLG4scmV0dmFsKQkoeyBpZiAoY29weV90b191c2VyKHRvLGZyb20sbikpIHJldHVybiByZXR2YWw7IH0pCisjZGVmaW5lIGNvcHlfZnJvbV91c2VyX3JldCh0byxmcm9tLG4scmV0dmFsKQkoeyBpZiAoY29weV9mcm9tX3VzZXIodG8sZnJvbSxuKSkgcmV0dXJuIHJldHZhbDsgfSkKKworLyoKKyAqIENvcHkgYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nIGZyb20gdXNlcnNwYWNlLgorICovCisKK3N0YXRpYyBpbmxpbmUgbG9uZyBzdHJuY3B5X2Zyb21fdXNlcihjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywKKwkJCQkgICAgIGxvbmcgY291bnQpCit7CisJY2hhciAqdG1wOworCXN0cm5jcHkoZHN0LCBzcmMsIGNvdW50KTsKKwlmb3IgKHRtcCA9IGRzdDsgKnRtcCAmJiBjb3VudCA+IDA7IHRtcCsrLCBjb3VudC0tKTsKKwlyZXR1cm4gKHRtcCAtIGRzdCk7CS8qIERBVklETSBzaG91bGQgd2UgY291bnQgYSBOVUwgPyAgY2hlY2sgZ2V0bmFtZSAqLworfQorCisvKgorICogUmV0dXJuIHRoZSBzaXplIG9mIGEgc3RyaW5nIChpbmNsdWRpbmcgdGhlIGVuZGluZyAwKQorICoKKyAqIFJldHVybiAwIG9uIGV4Y2VwdGlvbiwgYSB2YWx1ZSBncmVhdGVyIHRoYW4gTiBpZiB0b28gbG9uZworICovCitzdGF0aWMgaW5saW5lIGxvbmcgc3Rybmxlbl91c2VyKGNvbnN0IGNoYXIgKnNyYywgbG9uZyBuKQoreworCXJldHVybiAoc3RybGVuKHNyYykgKyAxKTsJLyogREFWSURNIG1ha2Ugc2FmZXIgKi8KK30KKworI2RlZmluZSBzdHJsZW5fdXNlcihzdHIpIHN0cm5sZW5fdXNlcihzdHIsIDMyNzY3KQorCisvKgorICogWmVybyBVc2Vyc3BhY2UKKyAqLworCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY2xlYXJfdXNlcih2b2lkICp0bywgdW5zaWduZWQgbG9uZyBuKQoreworCW1lbXNldCh0bywgMCwgbik7CisJcmV0dXJuICgwKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi92aXJ0Y29udmVydC5oIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vdmlydGNvbnZlcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjlmNWEwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYmxhY2tmaW4vdmlydGNvbnZlcnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogVS1ib290IC0gdmlydGNvbnZlcnQuaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19CTEFDS0ZJTl9WSVJUX0NPTlZFUlRfXworI2RlZmluZSBfX0JMQUNLRklOX1ZJUlRfQ09OVkVSVF9fCisKKy8qCisgKiBNYWNyb3MgdXNlZCBmb3IgY29udmVydGluZyBiZXR3ZWVuIHZpcnR1YWwgYW5kIHBoeXNpY2FsIG1hcHBpbmdzLgorICovCisKKyNpZmRlZiBfX0tFUk5FTF9fCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorCisjZGVmaW5lIG1tX3Z0b3AodmFkZHIpCQkoKHVuc2lnbmVkIGxvbmcpIHZhZGRyKQorI2RlZmluZSBtbV9wdG92KHZhZGRyKQkJKCh1bnNpZ25lZCBsb25nKSB2YWRkcikKKyNkZWZpbmUgcGh5c190b192aXJ0KHZhZGRyKQkoKHVuc2lnbmVkIGxvbmcpIHZhZGRyKQorI2RlZmluZSB2aXJ0X3RvX3BoeXModmFkZHIpCSgodW5zaWduZWQgbG9uZykgdmFkZHIpCisKKyNkZWZpbmUgdmlydF90b19idXMJCXZpcnRfdG9fcGh5cworI2RlZmluZSBidXNfdG9fdmlydAkJcGh5c190b192aXJ0CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NtZF9jb25mZGVmcy5oIGIvaW5jbHVkZS9jbWRfY29uZmRlZnMuaAppbmRleCA5ZWU0ODQ5Li5jZjM2NTgzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NtZF9jb25mZGVmcy5oCisrKyBiL2luY2x1ZGUvY21kX2NvbmZkZWZzLmgKQEAgLTExMiw3ICsxMTIsNiBAQAogCQkJQ0ZHX0NNRF9ESVNQTEFZCXwgXAogCQkJQ0ZHX0NNRF9ET0MJfCBcCiAJCQlDRkdfQ01EX0RUVAl8IFwKLQkJCUNGR19DTURfRUNITwl8IFwKIAkJCUNGR19DTURfRUVQUk9NCXwgXAogCQkJQ0ZHX0NNRF9FTEYJfCBcCiAJCQlDRkdfQ01EX0VYVDIJfCBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQVNINDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvQVNINDA1LmgKaW5kZXggOTg0MTg5My4uZDAzYzA1YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0FTSDQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9BU0g0MDUuaApAQCAtMTMyLDYgKzEzMiw5IEBACiAgKiBOQU5ELUZMQVNIIHN0dWZmCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KKworI2RlZmluZSBDRkdfTkFORF9MRUdBQ1kKKwogI2RlZmluZSBDRkdfTUFYX05BTkRfREVWSUNFCTEJLyogTWF4IG51bWJlciBvZiBOQU5EIGRldmljZXMJCSovCiAjZGVmaW5lIFNFQ1RPUlNJWkUgNTEyCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9BZGRlci5oIGIvaW5jbHVkZS9jb25maWdzL0FkZGVyLmgKaW5kZXggZjgwNzU0Ni4uMGU2YjUwZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0FkZGVyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0FkZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0IEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA1IEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KICAqIFl1bGkgQmFyY29oZW4gPHl1bGlAYXJhYmVsbGFzdy5jb20+CiAgKgogICogU3VwcG9ydCBmb3IgQW5hbG9ndWUmTWljcm8gQWRkZXIgYm9hcmRzIGZhbWlseS4KQEAgLTM1LDExICszNSwxMyBAQAogI2RlZmluZQlDT05GSUdfOHh4X0NPTlNfU01DMQkxCQkvKiBDb25zb2xlIGlzIG9uIFNNQzEJCSovCiAjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMzg0MDAKIAotI2RlZmluZQlDT05GSUdfRkVDX0VORVQJCQkJLyogRXRoZXJuZXQgaXMgb24gRkVDCQkqLwotI2lmZGVmICBDT05GSUdfRkVDX0VORVQKKyNkZWZpbmUgQ09ORklHX0VUSEVSX09OX0ZFQzEKKyNkZWZpbmUgQ09ORklHX0VUSEVSX09OX0ZFQzIKKworI2lmIGRlZmluZWQoQ09ORklHX0VUSEVSX09OX0ZFQzEpIHx8IGRlZmluZWQoQ09ORklHX0VUSEVSX09OX0ZFQzIpCiAjZGVmaW5lIENGR19ESVNDT1ZFUl9QSFkKICNkZWZpbmUgRkVDX0VORVQKLSNlbmRpZiAvKiBDT05GSUdfRkVDX0VORVQgKi8KKyNlbmRpZiAvKiBDT05GSUdfRVRIRVJfT05fRkVDIHx8IENPTkZJR19FVEhFUl9PTl9GRUMyICovCiAKICNkZWZpbmUgQ09ORklHXzh4eF9PU0NMSwkJMTAwMDAwMDAgLyogMTAgTUh6IG9zY2lsbGF0b3Igb24gRVhUQ0xLICovCiAjZGVmaW5lIENPTkZJR184eHhfQ1BVQ0xLX0RFRkFVTFQJNTAwMDAwMDAKQEAgLTQ3LDcgKzQ5LDcgQEAKICNpZmRlZiBDT05GSUdfTVBDODUyVAogI2RlZmluZSBDRkdfOHh4X0NQVUNMS19NQVgJCTUwMDAwMDAwCiAjZWxzZQotI2RlZmluZSBDRkdfOHh4X0NQVUNMS19NQVgJCTEyMDAwMDAwMAorI2RlZmluZSBDRkdfOHh4X0NQVUNMS19NQVgJCTEzMzAwMDAwMAogI2VuZGlmIC8qIENPTkZJR19NUEM4NTJUICovCiAKICNkZWZpbmUgQ09ORklHX0NPTU1BTkRTCQkoQ09ORklHX0NNRF9ERkwgIFwKQEAgLTYyLDcgKzY0LDcgQEAKIAogI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTUJCS8qIEF1dG9ib290IGFmdGVyIDUgc2Vjb25kcwkqLwogI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJImJvb3RtIGZlMDQwMDAwIgkvKiBBdXRvYm9vdCBjb21tYW5kCSovCi0jZGVmaW5lIENPTkZJR19CT09UQVJHUwkJInJvb3Q9L2Rldi9tdGRibG9jazIgcnciCisjZGVmaW5lIENPTkZJR19CT09UQVJHUwkJInJvb3Q9L2Rldi9tdGRibG9jazEgcncgbXRkcGFydHM9MU0oUk9NKXJvLC0ocm9vdCkiCiAKICNkZWZpbmUgQ09ORklHX0JaSVAyCQkvKiBJbmNsdWRlIHN1cHBvcnQgZm9yIGJ6aXAyIGNvbXByZXNzZWQgaW1hZ2VzICAqLwogI3VuZGVmCUNPTkZJR19XQVRDSERPRwkJLyogRGlzYWJsZSBwbGF0Zm9ybSBzcGVjaWZpYyB3YXRjaGRvZwkJKi8KQEAgLTc5LDcgKzgxLDcgQEAKICNkZWZpbmUgQ0ZHX01BWEFSR1MJCTE2CQkvKiBNYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLwogI2RlZmluZSBDRkdfQkFSR1NJWkUJCUNGR19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwogCi0jZGVmaW5lIENGR19MT0FEX0FERFIJCTB4MTAwMDAwCS8qIERlZmF1bHQgbG9hZCBhZGRyZXNzCQkqLworI2RlZmluZSBDRkdfTE9BRF9BRERSCQkweDQwMDAwMAkvKiBEZWZhdWx0IGxvYWQgYWRkcmVzcwkJKi8KIAogI2RlZmluZSBDRkdfSFoJCQkxMDAwCQkvKiBEZWNyZW1lbnRlciBmcmVxOiAxIG1zIHRpY2tzCSovCiAKQEAgLTg5LDI0ICs5MSwyMSBAQAogICogUkFNIGNvbmZpZ3VyYXRpb24gKG5vdGUgdGhhdCBDRkdfU0RSQU1fQkFTRSBtdXN0IGJlIHplcm8pCiAgKi8KICNkZWZpbmUgQ0ZHX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKLSNkZWZpbmUgQ0ZHX1NEUkFNX1NJWkUJCTB4MDA4MDAwMDAJLyogOCBNYnl0ZQkJCSovCisjZGVmaW5lIENGR19TRFJBTV9NQVhfU0laRQkweDAxMDAwMDAwCS8qIFVwIHRvIDE2IE1ieXRlCQkqLwogCi0jZGVmaW5lIENGR19PUjFfUFJFTElNICAJKDB4RkY4MDAwMDAgfCBPUl9DU05UX1NBTSB8IE9SX0FDU19ESVYyKQotI2RlZmluZSBDRkdfQlIxX1BSRUxJTSAgCShDRkdfU0RSQU1fQkFTRSB8IEJSX1BTXzMyIHwgQlJfTVNfVVBNQSB8IEJSX1YpCi0KLSNkZWZpbmUgQ0ZHX01BTVIJCTB4MDA4MDIxMTQKKyNkZWZpbmUgQ0ZHX01BTVIJCTB4MDAwMDIxMTQKIAogLyoKLSAqIDIwNDgJU0RSQU0gcm93cworICogNDA5NglVcCB0byA0MDk2IFNEUkFNIHJvd3MKICAqIDEwMDAJZmFjdG9yIHMgLT4gbXMKLSAqIDY0CVBUUCAocHJlLWRpdmlkZXIgZnJvbSBNUFRQUikgZnJvbSBTRFJBTSBleGFtcGxlIGNvbmZpZ3VyYXRpb24KKyAqIDMyCVBUUCAocHJlLWRpdmlkZXIgZnJvbSBNUFRQUikKICAqIDQJTnVtYmVyIG9mIHJlZnJlc2ggY3ljbGVzIHBlciBwZXJpb2QKICAqIDY0CVJlZnJlc2ggY3ljbGUgaW4gbXMgcGVyIG51bWJlciBvZiByb3dzCiAgKi8KLSNkZWZpbmUgQ0ZHX1BUQV9QRVJfQ0xLCQkoKDIwNDggKiA2NCAqIDEwMDApIC8gKDQgKiA2NCkpCisjZGVmaW5lIENGR19QVEFfUEVSX0NMSwkJKCg0MDk2ICogMzIgKiAxMDAwKSAvICg0ICogNjQpKQogCiAjZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4MDAxMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkJKi8KLSNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDAwNzAwMDAwCS8qIDEgLi4uIDcgTUIgaW4gU0RSQU0JCSovCisjZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwMDUwMDAwMAkvKiAxIC4uLiA1IE1CIGluIFNEUkFNCQkqLwogCiAjZGVmaW5lIENGR19SRVNFVF9BRERSRVNTCTB4MDk5MDAwMDAKIApAQCAtMTM5LDYgKzEzOCw4IEBACiAjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4MTAwMDAgCS8qIFdlIHVzZSBvbmUgY29tcGxldGUgc2VjdG9yCSovCiAjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UgKyBDRkdfTU9OSVRPUl9MRU4pCiAKKyNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKKwogI2RlZmluZSBDRkdfT1IwX1BSRUxJTQkJMHhGRjAwMDc3NAogI2RlZmluZSBDRkdfQlIwX1BSRUxJTQkJKENGR19GTEFTSF9CQVNFIHwgQlJfUFNfMTYgfCBCUl9NU19HUENNIHwgQlJfVikKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0JNVy5oIGIvaW5jbHVkZS9jb25maWdzL0JNVy5oCmluZGV4IDA1MDA1NGQuLjNiZDQzZDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9CTVcuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQk1XLmgKQEAgLTY5LDYgKzY5LDEwIEBACiAJCQkJQ0ZHX0NNRF9ET0MJfCBcCiAJCQkJQ0ZHX0NNRF9FTEYJfCBcCiAJCQkJMCApCisKKy8qIENGR19DTURfRE9DIHJlcXVpcmVkIGxlZ2FjeSBOQU5EIHN1cHBvcnQgKi8KKyNkZWZpbmUgQ0ZHX05BTkRfTEVHQUNZCisKICNpZiAwCiAjZGVmaW5lIENPTkZJR19DT01NQU5EUwkgICAgICAgIChDT05GSUdfQ01EX0RGTAl8IENGR19DTURfREhDUCB8IFwKIAkJCQkgQ0ZHX0NNRF9QQ0kgfCBDRkdfQ01EX0RPQyB8IENGR19DTURfREFURSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9DTVM3MDAuaCBiL2luY2x1ZGUvY29uZmlncy9DTVM3MDAuaAppbmRleCA2MDI1ODg2Li4xY2NhMjg1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ01TNzAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0NNUzcwMC5oCkBAIC04MSw2ICs4MSw4IEBACiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCiAjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CiAKKyNkZWZpbmUgQ0ZHX05BTkRfTEVHQUNZCisKICN1bmRlZglDT05GSUdfV0FUQ0hET0cJCQkvKiB3YXRjaGRvZyBkaXNhYmxlZAkJKi8KIAogI2RlZmluZSBDT05GSUdfU0RSQU1fQkFOSzAJMQkvKiBpbml0IG9uYm9hcmQgU0RSQU0gYmFuayAwCSovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTJEUC5oIGIvaW5jbHVkZS9jb25maWdzL0NQQ0kyRFAuaAppbmRleCA3NTZiYjhjLi41NmZkOWE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTJEUC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJMkRQLmgKQEAgLTE0Myw4ICsxNDMsOSBAQAogI2RlZmluZSBDRkdfUENJX1NVQlNZU19WRU5ET1JJRCAweDEyRkUgIC8qIFBDSSBWZW5kb3IgSUQ6IGVzZCBnbWJoICAgICAgKi8KICNkZWZpbmUgQ0ZHX1BDSV9TVUJTWVNfREVWSUNFSUQgMHgwNDBiICAvKiBQQ0kgRGV2aWNlIElEOiBDUENJLTJEUCAgICAgICovCiAjZGVmaW5lIENGR19QQ0lfQ0xBU1NDT0RFICAgICAgIDB4MDI4MAkvKiBQQ0kgQ2xhc3MgQ29kZTogTmV0d29yay9PdGhlciovCi0jZGVmaW5lIENGR19QQ0lfUFRNMUxBICAweDAwMDAwMDAwICAgICAgLyogcG9pbnQgdG8gc2RyYW0gICAgICAgICAgICAgICAqLwotI2RlZmluZSBDRkdfUENJX1BUTTFNUyAgMHhmYzAwMDAwMSAgICAgIC8qIDY0TUIsIGVuYWJsZSBoYXJkLXdpcmVkIHRvIDEgKi8KKworI2RlZmluZSBDRkdfUENJX1BUTTFMQSAgKGJkLT5iaV9tZW1zdGFydCkgLyogcG9pbnQgdG8gc2RyYW0gICAgICAgICAgICAgICAqLworI2RlZmluZSBDRkdfUENJX1BUTTFNUyAgKH4oYmQtPmJpX21lbXNpemUgLSAxKSB8IDEpIC8qIG1lbXNpemUsIGVuYWJsZSBoYXJkLXdpcmVkIHRvIDEgKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0xUENJIDB4MDAwMDAwMDAgICAgICAvKiBIb3N0OiB1c2UgdGhpcyBwY2kgYWRkcmVzcyAgICovCiAjZGVmaW5lIENGR19QQ0lfUFRNMkxBCTB4ZWYwMDAwMDAJLyogcG9pbnQgdG8gaW50ZXJuYWwgcmVncyArIFBCMC8xICovCiAjZGVmaW5lIENGR19QQ0lfUFRNMk1TICAweGZmMDAwMDAxICAgICAgLyogMTZNQiwgZW5hYmxlICAgICAgICAgICAgICAgICAgKi8KQEAgLTI1MCwxNCArMjUxLDE1IEBACiAKICNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMCAgLyogdXNlIGRhdGEgY2FjaGUJCSAgICAgICAqLwogI2RlZmluZSBDRkdfSU5JVF9SQU1fRU5ECTB4MjAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTQkgICAgICAgKi8KLSNkZWZpbmUgQ0ZHX0dCTF9EQVRBX1NJWkUgICAgICAxMjggIC8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLwotI2RlZmluZSBDRkdfR0JMX0RBVEFfT0ZGU0VUICAgIChDRkdfSU5JVF9SQU1fRU5EIC0gQ0ZHX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFICAgICAgIDEyOCAgLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENGR19HQkxfREFUQV9PRkZTRVQgICAgIChDRkdfSU5JVF9SQU1fRU5EIC0gQ0ZHX0dCTF9EQVRBX1NJWkUpCiAjZGVmaW5lIENGR19JTklUX1NQX09GRlNFVAlDRkdfR0JMX0RBVEFfT0ZGU0VUCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEdQSU8gZGVmaW5pdGlvbnMKICAqLwogI2RlZmluZSBDRkdfRUVQUk9NX1dQCQkoMHg4MDAwMDAwMCA+PiAxMykgICAvKiBHUElPMTMgKi8KKyNkZWZpbmUgQ0ZHX1NFTEZfUlNUCQkoMHg4MDAwMDAwMCA+PiAxNCkgICAvKiBHUElPMTQgKi8KICNkZWZpbmUgQ0ZHX1BCX0xFRAkJKDB4ODAwMDAwMDAgPj4gMTYpICAgLyogR1BJTzE2ICovCiAjZGVmaW5lIENGR19JTlRBX0ZBS0UJCSgweDgwMDAwMDAwID4+IDIzKSAgIC8qIEdQSU8yMyAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNS5oIGIvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDUuaAppbmRleCBkNDkwMjBkLi4wNDdlMmYxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJNDA1LmgKQEAgLTc5LDYgKzc5LDggQEAKIC8qIHRoaXMgbXVzdCBiZSBpbmNsdWRlZCBBRlRFUiB0aGUgZGVmaW5pdGlvbiBvZiBDT05GSUdfQ09NTUFORFMgKGlmIGFueSkgKi8KICNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KIAorI2RlZmluZSBDRkdfTkFORF9MRUdBQ1kKKwogI3VuZGVmCUNPTkZJR19XQVRDSERPRwkJCS8qIHdhdGNoZG9nIGRpc2FibGVkCQkqLwogCiAjZGVmaW5lIENPTkZJR19TRFJBTV9CQU5LMAkxCS8qIGluaXQgb25ib2FyZCBTRFJBTSBiYW5rIDAJKi8KQEAgLTE1MSw4ICsxNTMsOCBAQAogI2RlZmluZSBDRkdfUENJX1NVQlNZU19ERVZJQ0VJRCAweDA0MDUgIC8qIFBDSSBEZXZpY2UgSUQ6IENQQ0ktNDA1ICAgICAgKi8KICNkZWZpbmUgQ0ZHX1BDSV9TVUJTWVNfREVWSUNFSUQyIDB4MDQwNiAvKiBQQ0kgRGV2aWNlIElEOiBDUENJLTQwNS1BICAgICovCiAjZGVmaW5lIENGR19QQ0lfQ0xBU1NDT0RFICAgICAgIDB4MGIyMCAgLyogUENJIENsYXNzIENvZGU6IFByb2Nlc3Nvci9QUEMqLwotI2RlZmluZSBDRkdfUENJX1BUTTFMQSAgMHgwMDAwMDAwMCAgICAgIC8qIHBvaW50IHRvIHNkcmFtICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgQ0ZHX1BDSV9QVE0xTVMgIDB4ZmMwMDAwMDEgICAgICAvKiA2NE1CLCBlbmFibGUgaGFyZC13aXJlZCB0byAxICovCisjZGVmaW5lIENGR19QQ0lfUFRNMUxBICAoYmQtPmJpX21lbXN0YXJ0KSAvKiBwb2ludCB0byBzZHJhbSAgICAgICAgICAgICAgICovCisjZGVmaW5lIENGR19QQ0lfUFRNMU1TICAofihiZC0+YmlfbWVtc2l6ZSAtIDEpIHwgMSkgLyogbWVtc2l6ZSwgZW5hYmxlIGhhcmQtd2lyZWQgdG8gMSAqLwogI2RlZmluZSBDRkdfUENJX1BUTTFQQ0kgMHgwMDAwMDAwMCAgICAgIC8qIEhvc3Q6IHVzZSB0aGlzIHBjaSBhZGRyZXNzICAgKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0yTEEgIDB4ZmZjMDAwMDAgICAgICAvKiBwb2ludCB0byBmbGFzaCAgICAgICAgICAgICAgICovCiAjZGVmaW5lIENGR19QQ0lfUFRNMk1TICAweGZmYzAwMDAxICAgICAgLyogNE1CLCBlbmFibGUgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDUyLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaAppbmRleCAxM2RiZTgwLi5kNzU2ZjQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNTIuaApAQCAtMTAwLDYgKzEwMCw4IEBACiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCiAjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CiAKKyNkZWZpbmUgQ0ZHX05BTkRfTEVHQUNZCisKICN1bmRlZglDT05GSUdfV0FUQ0hET0cJCQkvKiB3YXRjaGRvZyBkaXNhYmxlZAkJKi8KIAogI2RlZmluZSBDT05GSUdfU0RSQU1fQkFOSzAJMQkvKiBpbml0IG9uYm9hcmQgU0RSQU0gYmFuayAwCSovCkBAIC0xNzgsOCArMTgwLDggQEAKICNkZWZpbmUgQ0ZHX1BDSV9TVUJTWVNfREVWSUNFSUQgMHgwNDA1ICAvKiBQQ0kgRGV2aWNlIElEOiBDUENJLTQwNSAgICAgICovCiAjZGVmaW5lIENGR19QQ0lfU1VCU1lTX0RFVklDRUlEMiAweDA0MDYgLyogUENJIERldmljZSBJRDogQ1BDSS00MDUtQSAgICAqLwogI2RlZmluZSBDRkdfUENJX0NMQVNTQ09ERSAgICAgICAweDBiMjAgIC8qIFBDSSBDbGFzcyBDb2RlOiBQcm9jZXNzb3IvUFBDKi8KLSNkZWZpbmUgQ0ZHX1BDSV9QVE0xTEEgIDB4MDAwMDAwMDAgICAgICAvKiBwb2ludCB0byBzZHJhbSAgICAgICAgICAgICAgICovCi0jZGVmaW5lIENGR19QQ0lfUFRNMU1TICAweGZjMDAwMDAxICAgICAgLyogNjRNQiwgZW5hYmxlIGhhcmQtd2lyZWQgdG8gMSAqLworI2RlZmluZSBDRkdfUENJX1BUTTFMQSAgKGJkLT5iaV9tZW1zdGFydCkgLyogcG9pbnQgdG8gc2RyYW0gICAgICAgICAgICAgICAqLworI2RlZmluZSBDRkdfUENJX1BUTTFNUyAgKH4oYmQtPmJpX21lbXNpemUgLSAxKSB8IDEpIC8qIG1lbXNpemUsIGVuYWJsZSBoYXJkLXdpcmVkIHRvIDEgKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0xUENJIDB4MDAwMDAwMDAgICAgICAvKiBIb3N0OiB1c2UgdGhpcyBwY2kgYWRkcmVzcyAgICovCiAjZGVmaW5lIENGR19QQ0lfUFRNMkxBICAweGZmYzAwMDAwICAgICAgLyogcG9pbnQgdG8gZmxhc2ggICAgICAgICAgICAgICAqLwogI2RlZmluZSBDRkdfUENJX1BUTTJNUyAgMHhmZmMwMDAwMSAgICAgIC8qIDRNQiwgZW5hYmxlICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9DUENJNDA1QUIuaCBiL2luY2x1ZGUvY29uZmlncy9DUENJNDA1QUIuaAppbmRleCBhYWFhZmE5Li44NTJkOTRhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNUFCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDVBQi5oCkBAIC04Nyw2ICs4Nyw5IEBACiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCiAjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CiAKKyNkZWZpbmUgQ0ZHX05BTkRfTEVHQUNZCisKKwogI3VuZGVmCUNPTkZJR19XQVRDSERPRwkJCS8qIHdhdGNoZG9nIGRpc2FibGVkCQkqLwogCiAjZGVmaW5lIENPTkZJR19TRFJBTV9CQU5LMAkxCS8qIGluaXQgb25ib2FyZCBTRFJBTSBiYW5rIDAJKi8KQEAgLTE2MSw4ICsxNjQsOCBAQAogI2RlZmluZSBDRkdfUENJX1NVQlNZU19ERVZJQ0VJRCAweDA0MDUJLyogUENJIERldmljZSBJRDogQ1BDSS00MDUJKi8KICNkZWZpbmUgQ0ZHX1BDSV9TVUJTWVNfREVWSUNFSUQyIDB4MDQwNiAvKiBQQ0kgRGV2aWNlIElEOiBDUENJLTQwNS1BCSovCiAjZGVmaW5lIENGR19QQ0lfQ0xBU1NDT0RFCTB4MGIyMAkvKiBQQ0kgQ2xhc3MgQ29kZTogUHJvY2Vzc29yL1BQQyovCi0jZGVmaW5lIENGR19QQ0lfUFRNMUxBCTB4MDAwMDAwMDAJLyogcG9pbnQgdG8gc2RyYW0JCSovCi0jZGVmaW5lIENGR19QQ0lfUFRNMU1TCTB4ZmMwMDAwMDEJLyogNjRNQiwgZW5hYmxlIGhhcmQtd2lyZWQgdG8gMSAqLworI2RlZmluZSBDRkdfUENJX1BUTTFMQSAgKGJkLT5iaV9tZW1zdGFydCkgLyogcG9pbnQgdG8gc2RyYW0gICAgICAgICAgICAgICAqLworI2RlZmluZSBDRkdfUENJX1BUTTFNUyAgKH4oYmQtPmJpX21lbXNpemUgLSAxKSB8IDEpIC8qIG1lbXNpemUsIGVuYWJsZSBoYXJkLXdpcmVkIHRvIDEgKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0xUENJIDB4MDAwMDAwMDAJLyogSG9zdDogdXNlIHRoaXMgcGNpIGFkZHJlc3MJKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0yTEEJMHhmZmMwMDAwMAkvKiBwb2ludCB0byBmbGFzaAkJKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0yTVMJMHhmZmMwMDAwMQkvKiA0TUIsIGVuYWJsZQkJCSovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNURULmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTQwNURULmgKaW5kZXggNWNkOWFiYS4uMjI2MDMyNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0NQQ0k0MDVEVC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJNDA1RFQuaApAQCAtOTgsNiArOTgsOCBAQAogLyogdGhpcyBtdXN0IGJlIGluY2x1ZGVkIEFGVEVSIHRoZSBkZWZpbml0aW9uIG9mIENPTkZJR19DT01NQU5EUyAoaWYgYW55KSAqLwogI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgogCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQorCiAjdW5kZWYJQ09ORklHX1dBVENIRE9HCQkJLyogd2F0Y2hkb2cgZGlzYWJsZWQJCSovCiAKICNkZWZpbmUgQ09ORklHX1NEUkFNX0JBTkswCTEJLyogaW5pdCBvbmJvYXJkIFNEUkFNIGJhbmsgMAkqLwpAQCAtMTgzLDggKzE4NSw4IEBACiAjZGVmaW5lIENGR19QQ0lfU1VCU1lTX0RFVklDRUlEIDB4MDQwNSAgLyogUENJIERldmljZSBJRDogQ1BDSS00MDUgICAgICAqLwogI2RlZmluZSBDRkdfUENJX1NVQlNZU19ERVZJQ0VJRDIgMHgwNDA2IC8qIFBDSSBEZXZpY2UgSUQ6IENQQ0ktNDA1LUEgICAgKi8KICNkZWZpbmUgQ0ZHX1BDSV9DTEFTU0NPREUgICAgICAgMHgwYjIwICAvKiBQQ0kgQ2xhc3MgQ29kZTogUHJvY2Vzc29yL1BQQyovCi0jZGVmaW5lIENGR19QQ0lfUFRNMUxBICAweDAwMDAwMDAwICAgICAgLyogcG9pbnQgdG8gc2RyYW0gICAgICAgICAgICAgICAqLwotI2RlZmluZSBDRkdfUENJX1BUTTFNUyAgMHhmYzAwMDAwMSAgICAgIC8qIDY0TUIsIGVuYWJsZSBoYXJkLXdpcmVkIHRvIDEgKi8KKyNkZWZpbmUgQ0ZHX1BDSV9QVE0xTEEgIChiZC0+YmlfbWVtc3RhcnQpIC8qIHBvaW50IHRvIHNkcmFtICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ0ZHX1BDSV9QVE0xTVMgICh+KGJkLT5iaV9tZW1zaXplIC0gMSkgfCAxKSAvKiBtZW1zaXplLCBlbmFibGUgaGFyZC13aXJlZCB0byAxICovCiAjZGVmaW5lIENGR19QQ0lfUFRNMVBDSSAweDAwMDAwMDAwICAgICAgLyogSG9zdDogdXNlIHRoaXMgcGNpIGFkZHJlc3MgICAqLwogI2RlZmluZSBDRkdfUENJX1BUTTJMQSAgMHhmZmMwMDAwMCAgICAgIC8qIHBvaW50IHRvIGZsYXNoICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0yTVMgIDB4ZmZjMDAwMDEgICAgICAvKiA0TUIsIGVuYWJsZSAgICAgICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTc1MC5oIGIvaW5jbHVkZS9jb25maWdzL0NQQ0k3NTAuaAppbmRleCA4YmZkMGVlLi4yNDRlNDVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTc1MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUENJNzUwLmgKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCiAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICoKICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC01Nyw3ICs1Nyw3IEBACiAKICNkZWZpbmUgQ09ORklHX0NQQ0k3NTAJCTEJLyogdGhpcyBpcyBhbiBDUENJNzUwIGJvYXJkCSovCiAKLSNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQk5NjAwIAkvKiBjb25zb2xlIGJhdWRyYXRlID0gOTYwMAkqLworI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTk2MDAJLyogY29uc29sZSBiYXVkcmF0ZSA9IDk2MDAJKi8KIAogI3VuZGVmCUNPTkZJR19FQ0MJCQkvKiBlbmFibGUgRUNDIHN1cHBvcnQgKi8KIApAQCAtNzAsMTAgKzcwLDEyIEBACiAjZGVmaW5lIENPTkZJR19JREVOVF9TVFJJTkcJIk1hcnZlbGwgNjQzNjAgKyBJQk03NTBGWCIKIAogLyojZGVmaW5lIENGR19IVVNIX1BBUlNFUiovCi0jdW5kZWYgQ0ZHX0hVU0hfUEFSU0VSCisjZGVmaW5lIENGR19IVVNIX1BBUlNFUgogCiAjZGVmaW5lIENGR19QUk9NUFRfSFVTSF9QUzIJIj4gIgogCisjZGVmaW5lIENGR19BVVRPX0NPTVBMRVRFIDEKKwogLyogRGVmaW5lIHdoaWNoIEVUSCBwb3J0IHdpbGwgYmUgdXNlZCBmb3IgY29ubmVjdGluZyB0aGUgbmV0d29yayAqLwogI2RlZmluZSBDRkdfRVRIX1BPUlQJCUVUSF8wCiAKQEAgLTgyLDE5ICs4NCwxOSBAQAogICogZm9yIHlvdXIgY29uc29sZSBkcml2ZXIuCiAgKgogICogd2hhdCB0byBkbzoKLSAqIHRvIHVzZSB0aGUgRFVBUlQsIHVuZGVmIENPTkZJR19NUFNDLiAgSWYgeW91IGhhdmUgaGFja2VkIGEgc2VyaWFsCisgKiB0byB1c2UgdGhlIERVQVJULCB1bmRlZiBDT05GSUdfTVBTQy4JIElmIHlvdSBoYXZlIGhhY2tlZCBhIHNlcmlhbAogICogY2FibGUgb250byB0aGUgc2Vjb25kIERVQVJUIGNoYW5uZWwsIGNoYW5nZSB0aGUgQ0ZHX0RVQVJUIHBvcnQgZnJvbSAxCiAgKiB0byAwIGJlbG93LgogICoKICAqIHRvIHVzZSB0aGUgTVBTQywgI2RlZmluZSBDT05GSUdfTVBTQy4gIElmIHlvdSBoYXZlIHdpcmVkIHVwIGFub3RoZXIKICAqIG1wc2MgY2hhbm5lbCwgY2hhbmdlIENPTkZJR19NUFNDX1BPUlQgdG8gdGhlIGRlc2lyZWQgdmFsdWUuCiAgKi8KLSNkZWZpbmUJQ09ORklHX01QU0MKKyNkZWZpbmUgQ09ORklHX01QU0MKICNkZWZpbmUgQ09ORklHX01QU0NfUE9SVAkwCiAKIC8qIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBldGhlcm5ldCBwb3J0LCB1c2UgdGhpcyBkZWZpbmUgKG9wdGlvbnM6IDAsIDEsIDIpICovCiAjZGVmaW5lIENPTkZJR19ORVRfTVVMVEkKLSNkZWZpbmUgTVZfRVRIX0RFVlMgICAgICAgICAgICAgMQorI2RlZmluZSBNVl9FVEhfREVWUwkJMQogI2RlZmluZSBDT05GSUdfRVRIRVJfUE9SVAkwCiAKICN1bmRlZiBDT05GSUdfRVRIRVJfUE9SVF9NSUkJLyogdXNlIFJNSUkgKi8KQEAgLTExNiwzOCArMTE4LDM4IEBACiAKICNkZWZpbmUgQ09ORklHX1NFUklBTAkJIkFBMDAwMDAxIgogI2RlZmluZSBDT05GSUdfU0VSVkVSSVAJCSIxMC4wLjAuNzkiCi0jZGVmaW5lIENPTkZJR19ST09UUEFUSAkgICAgICAgICIvZXhwb3J0L25mc19jcGNpNzUwLyVzIgorI2RlZmluZSBDT05GSUdfUk9PVFBBVEgJCSIvZXhwb3J0L25mc19jcGNpNzUwLyVzIgogCiAjZGVmaW5lIENPTkZJR19URVNURFJBTURBVEEJeQotI2RlZmluZSBDT05GSUdfVEVTVERSQU1BRERSRVNTICBuCisjZGVmaW5lIENPTkZJR19URVNURFJBTUFERFJFU1MJbgogI2RlZmluZSBDT05GSUdfVEVTRVREUkFNV0FMSwluCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIAotI2RlZmluZSBDT05GSUdfTE9BRFNfRUNITwkwCS8qIGVjaG8gb2ZmIGZvciBzZXJpYWwgZG93bmxvYWQJKi8KLSNkZWZpbmUJQ0ZHX0xPQURTX0JBVURfQ0hBTkdFCQkvKiBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2VzCSovCisjZGVmaW5lIENPTkZJR19MT0FEU19FQ0hPCTAJLyogZWNobyBvZmYgZm9yIHNlcmlhbCBkb3dubG9hZCAqLworI2RlZmluZSBDRkdfTE9BRFNfQkFVRF9DSEFOR0UJCS8qIGFsbG93IGJhdWRyYXRlIGNoYW5nZXMJKi8KIAogI3VuZGVmCUNPTkZJR19XQVRDSERPRwkJCS8qIHdhdGNoZG9nIGRpc2FibGVkCQkqLwotI3VuZGVmCUNPTkZJR19BTFRJVkVDICAgICAgICAgICAgICAgICAgLyogdW5kZWYgdG8gZGlzYWJsZSAgICAgICAgICAgICAqLworI3VuZGVmCUNPTkZJR19BTFRJVkVDCQkJLyogdW5kZWYgdG8gZGlzYWJsZQkJKi8KIAogI2RlZmluZSBDT05GSUdfQk9PVFBfTUFTSwkoQ09ORklHX0JPT1RQX0RFRkFVTFQgfCBcCiAJCQkJIENPTkZJR19CT09UUF9CT09URklMRVNJWkUpCiAKIAotI2RlZmluZSBDT05GSUdfQ09NTUFORFMJKENPTkZJR19DTURfREZMICAgIFwKKyNkZWZpbmUgQ09ORklHX0NPTU1BTkRTIChDT05GSUdfQ01EX0RGTAkgICBcCiAJCQkgfCBDRkdfQ01EX0FTS0VOViAgXAotCQkJIHwgQ0ZHX0NNRF9JMkMgICAgIFwKKwkJCSB8IENGR19DTURfSTJDCSAgIFwKIAkJCSB8IENGR19DTURfQ0FDSEUgICBcCiAJCQkgfCBDRkdfQ01EX0VFUFJPTSAgXAotCQkJIHwgQ0ZHX0NNRF9QQ0kgICAgIFwKKwkJCSB8IENGR19DTURfUENJCSAgIFwKIAkJCSB8IENGR19DTURfRUxGCSAgIFwKIAkJCSB8IENGR19DTURfREFURQkgICBcCi0JCQkgfCBDRkdfQ01EX05FVCAgICAgXAotCQkJIHwgQ0ZHX0NNRF9QSU5HICAgIFwKLQkJCSB8IENGR19DTURfSURFICAgICBcCi0JCQkgfCBDRkdfQ01EX0ZBVCAgICAgXAotCQkJIHwgQ0ZHX0NNRF9FWFQyICAgIFwKKwkJCSB8IENGR19DTURfTkVUCSAgIFwKKwkJCSB8IENGR19DTURfUElORwkgICBcCisJCQkgfCBDRkdfQ01EX0lERQkgICBcCisJCQkgfCBDRkdfQ01EX0ZBVAkgICBcCisJCQkgfCBDRkdfQ01EX0VYVDIJICAgXAogCQkJCQkpCiAKICNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04KQEAgLTE1NSwyOCArMTU3LDQwIEBACiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCiAjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CiAKKyNkZWZpbmUgQ09ORklHX1VTRV9DUENJRFZJCisKKyNpZmRlZglDT05GSUdfVVNFX0NQQ0lEVkkKKyNkZWZpbmUgQ09ORklHX1ZJREVPCisjZGVmaW5lIENPTkZJR19WSURFT19DVDY5MDAwCisjZGVmaW5lIENPTkZJR19DRkJfQ09OU09MRQorI2RlZmluZSBDT05GSUdfVklERU9fU1dfQ1VSU09SCisjZGVmaW5lIENPTkZJR19WSURFT19MT0dPCisjZGVmaW5lIENPTkZJR19JODA0Ml9LQkQKKyNkZWZpbmUgQ0ZHX0lTQV9JTyAwCisjZW5kaWYKKwogLyoKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwogI2RlZmluZSBDRkdfSTJDX0VFUFJPTV9BRERSX0xFTiAyCiAjZGVmaW5lIENGR19JMkNfTVVMVElfRUVQUk9NUwotI2RlZmluZSBDRkdfSTJDX1NQRUVEICAgODAwMDAJCS8qIEkyQyBzcGVlZCBkZWZhdWx0ICovCisjZGVmaW5lIENGR19JMkNfU1BFRUQJODAwMDAJCS8qIEkyQyBzcGVlZCBkZWZhdWx0ICovCiAKICNkZWZpbmUgQ0ZHX0dUX0RVQUxfQ1BVCQkJLyogYWxzbyBmb3IgSlRBRyBldmVuIHdpdGggb25lIGNwdSAqLwotI2RlZmluZQlDRkdfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KLSNkZWZpbmUJQ0ZHX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdAkqLworI2RlZmluZSBDRkdfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KKyNkZWZpbmUgQ0ZHX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdAkqLwogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0tHREIpCi0jZGVmaW5lCUNGR19DQlNJWkUJMTAyNAkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUJKi8KKyNkZWZpbmUgQ0ZHX0NCU0laRQkxMDI0CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwogI2Vsc2UKLSNkZWZpbmUJQ0ZHX0NCU0laRQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCisjZGVmaW5lIENGR19DQlNJWkUJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwogI2VuZGlmCi0jZGVmaW5lCUNGR19QQlNJWkUgKENGR19DQlNJWkUrc2l6ZW9mKENGR19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLwotI2RlZmluZQlDRkdfTUFYQVJHUwkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KKyNkZWZpbmUgQ0ZHX1BCU0laRSAoQ0ZHX0NCU0laRStzaXplb2YoQ0ZHX1BST01QVCkrMTYpIC8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENGR19NQVhBUkdTCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLwogI2RlZmluZSBDRkdfQkFSR1NJWkUJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCiAKIC8qI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweDAwNDAwMDAwKi8JLyogbWVtdGVzdCB3b3JrcyBvbgkqLwogLyojZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwMEMwMDAwMCovCS8qIDQgLi4uIDEyIE1CIGluIERSQU0JKi8KLS8qI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MDdjMDAwMDAqLwkvKiA0IC4uLiAxMjQgTUIgaW4gRFJBTQkqLworLyojZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwN2MwMDAwMCovCS8qIDQgLi4uIDEyNCBNQiBpbiBEUkFNICovCiAKIC8qCiAjZGVmaW5lIENGR19EUkFNX1RFU1QKQEAgLTE4NCwyMSArMTk4LDIxIEBACiAgKiAgIENGR19EUkFNX1RFU1QgLSBlbmFibGVzIHRoZSBmb2xsb3dpbmcgdGVzdHMuCiAgKgogICogICBDRkdfRFJBTV9URVNUX0RBVEEgLSBFbmFibGVzIHRlc3QgZm9yIHNob3J0ZWQgb3Igb3BlbiBkYXRhIGxpbmVzCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50IHZhcmlhYmxlICd0ZXN0X2RyYW1fZGF0YScgbXVzdCBiZQotICogICAgICAgICAgICAgICAgICAgICAgICBzZXQgdG8gJ3knLgorICoJCQkgIEVudmlyb25tZW50IHZhcmlhYmxlICd0ZXN0X2RyYW1fZGF0YScgbXVzdCBiZQorICoJCQkgIHNldCB0byAneScuCiAgKiAgIENGR19EUkFNX1RFU1RfREFUQSAtIEVuYWJsZXMgdGVzdCB0byB2ZXJpZnkgdGhhdCBlYWNoIHdvcmQgaXMgdW5pcXVlbHkKLSAqICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2FibGUuIEVudmlyb25tZW50IHZhcmlhYmxlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2RyYW1fYWRkcmVzcycgbXVzdCBiZSBzZXQgdG8gJ3knLgorICoJCQkgIGFkZHJlc3NhYmxlLiBFbnZpcm9ubWVudCB2YXJpYWJsZQorICoJCQkgICd0ZXN0X2RyYW1fYWRkcmVzcycgbXVzdCBiZSBzZXQgdG8gJ3knLgogICogICBDRkdfRFJBTV9URVNUX1dBTEsgLSBFbmFibGVzIHRlc3QgYSA2NC1iaXQgd2Fsa2luZyBvbmVzIHBhdHRlcm4gdGVzdC4KLSAqICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0ZXN0IHRha2VzIGFib3V0IDYgbWludXRlcyB0byB0ZXN0IDY0IE1CLgotICogICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudCB2YXJpYWJsZSAndGVzdF9kcmFtX3dhbGsnIG11c3QgYmUKLSAqICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRvICd5Jy4KKyAqCQkJICBUaGlzIHRlc3QgdGFrZXMgYWJvdXQgNiBtaW51dGVzIHRvIHRlc3QgNjQgTUIuCisgKgkJCSAgRW52aXJvbm1lbnQgdmFyaWFibGUgJ3Rlc3RfZHJhbV93YWxrJyBtdXN0IGJlCisgKgkJCSAgc2V0IHRvICd5Jy4KICAqLwogI2RlZmluZSBDRkdfRFJBTV9URVNUCiAjaWYgZGVmaW5lZChDRkdfRFJBTV9URVNUKQogI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkJMHgwMDQwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCiAvKiNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDAwQzAwMDAwKi8JLyogNCAuLi4gMTIgTUIgaW4gRFJBTQkqLwotI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MDdjMDAwMDAJLyogNCAuLi4gMTI0IE1CIGluIERSQU0JKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDA3YzAwMDAwCS8qIDQgLi4uIDEyNCBNQiBpbiBEUkFNICovCiAjZGVmaW5lIENGR19EUkFNX1RFU1RfREFUQQogI2RlZmluZSBDRkdfRFJBTV9URVNUX0FERFJFU1MKICNkZWZpbmUgQ0ZHX0RSQU1fVEVTVF9XQUxLCkBAIC0yMDcsMTAgKzIyMSwxMCBAQAogI2RlZmluZSBDT05GSUdfRElTUExBWV9NRU1NQVAJCS8qIGF0IHRoZSBlbmQgb2YgdGhlIGJvb3Rwcm9jZXNzIHNob3cgdGhlIG1lbW9yeSBtYXAgKi8KICN1bmRlZiBDRkdfRElTUExBWV9ESU1NX1NQRF9DT05URU5UCS8qIHNob3cgU1BEIGNvbnRlbnQgZHVyaW5nIGJvb3QgKi8KIAotI2RlZmluZQlDRkdfTE9BRF9BRERSCQkweDAwMzAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzCSovCisjZGVmaW5lIENGR19MT0FEX0FERFIJCTB4MDAzMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KIAotI2RlZmluZQlDRkdfSFoJCQkxMDAwCQkvKiBkZWNyIGZyZXE6IDFtcyB0aWNrcwkqLwotI2RlZmluZSBDRkdfQlVTX0haCQkxMzMwMDAwMDAJLyogMTMzIE1IeiAoQ1BVID0gNSpCdXMgPSA2NjZNSHopCSAJKi8KKyNkZWZpbmUgQ0ZHX0haCQkJMTAwMAkJLyogZGVjciBmcmVxOiAxbXMgdGlja3MgKi8KKyNkZWZpbmUgQ0ZHX0JVU19IWgkJMTMzMDAwMDAwCS8qIDEzMyBNSHogKENQVSA9IDUqQnVzID0gNjY2TUh6KQkJKi8KICNkZWZpbmUgQ0ZHX0JVU19DTEsJCUNGR19CVVNfSFoKIAogI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAsIDIzMDQwMCB9CkBAIC0yMzcsNyArMjUxLDcgQEAKICAqIFRvIGFuIHVudXNlZCBtZW1vcnkgcmVnaW9uLiBUaGUgc3RhY2sgd2lsbCByZW1haW4gaW4gY2FjaGUgdW50aWwgUkFNCiAgKiBpcyBpbml0aWFsaXplZAogKi8KLSN1bmRlZiAgICBDRkdfSU5JVF9SQU1fTE9DSworI3VuZGVmCSAgQ0ZHX0lOSVRfUkFNX0xPQ0sKIC8qICNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMCovIC8qIHVudXNlZCBtZW1vcnkgcmVnaW9uICovCiAvKiAjZGVmaW5lIENGR19JTklUX1JBTV9BRERSCTB4ZmJhMDAwMDAqLyAvKiB1bnVzZWQgbWVtb3J5IHJlZ2lvbiAqLwogI2RlZmluZSBDRkdfSU5JVF9SQU1fQUREUgkweGYxMDgwMDAwIC8qIHVudXNlZCBtZW1vcnkgcmVnaW9uICovCkBAIC0yNDcsNyArMjYxLDcgQEAKIAogI2RlZmluZSBSRUxPQ0FURV9JTlRFUk5BTF9SQU1fQUREUgogI2lmZGVmIFJFTE9DQVRFX0lOVEVSTkFMX1JBTV9BRERSCi0vKiNkZWZpbmUgQ0ZHX0lOVEVSTkFMX1JBTV9BRERSCTB4ZmJhMDAwMDAqLworLyojZGVmaW5lIENGR19JTlRFUk5BTF9SQU1fQUREUiAweGZiYTAwMDAwKi8KICNkZWZpbmUgQ0ZHX0lOVEVSTkFMX1JBTV9BRERSCTB4ZjEwODAwMDAKICNlbmRpZgogCkBAIC0yNTYsMjggKzI3MCwzNCBAQAogICogKFNldCB1cCBieSB0aGUgc3RhcnR1cCBjb2RlKQogICogUGxlYXNlIG5vdGUgdGhhdCBDRkdfU0RSQU1fQkFTRSBfbXVzdF8gc3RhcnQgYXQgMAogICovCi0jZGVmaW5lCUNGR19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCiAvKiBEdW1taWVzIGZvciBCQVQgNC03ICovCi0jZGVmaW5lCUNGR19TRFJBTTFfQkFTRQkJMHgxMDAwMDAwMAkvKiBlYWNoIDI1NiBNQnl0ZSAqLwotI2RlZmluZQlDRkdfU0RSQU0yX0JBU0UJCTB4MjAwMDAwMDAKLSNkZWZpbmUJQ0ZHX1NEUkFNM19CQVNFCQkweDMwMDAwMDAwCi0jZGVmaW5lCUNGR19TRFJBTTRfQkFTRQkJMHg0MDAwMDAwMAorI2RlZmluZSBDRkdfU0RSQU0xX0JBU0UJCTB4MTAwMDAwMDAJLyogZWFjaCAyNTYgTUJ5dGUgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNMl9CQVNFCQkweDIwMDAwMDAwCisjZGVmaW5lIENGR19TRFJBTTNfQkFTRQkJMHgzMDAwMDAwMAorI2RlZmluZSBDRkdfU0RSQU00X0JBU0UJCTB4NDAwMDAwMDAKICNkZWZpbmUgQ0ZHX1JFU0VUX0FERFJFU1MJMHhmZmYwMDEwMAotI2RlZmluZQlDRkdfTU9OSVRPUl9MRU4JCSgyNTYgPDwgMTApCS8qIFJlc2VydmUgMjU2IGtCIGZvciBNb25pdG9yICovCisjZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDI1NiA8PCAxMCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IgKi8KICNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQkweGZmZjAwMDAwCi0jZGVmaW5lCUNGR19NQUxMT0NfTEVOCQkoMTI4IDw8IDEwKQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgbWFsbG9jICovCisjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkoMTI4IDw8IDEwKQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgbWFsbG9jICovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEZMQVNIIHJlbGF0ZWQKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKKyNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSV9EUklWRVIKICNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSQkJMQkgICAvKiBGbGFzaCBpcyBDRkkgY29uZm9ybWFudAkJKi8KLSNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTEyOAkgICAvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAJKi8KLSNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwk0CSAgIC8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCSovCi0jZGVmaW5lIENGR19GTEFTSF9JTkNSRU1FTlQJMHgwMTAwMDAwMCAvKiB0aGVyZSBpcyBvbmx5IG9uZSBiYW5rCQkqLwogI2RlZmluZSBDRkdfRkxBU0hfUFJPVEVDVElPTgkxCSAgIC8qIHVzZSBoYXJkd2FyZSBwcm90ZWN0aW9uCQkqLwogI2RlZmluZSBDRkdfRkxBU0hfVVNFX0JVRkZFUl9XUklURSAxCSAgIC8qIHVzZSBidWZmZXJlZCB3cml0ZXMgKDIweCBmYXN0ZXIpCSovCi0jZGVmaW5lIENGR19GTEFTSF9CQVNFCQkweGZjMDAwMDAwIC8qIHN0YXJ0IG9mIGZsYXNoIGJhbmtzICAgICAgICAgICAgICAqLworI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkJMHhmYzAwMDAwMCAvKiBzdGFydCBvZiBmbGFzaCBiYW5rcwkJKi8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwk0CSAgIC8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCSovCisjZGVmaW5lIENGR19GTEFTSF9JTkNSRU1FTlQJMHgwMTAwMDAwMCAvKiBzaXplIG9mICBmbGFzaCBiYW5rCQkqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJMTI4CSAgIC8qIG1heCBudW1iZXIgb2Ygc2VjdG9ycyBvbiBvbmUgY2hpcCAqLworI2RlZmluZSBDRkdfRkxBU0hfQkFOS1NfTElTVCAgeyBDRkdfRkxBU0hfQkFTRSwJCQkJICAgXAorCQkJCUNGR19GTEFTSF9CQVNFICsgMSpDRkdfRkxBU0hfSU5DUkVNRU5ULAkgICBcCisJCQkJQ0ZHX0ZMQVNIX0JBU0UgKyAyKkNGR19GTEFTSF9JTkNSRU1FTlQsCSAgIFwKKwkJCQlDRkdfRkxBU0hfQkFTRSArIDMqQ0ZHX0ZMQVNIX0lOQ1JFTUVOVCB9CisjZGVmaW5lIENGR19GTEFTSF9FTVBUWV9JTkZPCTEJICAgLyogc2hvdyBpZiBiYW5rIGlzIGVtcHR5CQkqLwogCiAvKiBhcmVhcyB0byBtYXAgZGlmZmVyZW50IHRoaW5ncyB3aXRoIHRoZSBHVCBpbiBwaHlzaWNhbCBzcGFjZSAqLwogI2RlZmluZSBDRkdfRFJBTV9CQU5LUwkJNApAQCAtMjg4LDIwICszMDgsMjAgQEAKIC8qIFBlcmlwaGVyYWwgRGV2aWNlIHNlY3Rpb24gKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBXZSBoYXZlIG9uIHRoZSBjcGNpNzUwIEJvYXJkIDogICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIEdULUNoaXBzZXQgUmVnaXN0ZXIgQXJlYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogR1QtQ2hpcHNldCBpbnRlcm5hbCBTUkFNIDI1NmsgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiBTUkFNIG9uIGV4dGVybmFsIGRldmljZSBtb2R1bGUgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIFJlYWwgdGltZSBjbG9jayBvbiBleHRlcm5hbCBkZXZpY2UgbW9kdWxlICAgICAgICAgICAqLwotLyogZG9iYmxlIFVBUlQgb24gZXh0ZXJuYWwgZGV2aWNlIG1vZHVsZSAgICAgICAgICAgICAgICovCi0vKiBEYXRhIGZsYXNoIG9uIGV4dGVybmFsIGRldmljZSBtb2R1bGUgICAgICAgICAgICAgICAgKi8KLS8qIEJvb3QgZmxhc2ggb24gZXh0ZXJuYWwgZGV2aWNlIG1vZHVsZSAgICAgICAgICAgICAgICAqLworLyogV2UgaGF2ZSBvbiB0aGUgY3BjaTc1MCBCb2FyZCA6CQkgICAgICAgKi8KKy8qIEdULUNoaXBzZXQgUmVnaXN0ZXIgQXJlYQkJCSAgICAgICAqLworLyogR1QtQ2hpcHNldCBpbnRlcm5hbCBTUkFNIDI1NmsJCSAgICAgICAqLworLyogU1JBTSBvbiBleHRlcm5hbCBkZXZpY2UgbW9kdWxlCQkgICAgICAgKi8KKy8qIFJlYWwgdGltZSBjbG9jayBvbiBleHRlcm5hbCBkZXZpY2UgbW9kdWxlCSAgICAgICAqLworLyogZG9iYmxlIFVBUlQgb24gZXh0ZXJuYWwgZGV2aWNlIG1vZHVsZQkgICAgICAgKi8KKy8qIERhdGEgZmxhc2ggb24gZXh0ZXJuYWwgZGV2aWNlIG1vZHVsZQkJICAgICAgICovCisvKiBCb290IGZsYXNoIG9uIGV4dGVybmFsIGRldmljZSBtb2R1bGUJCSAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIENGR19ERkxfR1RfUkVHUwkJMHgxNDAwMDAwMAkJCQkvKiBib290IHRpbWUgR1RfUkVHUyAqLwotI2RlZmluZSAgQ0ZHX0NQQ0k3NTBfUkVTRVRfQUREUgkweDE0MDAwMDAwCQkJCS8qIEFmdGVyIHBvd2VyIG9uIFJlc2V0IHRoZSBDUENJNzUwIGlzIGhlcmUgKi8KKyNkZWZpbmUJIENGR19DUENJNzUwX1JFU0VUX0FERFIgMHgxNDAwMDAwMAkJCQkvKiBBZnRlciBwb3dlciBvbiBSZXNldCB0aGUgQ1BDSTc1MCBpcyBoZXJlICovCiAKLSN1bmRlZiAJTUFSVkVMX1NUQU5EQVJEX0NGRwotI2lmbmRlZiAJTUFSVkVMX1NUQU5EQVJEX0NGRworI3VuZGVmCU1BUlZFTF9TVEFOREFSRF9DRkcKKyNpZm5kZWYJCU1BUlZFTF9TVEFOREFSRF9DRkcKIC8qKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyovCiAjZGVmaW5lIENGR19HVF9SRUdTCQkweGYxMDAwMDAwCQkJCS8qIEdUIFJlZ2lzdGVycyB3aWxsIGJlIG1hcHBlZCBoZXJlICovCiAvKiNkZWZpbmUgQ0ZHX0RFVl9CQVNFCQkweGZjMDAwMDAwKi8JCQkJLyogR1QgRGV2aWNlcyBDUyBzdGFydCBoZXJlICovCkBAIC0zMTMsMTEgKzMzMywxMSBAQAogI2RlZmluZSBDRkdfREVWMl9TUEFDRQkJMHhmZTAwMDAwMAkJCQkvKiBERVZfQ1MyIGZsYXNoIDMgICAgICovCiAjZGVmaW5lIENGR19ERVYzX1NQQUNFCQkweGYwMDAwMDAwCQkJCS8qIERFVl9DUzMgbnZyYW0vY2FuICAgKi8KIAotI2RlZmluZSBDRkdfQk9PVF9TSVpFCQlfMTZNIAkJCQkJLyogY3BjaTc1MCBmbGFzaCAwICAgICAqLwotI2RlZmluZSBDRkdfREVWMF9TSVpFCQlfMTZNIAkJCQkJLyogY3BjaTc1MCBmbGFzaCAxICAgICAqLwotI2RlZmluZSBDRkdfREVWMV9TSVpFCQlfMTZNIAkJCQkJLyogY3BjaTc1MCBmbGFzaCAyICAgICAqLwotI2RlZmluZSBDRkdfREVWMl9TSVpFCQlfMTZNIAkJCQkJLyogY3BjaTc1MCBmbGFzaCAzICAgICAqLwotI2RlZmluZSBDRkdfREVWM19TSVpFCQlfMTZNIAkJCQkJLyogY3BjaTc1MCBudnJhbS9jYW4gICAqLworI2RlZmluZSBDRkdfQk9PVF9TSVpFCQlfMTZNCQkJCQkvKiBjcGNpNzUwIGZsYXNoIDAgICAgICovCisjZGVmaW5lIENGR19ERVYwX1NJWkUJCV8xNk0JCQkJCS8qIGNwY2k3NTAgZmxhc2ggMSAgICAgKi8KKyNkZWZpbmUgQ0ZHX0RFVjFfU0laRQkJXzE2TQkJCQkJLyogY3BjaTc1MCBmbGFzaCAyICAgICAqLworI2RlZmluZSBDRkdfREVWMl9TSVpFCQlfMTZNCQkJCQkvKiBjcGNpNzUwIGZsYXNoIDMgICAgICovCisjZGVmaW5lIENGR19ERVYzX1NJWkUJCV8xNk0JCQkJCS8qIGNwY2k3NTAgbnZyYW0vY2FuICAgKi8KIAogLyorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKi8KICNlbmRpZgpAQCAtMzI2LDIyICszNDYsMjIgQEAKICNkZWZpbmUgQ0ZHX0RFVjBfUEFSCQkweDhGREZGRkZGCQkJCS8qIDE2IGJpdCBmbGFzaCAqLwogI2RlZmluZSBDRkdfREVWMV9QQVIJCTB4OEZERkZGRkYJCQkJLyogMTYgYml0IGZsYXNoICovCiAjZGVmaW5lIENGR19ERVYyX1BBUgkJMHg4RkRGRkZGRgkJCQkvKiAxNiBiaXQgZmxhc2ggKi8KLSNkZWZpbmUgQ0ZHX0RFVjNfUEFSCQkweDhGQ0ZGRkZGCQkJCS8qIG52cmFtL2NhbiAgICAqLworI2RlZmluZSBDRkdfREVWM19QQVIJCTB4OEZDRkZGRkYJCQkJLyogbnZyYW0vY2FuCSovCiAjZGVmaW5lIENGR19CT09UX1BBUgkJMHg4RkRGRkZGRgkJCQkvKiAxNiBiaXQgZmxhc2ggKi8KIAotCS8qICAgYyAgICA0ICAgIGEgICAgICA4ICAgICAyICAgICA0ICAgIDEgICAgICBjCQkqLwotCS8qIDMzIDIyfDIyMjJ8MjIgMjJ8MTExIDF8MTEgMTF8MSAxICB8ICAgIHwJCSovCisJLyogICBjCSAgNCAgICBhICAgICAgOAkgICAgMgkgIDQgICAgMSAgICAgIGMJCSovCisJLyogMzMgMjJ8MjIyMnwyMiAyMnwxMTEgMXwxMSAxMXwxIDEgIHwJICB8CQkqLwogCS8qIDEwIDk4fDc2NTR8MzIgMTB8OTg3IDZ8NTQgMzJ8MSAwOTh8NyA2NTR8MyAyMTAJKi8KIAkvKiAxMXwwMHwwMTAwfDEwIDEwfDEwMHwwIDAwfDEwIDB8MTAwIDB8MDAxIDF8MTAwCSovCiAJLyogIDN8IDB8Li4uLiAuLnwgMnwgNCB8ICAwIHwgIDQgfCAgOCAgfCAgMyAgfCA0CSovCiAKIAogLyogTVBQIENvbnRyb2wgTVY2NDM2MCBBcHBlbmRpeCBQIFAuIDYzMiovCi0jZGVmaW5lIENGR19NUFBfQ09OVFJPTF8wCTB4MDAwMDIyMjIJLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIENGR19NUFBfQ09OVFJPTF8xCTB4MTExMTAwMDAJLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIENGR19NUFBfQ09OVFJPTF8yCTB4MTExMTExMTEJLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIENGR19NUFBfQ09OVFJPTF8zCTB4MDAwMDExMTEgICAgIAkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICNkZWZpbmUgQ0ZHX1NFUklBTF9QT1JUX01VWAkweDAwMDAwMTAyKi8JLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIENGR19NUFBfQ09OVFJPTF8wCTB4MDAwMDIyMjIJLyoJCQkJICAgICAqLworI2RlZmluZSBDRkdfTVBQX0NPTlRST0xfMQkweDExMTEwMDAwCS8qCQkJCSAgICAgKi8KKyNkZWZpbmUgQ0ZHX01QUF9DT05UUk9MXzIJMHgxMTExMTExMQkvKgkJCQkgICAgICovCisjZGVmaW5lIENGR19NUFBfQ09OVFJPTF8zCTB4MDAwMDExMTEJLyoJCQkJICAgICAqLworLyogI2RlZmluZSBDRkdfU0VSSUFMX1BPUlRfTVVYCTB4MDAwMDAxMDIqLwkvKgkJCQkgICAgICovCiAKIAogI2RlZmluZSBDRkdfR1BQX0xFVkVMX0NPTlRST0wJMHhmZmZmZmZmZgkvKiAxMTExIDExMTEgMTExMSAxMTExIDExMTEgMTExMSAxMTExIDExMTEqLwpAQCAtMzU4LDEyICszNzgsMTIgQEAKIAkJCQkgICBFQ0MgZGlzYWJsZQogCQkJCSAgIG5vbiByZWdpc3RlcmVkIERSQU0gKi8KIAkJCQkvKiAzMToyNiAgIDI1OjIyICAyMToyMCAxOSAxOCAxNyAxNiAqLwotCQkJCS8qIDEwMDAwMSAwMDAwICAgMDEwICAgMCAgIDAgICAwICAwICovCisJCQkJLyogMTAwMDAxIDAwMDAJIDAxMCAgIDAgICAwICAgMCAgMCAqLwogCQkJCS8qIHJlZnJlc2hfY291bnQ9MHg0MDAKIAkJCQkgICBwaGlzaWNhbCBpbnRlcmxlYXZpbmcgZGlzYWJsZQogCQkJCSAgIHZpcnR1YWwgaW50ZXJsZWF2aW5nIGVuYWJsZSAqLwogCQkJCS8qIDE1IDE0IDEzOjAgKi8KLQkJCQkvKiAwICAxICAweDQwMCAqLworCQkJCS8qIDAgIDEJIDB4NDAwICovCiAjIGRlZmluZSBDRkdfU0RSQU1fQ09ORklHCTB4NTgyMDA0MDAJLyogMHgxNDAwICBjb3BpZWQgZnJvbSBEaW5rMzIgYnp3LiBWeFdvcmtzKi8KIAogCkBAIC0zNzIsMTQgKzM5MiwxNCBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUgUENJX0hPU1RfQURBUFRFUiAwICAgICAgICAgICAgICAvKiBjb25maWd1cmUgYXIgcGNpIGFkYXB0ZXIgICAgICovCi0jZGVmaW5lIFBDSV9IT1NUX0ZPUkNFICAxICAgICAgICAgICAgICAgLyogY29uZmlndXJlIGFzIHBjaSBob3N0ICAgICAgICAqLwotI2RlZmluZSBQQ0lfSE9TVF9BVVRPICAgMiAgICAgICAgICAgICAgIC8qIGRldGVjdGVkIHZpYSBhcmJpdGVyIGVuYWJsZSAgKi8KKyNkZWZpbmUgUENJX0hPU1RfQURBUFRFUiAwCQkvKiBjb25maWd1cmUgYXIgcGNpIGFkYXB0ZXIJKi8KKyNkZWZpbmUgUENJX0hPU1RfRk9SQ0UJMQkJLyogY29uZmlndXJlIGFzIHBjaSBob3N0CSovCisjZGVmaW5lIFBDSV9IT1NUX0FVVE8JMgkJLyogZGV0ZWN0ZWQgdmlhIGFyYml0ZXIgZW5hYmxlCSovCiAKLSNkZWZpbmUgQ09ORklHX1BDSSAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNsdWRlIHBjaSBzdXBwb3J0ICAgICAgICAgICovCi0jZGVmaW5lIENPTkZJR19QQ0lfSE9TVCBQQ0lfSE9TVF9GT1JDRSAgLyogc2VsZWN0IHBjaSBob3N0IGZ1bmN0aW9uICAgICAqLwotI2RlZmluZSBDT05GSUdfUENJX1BOUCAgICAgICAgICAgICAgICAgIC8qIGRvIHBjaSBwbHVnLWFuZC1wbGF5ICAgICAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1BDSV9TQ0FOX1NIT1cgICAgICAgICAgICAvKiBzaG93IGRldmljZXMgb24gYnVzICAgICAgICAgICovCisjZGVmaW5lIENPTkZJR19QQ0kJCQkvKiBpbmNsdWRlIHBjaSBzdXBwb3J0CQkqLworI2RlZmluZSBDT05GSUdfUENJX0hPU1QgUENJX0hPU1RfRk9SQ0UJLyogc2VsZWN0IHBjaSBob3N0IGZ1bmN0aW9uCSovCisjZGVmaW5lIENPTkZJR19QQ0lfUE5QCQkJLyogZG8gcGNpIHBsdWctYW5kLXBsYXkJCSovCisjZGVmaW5lIENPTkZJR19QQ0lfU0NBTl9TSE9XCQkvKiBzaG93IGRldmljZXMgb24gYnVzCQkqLwogCiAvKiBQQ0kgTUVNT1JZIE1BUCBzZWN0aW9uICovCiAjZGVmaW5lIENGR19QQ0kwX01FTV9CQVNFCTB4ODAwMDAwMDAKQEAgLTQwMSw2ICs0MjEsOCBAQAogI2RlZmluZSBDRkdfUENJMV9JT19TUEFDRQkoQ0ZHX1BDSTFfSU9fQkFTRSkKICNkZWZpbmUgQ0ZHX1BDSTFfSU9fU1BBQ0VfUENJCTB4MDAwMDAwMDAKIAorI2RlZmluZSBDRkdfSVNBX0lPX0JBU0VfQUREUkVTUyAoQ0ZHX1BDSTBfSU9fQkFTRSkKKwogI2lmIGRlZmluZWQgKENPTkZJR183NTBDWCkKICNkZWZpbmUgQ0ZHX1BDSV9JRFNFTCAweDAKICNlbHNlCkBAIC00MTEsMjEgKzQzMywyMSBAQAogICogSURFL0FUQSBzdHVmZgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCi0jdW5kZWYgIENPTkZJR19JREVfOHh4X0RJUkVDVCAgICAgICAgICAgLyogbm8gcGNtY2lhIGludGVyZmFjZSByZXF1aXJlZCAqLwotI3VuZGVmICBDT05GSUdfSURFX0xFRCAgICAgICAgICAgICAgICAgIC8qIG5vIGxlZCBmb3IgaWRlIHN1cHBvcnRlZCAgICAgKi8KLSNkZWZpbmUgQ09ORklHX0lERV9SRVNFVCAgICAgICAgICAgICAgICAvKiBubyByZXNldCBmb3IgaWRlIHN1cHBvcnRlZCAgICovCi0jZGVmaW5lIENPTkZJR19JREVfUFJFSU5JVCAgICAgICAgICAgICAgLyogY2hlY2sgZm9yIHVuaXRzICAgICAgICAgICAgICAqLworI3VuZGVmCUNPTkZJR19JREVfOHh4X0RJUkVDVAkJLyogbm8gcGNtY2lhIGludGVyZmFjZSByZXF1aXJlZCAqLworI3VuZGVmCUNPTkZJR19JREVfTEVECQkJLyogbm8gbGVkIGZvciBpZGUgc3VwcG9ydGVkCSovCisjZGVmaW5lIENPTkZJR19JREVfUkVTRVQJCS8qIG5vIHJlc2V0IGZvciBpZGUgc3VwcG9ydGVkCSovCisjZGVmaW5lIENPTkZJR19JREVfUFJFSU5JVAkJLyogY2hlY2sgZm9yIHVuaXRzCQkqLwogCi0jZGVmaW5lIENGR19JREVfTUFYQlVTICAgICAgICAgIDIgICAgICAgICAgICAgICAvKiBtYXguIDEgSURFIGJ1c3NlcyAgICAqLwotI2RlZmluZSBDRkdfSURFX01BWERFVklDRSAgICAgICAoQ0ZHX0lERV9NQVhCVVMqMikgLyogbWF4LiAxIGRyaXZlcyBwZXIgSURFIGJ1cyAqLworI2RlZmluZSBDRkdfSURFX01BWEJVUwkJMgkJLyogbWF4LiAxIElERSBidXNzZXMJKi8KKyNkZWZpbmUgQ0ZHX0lERV9NQVhERVZJQ0UJKENGR19JREVfTUFYQlVTKjIpIC8qIG1heC4gMSBkcml2ZXMgcGVyIElERSBidXMgKi8KIAotI2RlZmluZSBDRkdfQVRBX0JBU0VfQUREUiAgICAgICAwCi0jZGVmaW5lIENGR19BVEFfSURFMF9PRkZTRVQgICAgIDAKLSNkZWZpbmUgQ0ZHX0FUQV9JREUxX09GRlNFVCAgICAgMAorI2RlZmluZSBDRkdfQVRBX0JBU0VfQUREUgkwCisjZGVmaW5lIENGR19BVEFfSURFMF9PRkZTRVQJMAorI2RlZmluZSBDRkdfQVRBX0lERTFfT0ZGU0VUCTAKIAotI2RlZmluZSBDRkdfQVRBX0RBVEFfT0ZGU0VUICAgICAweDAwMDAgIC8qIE9mZnNldCBmb3IgZGF0YSBJL08gICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBDRkdfQVRBX1JFR19PRkZTRVQgICAgICAweDAwMDAgIC8qIE9mZnNldCBmb3Igbm9ybWFsIHJlZ2lzdGVyIGFjY2Vzc2VzICAqLwotI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQgICAgICAweDAwMDAgIC8qIE9mZnNldCBmb3IgYWx0ZXJuYXRlIHJlZ2lzdGVycyAgICAgICAqLworI2RlZmluZSBDRkdfQVRBX0RBVEFfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIGRhdGEgSS9PCQkJKi8KKyNkZWZpbmUgQ0ZHX0FUQV9SRUdfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIG5vcm1hbCByZWdpc3RlciBhY2Nlc3NlcwkqLworI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQJMHgwMDAwCS8qIE9mZnNldCBmb3IgYWx0ZXJuYXRlIHJlZ2lzdGVycwkqLwogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI5LDcgKzU1MSw3IEBACiAgKiBoYXZlIHRvIGJlIGluIHRoZSBmaXJzdCA4IE1CIG9mIG1lbW9yeSwgc2luY2UgdGhpcyBpcwogICogdGhlIG1heGltdW0gbWFwcGVkIGJ5IHRoZSBMaW51eCBrZXJuZWwgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogICovCi0jZGVmaW5lCUNGR19CT09UTUFQU1oJCSg4PDwyMCkJLyogSW5pdGlhbCBNZW1vcnkgbWFwIGZvciBMaW51eCAqLworI2RlZmluZSBDRkdfQk9PVE1BUFNaCQkoODw8MjApIC8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogRkxBU0ggb3JnYW5pemF0aW9uCkBAIC01NDEsMjMgKzU2MywyMyBAQAogI2RlZmluZSBDRkdfRkxBU0hfTE9DS19UT1VUCTUwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBMb2NrIChpbiBtcykgKi8KIAogI2lmIDAKLSNkZWZpbmUJQ0ZHX0VOVl9JU19JTl9GTEFTSAkwCi0jZGVmaW5lCUNGR19FTlZfU0laRQkJMHgxMDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yICovCisjZGVmaW5lIENGR19FTlZfSVNfSU5fRkxBU0gJMAorI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4MTAwMAkvKiBUb3RhbCBTaXplIG9mIEVudmlyb25tZW50IFNlY3RvciAqLwogI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQkweDEwMDAwCiAjZGVmaW5lIENGR19FTlZfQUREUgkJMHhGRkY3ODAwMCAvKiBNYXJ2ZWxsIDgtQml0IEJvb3RmbGFzaCBsYXN0IHNlY3RvciAqLwotLyogI2RlZmluZSBDRkdfRU5WX0FERFIgICAgKENGR19GTEFTSF9CQVNFK0NGR19NT05JVE9SX0xFTi1DRkdfRU5WX1NFQ1RfU0laRSkgKi8KKy8qICNkZWZpbmUgQ0ZHX0VOVl9BRERSCSAgIChDRkdfRkxBU0hfQkFTRStDRkdfTU9OSVRPUl9MRU4tQ0ZHX0VOVl9TRUNUX1NJWkUpICovCiAjZW5kaWYKIAogI2RlZmluZSBDRkdfRU5WX0lTX0lOX0VFUFJPTQkxCS8qIHVzZSBFRVBST00gZm9yIGVudmlyb25tZW50IHZhcnMgKi8KICNkZWZpbmUgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgNQogI2RlZmluZSBDRkdfRUVQUk9NX1BBR0VfV1JJVEVfREVMQVlfTVMgMjAKLSNkZWZpbmUgQ0ZHX0kyQ19FRVBST01fQUREUiAgICAgMHgwNTAKKyNkZWZpbmUgQ0ZHX0kyQ19FRVBST01fQUREUgkweDA1MAogI2RlZmluZSBDRkdfRU5WX09GRlNFVAkJMHgyMDAJLyogZW52aXJvbm1lbnQgc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIEVFUFJPTSAqLwogI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4NjAwCS8qIDIwNDggYnl0ZXMgbWF5IGJlIHVzZWQgZm9yIGVudiB2YXJzKi8KIAogI2RlZmluZSBDRkdfTlZSQU1fQkFTRV9BRERSCTB4ZjAwMDAwMDAJCS8qIE5WUkFNIGJhc2UgYWRkcmVzcwkqLwogI2RlZmluZSBDRkdfTlZSQU1fU0laRQkJKDMyKjEwMjQpCQkvKiBOVlJBTSBzaXplCQkqLwotI2RlZmluZSBDRkdfVlhXT1JLU19NQUNfUFRSICAgICAoQ0ZHX05WUkFNX0JBU0VfQUREUitDRkdfTlZSQU1fU0laRS0weDQwKQorI2RlZmluZSBDRkdfVlhXT1JLU19NQUNfUFRSCShDRkdfTlZSQU1fQkFTRV9BRERSK0NGR19OVlJBTV9TSVpFLTB4NDApCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIENhY2hlIENvbmZpZ3VyYXRpb24KQEAgLTU3OSw3ICs2MDEsNyBAQAogI2lmIGRlZmluZWQgKENPTkZJR183NTBDWCkgfHwgZGVmaW5lZCAoQ09ORklHXzc1MEZYKQogI2RlZmluZSBMMl9JTklUIDAKICNlbHNlCi0jZGVmaW5lIEwyX0lOSVQgIAkoTDJDUl9MMlNJWl8yTSB8IEwyQ1JfTDJDTEtfMyB8IEwyQ1JfTDJSQU1fQlVSU1QgfCBcCisjZGVmaW5lIEwyX0lOSVQJCShMMkNSX0wyU0laXzJNIHwgTDJDUl9MMkNMS18zIHwgTDJDUl9MMlJBTV9CVVJTVCB8IFwKIAkJCUwyQ1JfTDJPSF81IHwgTDJDUl9MMkNUTCB8IEwyQ1JfTDJXVCkKICNlbmRpZgogCkBAIC01OTAsOSArNjEyLDkgQEAKICAqCiAgKiBCb290IEZsYWdzCiAgKi8KLSNkZWZpbmUJQk9PVEZMQUdfQ09MRAkweDAxCQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAqLworI2RlZmluZSBCT09URkxBR19DT0xECTB4MDEJCS8qIE5vcm1hbCBQb3dlci1PbjogQm9vdCBmcm9tIEZMQVNIICovCiAjZGVmaW5lIEJPT1RGTEFHX1dBUk0JMHgwMgkJLyogU29mdHdhcmUgcmVib290CQkgICAgKi8KIAotI2RlZmluZSBDRkdfQk9BUkRfQVNNX0lOSVQgICAgICAxCisjZGVmaW5lIENGR19CT0FSRF9BU01fSU5JVAkxCiAKICNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvQ1BVODYuaCBiL2luY2x1ZGUvY29uZmlncy9DUFU4Ni5oCmluZGV4IDE2YTllYTUuLjFlOWE5OWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9DUFU4Ni5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9DUFU4Ni5oCkBAIC0xNzgsNiArMTc4LDggQEAKIC8qIHRoaXMgbXVzdCBiZSBpbmNsdWRlZCBBRlRFUiB0aGUgZGVmaW5pdGlvbiBvZiBDT05GSUdfQ09NTUFORFMgKGlmIGFueSkgKi8KICNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KIAorI2RlZmluZSBDRkdfTkFORF9MRUdBQ1kKKwogLyoKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0NQVTg3LmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BVODcuaAppbmRleCBhMjNkN2U1Li45YTk4ZTVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvQ1BVODcuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvQ1BVODcuaApAQCAtMTg5LDYgKzE4OSw4IEBACiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCiAjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CiAKKyNkZWZpbmUgQ0ZHX05BTkRfTEVHQUNZCisKIC8qCiAgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9HRU44NjBULmggYi9pbmNsdWRlL2NvbmZpZ3MvR0VOODYwVC5oCmluZGV4IGRlOGY3YWUuLjY2MTNmOTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9HRU44NjBULmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0dFTjg2MFQuaApAQCAtMjg0LDYgKzI4NCw4IEBACiAgKi8KICNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KIAorI2RlZmluZSBDRkdfTkFORF9MRUdBQ1kKKwogLyoKICAqIFZlcmJvc2UgaGVscCBmcm9tIGNvbW1hbmQgbW9uaXRvci4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0hINDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvSEg0MDUuaAppbmRleCAxMzFjMjE1Li5kYzQwZWJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvSEg0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvSEg0MDUuaApAQCAtNSw2ICs1LDkgQEAKICAqIChDKSBDb3B5cmlnaHQgMjAwNQogICogU3RlZmFuIFJvZXNlLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCBzckBkZW54LmRlLgogICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNgorICogTWF0dGhpYXMgRnVjaHMsIGVzZCBHbWJILCBtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tCisgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCiAgKgpAQCAtNjEsOSArNjQsMTMgQEAKIAogI2RlZmluZSBDRkdfTE9BRFNfQkFVRF9DSEFOR0UJMQkvKiBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2UJKi8KIAorI2RlZmluZSBDT05GSUdfTkVUX01VTFRJCTEKKyN1bmRlZiAgQ09ORklHX0hBU19FVEgxCisKICNkZWZpbmUgQ09ORklHX01JSQkJMQkvKiBNSUkgUEhZIG1hbmFnZW1lbnQJCSovCi0jZGVmaW5lCUNPTkZJR19QSFlfQUREUgkJMAkvKiBQSFkgYWRkcmVzcwkJCSovCisjZGVmaW5lIENPTkZJR19QSFlfQUREUgkJMAkvKiBQSFkgYWRkcmVzcwkJCSovCiAjZGVmaW5lIENPTkZJR19MWFQ5NzFfTk9fU0xFRVAgIDEgICAgICAgLyogZGlzYWJsZSBzbGVlcCBtb2RlIGluIExYVDk3MSAqLworI2RlZmluZSBDT05GSUdfUkVTRVRfUEhZX1IgICAgICAxICAgICAgIC8qIHVzZSByZXNldF9waHkoKSB0byBkaXNhYmxlIHBoeSBzbGVlcCBtb2RlICovCiAKICNkZWZpbmUgQ09ORklHX1BIWV9DTEtfRlJFUQlFTUFDX1NUQUNSX0NMS182Nk1IWiAvKiA2NiBNSHogT1BCIGNsb2NrKi8KIApAQCAtNzksNiArODYsNyBAQAogI2Vsc2UKICNkZWZpbmUgQ09ORklHX1ZJREVPX1NNNTAxXzE2QlBQCiAjZW5kaWYKKyNkZWZpbmUgQ09ORklHX1ZJREVPX1NNNTAxX0ZCTUVNX09GRlNFVCAweDEwMDAwCiAjZGVmaW5lIENPTkZJR19DRkJfQ09OU09MRQogI2RlZmluZSBDT05GSUdfVklERU9fTE9HTwogI2RlZmluZSBDT05GSUdfVkdBX0FTX1NJTkdMRV9ERVZJQ0UKQEAgLTEyMiw2ICsxMzAsOCBAQAogLyogdGhpcyBtdXN0IGJlIGluY2x1ZGVkIEFGVEVSIHRoZSBkZWZpbml0aW9uIG9mIENPTkZJR19DT01NQU5EUyAoaWYgYW55KSAqLwogI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgogCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQorCiAjdW5kZWYgIENPTkZJR19CWklQMgkgLyogaW5jbHVkZSBzdXBwb3J0IGZvciBiemlwMiBjb21wcmVzc2VkIGltYWdlcyAqLwogI3VuZGVmICBDT05GSUdfV0FUQ0hET0cJCQkvKiB3YXRjaGRvZyBkaXNhYmxlZAkJKi8KIApAQCAtNDM0LDkgKzQ0NCwxMiBAQAogI2RlZmluZSBDRkdfRlBHQV9DVFJMX1ZHQTBfQkxfTU9ERSAweDAwMDgKICNkZWZpbmUgQ0ZHX0ZQR0FfQ1RSTF9DRl9SRVNFVCAgMHgwMDQwCiAjZGVmaW5lIENGR19GUEdBX0NUUkxfUFMyX1BXUiAgIDB4MDA4MAotI2RlZmluZSBDRkdfRlBHQV9DVFJMX0NGX1BXUiAgICAweDAxMDAgICAgICAvKiBsb3cgYWN0aXZlICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDRkdfRlBHQV9DVFJMX0NGX1BXUk4gICAweDAxMDAgICAgICAvKiBsb3cgYWN0aXZlICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBDRkdfRlBHQV9DVFJMX0NGX0JVU19FTiAweDAyMDAKICNkZWZpbmUgQ0ZHX0ZQR0FfQ1RSTF9MQ0RfQ0xLICAgMHg3MDAwICAgICAgLyogTWFzayBmb3IgbGNkIGNsb2NrICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ0ZHX0ZQR0FfQ1RSTF9PV19FTkFCTEUgMHg4MDAwCisKKyNkZWZpbmUgQ0ZHX0ZQR0FfU1RBVFVTX0NGX0RFVEVDVCAweDgwMDAKIAogI2RlZmluZSBMQ0RfQ0xLX09GRiAgICAgICAgICAgICAweDAwMDAgICAgICAvKiBPZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBMQ0RfQ0xLXzAyMDgzICAgICAgICAgICAweDEwMDAgICAgICAvKiAyLjA4MyBNSHogICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0hVQjQwNS5oIGIvaW5jbHVkZS9jb25maWdzL0hVQjQwNS5oCmluZGV4IGViNjI3ZTguLmY4NGUzNTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9IVUI0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvSFVCNDA1LmgKQEAgLTEzNSw2ICsxMzUsOCBAQAogICogTkFORC1GTEFTSCBzdHVmZgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQorCiAjZGVmaW5lIENGR19NQVhfTkFORF9ERVZJQ0UJMQkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcwkJKi8KICNkZWZpbmUgU0VDVE9SU0laRSA1MTIKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL0lTUEFOLmggYi9pbmNsdWRlL2NvbmZpZ3MvSVNQQU4uaAppbmRleCA2NTA1NmEyLi43MDZiZGI5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvSVNQQU4uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvSVNQQU4uaApAQCAtMTA5LDcgKzEwOSw2IEBACiAjZGVmaW5lIENPTkZJR19DT01NQU5EUwkJKCBDT05GSUdfQ01EX0RGTCAgXAogCQkJCXwgQ0ZHX0NNRF9BU0tFTlYgIFwKIAkJCQl8IENGR19DTURfREhDUCAgICBcCi0JCQkJfCBDRkdfQ01EX0VDSE8gICAgXAogCQkJCXwgQ0ZHX0NNRF9JTU1BUCAgIFwKIAkJCQl8IENGR19DTURfTUlJICAgICBcCiAJCQkJfCBDRkdfQ01EX1BJTkcgICAgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01JUDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL01JUDQwNS5oCmluZGV4IGRiMjE0N2IuLjdlNTdhMGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NSVA0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTUlQNDA1LmgKQEAgLTU4LDcgKzU4LDYgQEAKIAkJCUNGR19DTURfQ0FDSEUJfCBcCiAJCQlDRkdfQ01EX0RBVEUJfCBcCiAJCQlDRkdfQ01EX0RIQ1AJfCBcCi0JCQlDRkdfQ01EX0VDSE8JfCBcCiAJCQlDRkdfQ01EX0VFUFJPTQl8IFwKIAkJCUNGR19DTURfRUxGCXwgXAogCQkJQ0ZHX0NNRF9GQVQJfCBcCkBAIC04Nyw2ICs4Niw4IEBACiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTICAoaWYgYW55KSAqLwogI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgogCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQorCiAjZGVmaW5lCSBDRkdfSFVTSF9QQVJTRVIKICNkZWZpbmUJIENGR19QUk9NUFRfSFVTSF9QUzIgIj4gIgogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODZ4QURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODZ4QURTLmgKaW5kZXggNTY1ZjliYi4uODMxY2M1ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg2eEFEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NnhBRFMuaApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBDT05GSUdfTVBDODZ4QURTICAgICAgICAxICAgICAgIC8qIG5ldyBBRFMgKi8KICNkZWZpbmUgQ09ORklHX0ZBRFMJCTEgICAgICAgLyogV2UgYXJlIEZBRFMgY29tcGF0aWJsZSAobW9yZSBvciBsZXNzKSAqLwogCi0vKiBOZXcgTVBDODZ4QURTIC0gcGljayBvbmUgb2YgdGhlc2UgKi8KKy8qIENQVSB0eXBlIC0gcGljayBvbmUgb2YgdGhlc2UgKi8KICNkZWZpbmUgQ09ORklHX01QQzg2NlQgCQkxCiAjdW5kZWYgQ09ORklHX01QQzg2NlAKICN1bmRlZiBDT05GSUdfTVBDODU5VApAQCAtMzMsNyArMzMsMTAgQEAKICN1bmRlZglDT05GSUdfOHh4X0NPTlNfTk9ORQogI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTM4NDAwCiAKLSNkZWZpbmUgQ09ORklHXzh4eF9PU0NMSwkxMDAwMDAwMCAvKiAxME1IeiBvc2NpbGxhdG9yIG9uIEVYVENMSyAgKi8KKyNkZWZpbmUgQ09ORklHXzh4eF9PU0NMSwkJMTAwMDAwMDAgLyogMTBNSHogb3NjaWxsYXRvciBvbiBFWFRDTEsgICovCisjZGVmaW5lIENPTkZJR184eHhfQ1BVQ0xLX0RFRkFVTFQJNTAwMDAwMDAKKyNkZWZpbmUgQ0ZHXzh4eF9DUFVDTEtfTUlOCQk0MDAwMDAwMAorI2RlZmluZSBDRkdfOHh4X0NQVUNMS19NQVgJCTgwMDAwMDAwCiAKICNkZWZpbmUgQ09ORklHX0RSQU1fNTBNSFogICAgICAgMQogI2RlZmluZSBDT05GSUdfU0RSQU1fNTBNSFogICAgICAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODg1QURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODg1QURTLmgKaW5kZXggNzQzMThlNS4uMTg2N2M1YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg4NUFEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4ODVBRFMuaApAQCAtMSw0NCArMSwzNCBAQAogLyoKICAqIEEgY29sbGVjdGlvbiBvZiBzdHJ1Y3R1cmVzLCBhZGRyZXNzZXMsIGFuZCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoCi0gKiB0aGUgTW90b3JvbGEgRFVFVCBBRFMgYm9hcmQuIFZhbHVlcyBjb21tb24gdG8gYWxsIEZBRFMgZmFtaWx5IGJvYXJkcworICogdGhlIE1vdG9yb2xhIE1QQzg4NUFEUyBib2FyZC4gVmFsdWVzIGNvbW1vbiB0byBhbGwgRkFEUyBmYW1pbHkgYm9hcmRzCiAgKiBhcmUgaW4gYm9hcmQvZmFkcy9mYWRzLmgKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXJhYmVsbGEgU29mdHdhcmUgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgQXJhYmVsbGEgU29mdHdhcmUgTHRkLgogICogWXVsaSBCYXJjb2hlbiA8eXVsaUBhcmFiZWxsYXN3LmNvbT4KICAqLwogCiAjaWZuZGVmIF9fQ09ORklHX0gKICNkZWZpbmUgX19DT05GSUdfSAogCi0vKiBCb2FyZCB0eXBlICovCi0jZGVmaW5lIENPTkZJR19NUEM4ODVBRFMJICAgICAgICAxCS8qIER1ZXQgKE1QQzg3eC84OHgpIEFEUyAqLworI2RlZmluZSBDT05GSUdfTVBDODg1QURTCTEJLyogTVBDODg1QURTIGJvYXJkICovCiAjZGVmaW5lIENPTkZJR19GQURTCQkxCS8qIFdlIGFyZSBGQURTIGNvbXBhdGlibGUgKG1vcmUgb3IgbGVzcykgKi8KIAotI2RlZmluZSBDT05GSUdfTVBDODg1IAkJMQkvKiBNUEM4ODUgQ1BVIChEdWV0IGZhbWlseSkgKi8KKyNkZWZpbmUgQ09ORklHX01QQzg4NQkJMQkvKiBNUEM4ODUgQ1BVIChEdWV0IGZhbWlseSkgKi8KIAotI2RlZmluZQlDT05GSUdfOHh4X0NPTlNfU01DMQkxCS8qIENvbnNvbGUgaXMgb24gU01DMQkJKi8KKyNkZWZpbmUJQ09ORklHXzh4eF9DT05TX1NNQzEJMQkvKiBDb25zb2xlIGlzIG9uIFNNQzEgKi8KICN1bmRlZglDT05GSUdfOHh4X0NPTlNfU01DMgogI3VuZGVmCUNPTkZJR184eHhfQ09OU19OT05FCiAjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMzg0MDAKIAotI2RlZmluZSBDT05GSUdfOHh4X09TQ0xLCTEwMDAwMDAwIC8qIDEwIE1IeiBvc2NpbGxhdG9yIG9uIEVYVENMSyAgKi8KLQotI2RlZmluZSBDRkdfUExQUkNSCQkoKDEgPDwgUExQUkNSX01GRF9TSElGVCkgfCAoMTIgPDwgUExQUkNSX01GSV9TSElGVCkgfCBQTFBSQ1JfVEVYUFMpCisjZGVmaW5lIENPTkZJR184eHhfT1NDTEsJCTEwMDAwMDAwIC8qIDEwIE1IeiBvc2NpbGxhdG9yIG9uIEVYVENMSyAgKi8KKyNkZWZpbmUgQ09ORklHXzh4eF9DUFVDTEtfREVGQVVMVAk1MDAwMDAwMAorI2RlZmluZSBDRkdfOHh4X0NQVUNMS19NSU4JCTQwMDAwMDAwCisjZGVmaW5lIENGR184eHhfQ1BVQ0xLX01BWAkJMTMzMDAwMDAwCiAKICNkZWZpbmUgQ09ORklHX1NEUkFNXzUwTUhaICAgICAgMQogCi0jZGVmaW5lIENPTkZJR19DT01NQU5EUwkoQ09ORklHX0NNRF9ERkwgICBcCi0JCQkgfCBDRkdfQ01EX0RIQ1AgICBcCi0JCQkgfCBDRkdfQ01EX0lNTUFQICBcCi0JCQkgfCBDRkdfQ01EX01JSSAgICBcCi0JCQkgfCBDRkdfQ01EX1BJTkcgICBcCi0JCQkpCi0KICNpbmNsdWRlICJmYWRzLmgiCiAKLSN1bmRlZiBDRkdfU0NDUgotI2RlZmluZSBDRkdfU0NDUgkoU0NDUl9UQlN8U0NDUl9FQkRGMTEpCi0KICNkZWZpbmUgQ0ZHX09SNV9QUkVMSU0JCTB4RkZGRjgxMTAJLyogNjRLYnl0ZSBhZGRyZXNzIHNwYWNlICovCiAjZGVmaW5lIENGR19CUjVfUFJFTElNCQkoQ0ZHX1BIWURFVl9BRERSIHwgQlJfUFNfOCB8IEJSX1YpCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ORVRQSE9ORS5oIGIvaW5jbHVkZS9jb25maWdzL05FVFBIT05FLmgKaW5kZXggYmY0Yzg5OS4uNDQ0ZjcyMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL05FVFBIT05FLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL05FVFBIT05FLmgKQEAgLTQ5MSw2ICs0OTEsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIE5BTkQgKi8KKyNkZWZpbmUgQ0ZHX05BTkRfTEVHQUNZCiAjZGVmaW5lIENGR19OQU5EX0JBU0UJCU5BTkRfQkFTRQogI2RlZmluZSBDT05GSUdfTVREX05BTkRfRUNDX0pGRlMyCiAjZGVmaW5lIENPTkZJR19NVERfTkFORF9WRVJJRllfV1JJVEUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9ORVRUQTIuaCBiL2luY2x1ZGUvY29uZmlncy9ORVRUQTIuaAppbmRleCA1MjljYjRjLi5lMjBlNzI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTkVUVEEyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL05FVFRBMi5oCkBAIC00OTEsNiArNDkxLDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBOQU5EICovCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQogI2RlZmluZSBDRkdfTkFORF9CQVNFCQlOQU5EX0JBU0UKICNkZWZpbmUgQ09ORklHX01URF9OQU5EX0VDQ19KRkZTMgogI2RlZmluZSBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTkVUVklBLmggYi9pbmNsdWRlL2NvbmZpZ3MvTkVUVklBLmgKaW5kZXggZGM2YjE1Zi4uZTMwYmUwOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL05FVFZJQS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9ORVRWSUEuaApAQCAtMzg3LDYgKzM4Nyw4IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAorI2RlZmluZSBDRkdfTkFORF9MRUdBQ1kKKwogI2lmIGRlZmluZWQoQ09ORklHX05FVFZJQV9WRVJTSU9OKSAmJiBDT05GSUdfTkVUVklBX1ZFUlNJT04gPj0gMgogCiAvKiBOQU5EICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUENJUFBDMi5oIGIvaW5jbHVkZS9jb25maWdzL1BDSVBQQzIuaAppbmRleCBkMDM3MDZlLi4zYTk3ZmJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUENJUFBDMi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QQ0lQUEMyLmgKQEAgLTc3LDYgKzc3LDcgQEAKICAqLwogI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgogCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQogCiAvKgogICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1BDSVBQQzYuaCBiL2luY2x1ZGUvY29uZmlncy9QQ0lQUEM2LmgKaW5kZXggOTJiMmY3Yy4uMTMwYmViNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BDSVBQQzYuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvUENJUFBDNi5oCkBAIC03OSw2ICs3OSw3IEBACiAgKi8KICNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KIAorI2RlZmluZSBDRkdfTkFORF9MRUdBQ1kKIAogLyoKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QSVA0MDUuaCBiL2luY2x1ZGUvY29uZmlncy9QSVA0MDUuaAppbmRleCA5NjY4ZmIwLi44MDZlOTVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUElQNDA1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BJUDQwNS5oCkBAIC01MCw3ICs1MCw2IEBACiAJCQlDRkdfQ01EX1BDSQl8IFwKIAkJCUNGR19DTURfQ0FDSEUJfCBcCiAJCQlDRkdfQ01EX0lSUQl8IFwKLQkJCUNGR19DTURfRUNITwl8IFwKIAkJCUNGR19DTURfRUVQUk9NCXwgXAogCQkJQ0ZHX0NNRF9JMkMJfCBcCiAJCQlDRkdfQ01EX1JFR0lORk8gfCBcCkBAIC02OSw2ICs2OCw4IEBACiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTICAoaWYgYW55KSAqLwogI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgogCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQorCiAjZGVmaW5lCSBDRkdfSFVTSF9QQVJTRVIKICNkZWZpbmUJIENGR19QUk9NUFRfSFVTSF9QUzIgIj4gIgogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUExVNDA1LmggYi9pbmNsdWRlL2NvbmZpZ3MvUExVNDA1LmgKaW5kZXggNTRlY2ZhNC4uZGQ1ZDgzMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BMVTQwNS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QTFU0MDUuaApAQCAtMTYwLDYgKzE2MCw4IEBACiAgKiBOQU5ELUZMQVNIIHN0dWZmCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KKyNkZWZpbmUgQ0ZHX05BTkRfTEVHQUNZCisKICNkZWZpbmUgQ0ZHX01BWF9OQU5EX0RFVklDRQkxCS8qIE1heCBudW1iZXIgb2YgTkFORCBkZXZpY2VzCQkqLwogI2RlZmluZSBTRUNUT1JTSVpFIDUxMgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUE01MjAuaCBiL2luY2x1ZGUvY29uZmlncy9QTTUyMC5oCmluZGV4IDgxMmJmZDAuLjljMjQxZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QTTUyMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QTTUyMC5oCkBAIC0xMDEsNiArMTAxLDggQEAKICNkZWZpbmUgQUREX0RPQ19DTUQgICAgICAgICAgICAgMAogI2Vsc2UKICNkZWZpbmUgQUREX0RPQ19DTUQgICAgICAgICAgICAgQ0ZHX0NNRF9ET0MKKy8qIERvQyByZXF1aXJlcyBsZWdhY3kgTkFORCBmb3Igbm93ICovCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQogI2VuZGlmCiAKIC8qCkBAIC0zMjcsMTEgKzMyOSwxMSBAQAogI2RlZmluZSBDRkdfQ1MwX1NJWkUJCUNGR19CT09UUk9NX1NJWkUKICNkZWZpbmUgQ0ZHX0NTMV9TVEFSVAkJQ0ZHX0ZMQVNIX0JBU0UKICNkZWZpbmUgQ0ZHX0NTMV9TSVpFCQlDRkdfRkxBU0hfU0laRQotI2RlZmluZSBDRkdfQ1MxX0NGRwkJMHgwMDA0ZmIwMAorI2RlZmluZSBDRkdfQ1MxX0NGRwkJMHgwMDA0RkYwMAogI2Vsc2UKICNkZWZpbmUgQ0ZHX0JPT1RDU19TVEFSVAlDRkdfRkxBU0hfQkFTRQogI2RlZmluZSBDRkdfQk9PVENTX1NJWkUJCUNGR19GTEFTSF9TSVpFCi0jZGVmaW5lIENGR19CT09UQ1NfQ0ZHCQkweDAwMDRmYjAwCisjZGVmaW5lIENGR19CT09UQ1NfQ0ZHCQkweDAwMDRGRjAwCiAjZGVmaW5lIENGR19DUzBfU1RBUlQJCUNGR19GTEFTSF9CQVNFCiAjZGVmaW5lIENGR19DUzBfU0laRQkJQ0ZHX0ZMQVNIX1NJWkUKICNkZWZpbmUgQ0ZHX0NTMV9TVEFSVAkJQ0ZHX0RPQ19CQVNFCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUE04MjYuaCBiL2luY2x1ZGUvY29uZmlncy9QTTgyNi5oCmluZGV4IDZlNWUzYmIuLjg4ZmRiNTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QTTgyNi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QTTgyNi5oCkBAIC0xODAsNiArMTgwLDggQEAKIC8qIHRoaXMgbXVzdCBiZSBpbmNsdWRlZCBBRlRFUiB0aGUgZGVmaW5pdGlvbiBvZiBDT05GSUdfQ09NTUFORFMgKGlmIGFueSkgKi8KICNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KIAorI2RlZmluZSBDRkdfTkFORF9MRUdBQ1kKKwogLyoKICAqIERpc2stT24tQ2hpcCBjb25maWd1cmF0aW9uCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QTTgyOC5oIGIvaW5jbHVkZS9jb25maWdzL1BNODI4LmgKaW5kZXggOTgyYTFmOC4uMzdlZTk3NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BNODI4LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BNODI4LmgKQEAgLTE4Myw2ICsxODMsNyBAQAogLyoKICAqIERpc2stT24tQ2hpcCBjb25maWd1cmF0aW9uCiAgKi8KKyNkZWZpbmUgQ0ZHX05BTkRfTEVHQUNZCiAKICNkZWZpbmUgQ0ZHX0RPQ19TSE9SVF9USU1FT1VUCiAjZGVmaW5lIENGR19NQVhfRE9DX0RFVklDRQkxCS8qIE1heCBudW1iZXIgb2YgRE9DIGRldmljZXMJKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QTUM0MDUuaCBiL2luY2x1ZGUvY29uZmlncy9QTUM0MDUuaAppbmRleCA4YmNhYjBiLi42ZTBiZDdmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUE1DNDA1LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BNQzQwNS5oCkBAIC01Myw5ICs1MywxNSBAQAogI2RlZmluZSBDT05GSUdfTE9BRFNfRUNITwkxCS8qIGVjaG8gb24gZm9yIHNlcmlhbCBkb3dubG9hZAkqLwogI2RlZmluZSBDRkdfTE9BRFNfQkFVRF9DSEFOR0UJMQkvKiBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2UJKi8KIAorI2RlZmluZSBDT05GSUdfTkVUX01VTFRJCTEKKyN1bmRlZiAgQ09ORklHX0hBU19FVEgxCisKICNkZWZpbmUgQ09ORklHX01JSQkJMQkvKiBNSUkgUEhZIG1hbmFnZW1lbnQJCSovCiAjZGVmaW5lIENPTkZJR19QSFlfQUREUgkJMAkvKiBQSFkgYWRkcmVzcwkJCSovCiAjZGVmaW5lIENPTkZJR19MWFQ5NzFfTk9fU0xFRVAgIDEgICAgICAgLyogZGlzYWJsZSBzbGVlcCBtb2RlIGluIExYVDk3MSAqLworI2RlZmluZSBDT05GSUdfUkVTRVRfUEhZX1IgICAgICAxICAgICAgIC8qIHVzZSByZXNldF9waHkoKSB0byBkaXNhYmxlIHBoeSBzbGVlcCBtb2RlICovCisKKyNkZWZpbmUgQ09ORklHX05FVENPTlNPTEUJCS8qIGluY2x1ZGUgTmV0Q29uc29sZSBzdXBwb3J0CSovCiAKICNkZWZpbmUgQ09ORklHX0NPTU1BTkRTCSAgICAgICggQ09ORklHX0NNRF9ERkwJfCBcCiAJCQkJQ0ZHX0NNRF9CU1AJfCBcCkBAIC0xNTQsMTUgKzE2MCwyNCBAQAogI2RlZmluZSBDT05GSUdfUENJX0JPT1RERUxBWSAgICAwICAgICAgIC8qIGVuYWJsZSBwY2kgYm9vdGRlbGF5IHZhcmlhYmxlKi8KIAogI2RlZmluZSBDRkdfUENJX1NVQlNZU19WRU5ET1JJRCAweDEyRkUgIC8qIFBDSSBWZW5kb3IgSUQ6IGVzZCBnbWJoICAgICAgKi8KLSNkZWZpbmUgQ0ZHX1BDSV9TVUJTWVNfREVWSUNFSUQgMHgwNDA4ICAvKiBQQ0kgRGV2aWNlIElEOiBQTUMtNDA1ICAgICAgICovCisjZGVmaW5lIENGR19QQ0lfU1VCU1lTX0RFVklDRUlEX05PTk1PTkFSQ0ggMHgwNDA4ICAvKiBQQ0kgRGV2aWNlIElEOiBOb24tTW9uYXJjaCAqLworI2RlZmluZSBDRkdfUENJX1NVQlNZU19ERVZJQ0VJRF9NT05BUkNIIDB4MDQwOSAgICAgLyogUENJIERldmljZSBJRDogTW9uYXJjaCAqLworI2RlZmluZSBDRkdfUENJX1NVQlNZU19ERVZJQ0VJRCBwbWM0MDVfcGNpX3N1YnN5c19kZXZpY2VpZCgpCisKICNkZWZpbmUgQ0ZHX1BDSV9DTEFTU0NPREUgICAgICAgMHgwYjIwICAvKiBQQ0kgQ2xhc3MgQ29kZTogUHJvY2Vzc29yL1BQQyovCi0jZGVmaW5lIENGR19QQ0lfUFRNMUxBICAweDAwMDAwMDAwICAgICAgLyogcG9pbnQgdG8gc2RyYW0gICAgICAgICAgICAgICAqLwotI2RlZmluZSBDRkdfUENJX1BUTTFNUyAgMHhmYzAwMDAwMSAgICAgIC8qIDY0TUIsIGVuYWJsZSBoYXJkLXdpcmVkIHRvIDEgKi8KKworI2RlZmluZSBDRkdfUENJX1BUTTFMQSAgKGJkLT5iaV9tZW1zdGFydCkgLyogcG9pbnQgdG8gc2RyYW0gICAgICAgICAgICAgICAqLworI2RlZmluZSBDRkdfUENJX1BUTTFNUyAgKH4oYmQtPmJpX21lbXNpemUgLSAxKSB8IDEpIC8qIG1lbXNpemUsIGVuYWJsZSBoYXJkLXdpcmVkIHRvIDEgKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0xUENJIDB4MDAwMDAwMDAgICAgICAvKiBIb3N0OiB1c2UgdGhpcyBwY2kgYWRkcmVzcyAgICovCisjaWYgMQorI2RlZmluZSBDRkdfUENJX1BUTTJMQQkweGVmMDAwMDAwCS8qIHBvaW50IHRvIGludGVybmFsIHJlZ3MgICAgICAgKi8KKyNkZWZpbmUgQ0ZHX1BDSV9QVE0yTVMgIDB4ZmYwMDAwMDEgICAgICAvKiAxNk1CLCBlbmFibGUgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIENGR19QQ0lfUFRNMlBDSSAweDAwMDAwMDAwICAgICAgLyogSG9zdDogdXNlIHRoaXMgcGNpIGFkZHJlc3MgICAqLworI2Vsc2UgLyogb2xkIG1hcHBpbmcgKi8KICNkZWZpbmUgQ0ZHX1BDSV9QVE0yTEEgIDB4ZmZjMDAwMDAgICAgICAvKiBwb2ludCB0byBmbGFzaCAgICAgICAgICAgICAgICovCiAjZGVmaW5lIENGR19QQ0lfUFRNMk1TICAweGZmYzAwMDAxICAgICAgLyogNE1CLCBlbmFibGUgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBDRkdfUENJX1BUTTJQQ0kgMHgwNDAwMDAwMCAgICAgIC8qIEhvc3Q6IHVzZSB0aGlzIHBjaSBhZGRyZXNzICAgKi8KLQorI2VuZGlmCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTdGFydCBhZGRyZXNzZXMgZm9yIHRoZSBmaW5hbCBtZW1vcnkgY29uZmlndXJhdGlvbgogICogKFNldCB1cCBieSB0aGUgc3RhcnR1cCBjb2RlKQpAQCAtMjU5LDcgKzI3NCw3IEBACiAjZGVmaW5lIEZMQVNIMV9CQQkweEZFMDAwMDAwCSAgICAvKiBGTEFTSCAxIEJhc2UgQWRkcmVzcwkJKi8KICNkZWZpbmUgQ0FOX0JBCQkweEYwMDAwMDAwCSAgICAvKiBDQU4gQmFzZSBBZGRyZXNzCQkJKi8KICNkZWZpbmUgUlRDX0JBCQkweEYwMDAwNTAwCSAgICAvKiBSVEMgQmFzZSBBZGRyZXNzCQkJKi8KLSNkZWZpbmUgQ0ZfQkEJCTB4RjAxMDAwMDAJICAgIC8qIENvbXBhY3RGbGFzaCBCYXNlIEFkZHJlc3MJKi8KKyNkZWZpbmUgTlZSQU1fQkEgICAgICAgIDB4RjAyMDAwMDAgICAgICAgICAgLyogTlZSQU0gQmFzZSBBZGRyZXNzICAgICAgICAgICAgICAgKi8KIAogLyogTWVtb3J5IEJhbmsgMCAoRmxhc2ggQmFuayAwKSBpbml0aWFsaXphdGlvbgkJCQkJKi8KICNkZWZpbmUgQ0ZHX0VCQ19QQjBBUAkweDkyMDE1NDgwCkBAIC0yNzMsOSArMjg4LDExIEBACiAjZGVmaW5lIENGR19FQkNfUEIyQVAJMHgwMzAwMDQ0MCAgIC8qIFRXVD01LFRIPTIsQ1NOPTAsT0VOPTAsV0JOPTAsV0JGPTAgICAgICAqLwogI2RlZmluZSBDRkdfRUJDX1BCMkNSCUNBTl9CQSB8IDB4MTgwMDAgICAgLyogQkFTPTB4RjAwLEJTPTFNQixCVT1SL1csQlc9OGJpdAkqLwogCi0vKiBNZW1vcnkgQmFuayAzIChDb21wYWN0Rmxhc2ggSURFLCBGUEdBIGludGVybmFsKSBpbml0aWFsaXphdGlvbgkJKi8KLSNkZWZpbmUgQ0ZHX0VCQ19QQjNBUAkweDAxMDA1OUMwICAgLyogQldUPTIsV0JOPTEsV0JGPTEsVEg9MSxSRT0xLFNPUj0xLEJFTT0xICovCi0jZGVmaW5lIENGR19FQkNfUEIzQ1IJQ0ZfQkEgfCAweDFBMDAwCSAgICAvKiBCQVM9MHhGMDEsQlM9MU1CLEJVPVIvVyxCVz0xNmJpdCAqLworLyogTWVtb3J5IEJhbmsgMyAtPiB1bnVzZWQgKi8KKworLyogTWVtb3J5IEJhbmsgNCAoTlZSQU0pIGluaXRpYWxpemF0aW9uCQkJCQkqLworI2RlZmluZSBDRkdfRUJDX1BCNEFQCTB4MDMwMDA0NDAgICAvKiBUV1Q9NSxUSD0yLENTTj0wLE9FTj0wLFdCTj0wLFdCRj0wICAgICAgKi8KKyNkZWZpbmUgQ0ZHX0VCQ19QQjRDUglOVlJBTV9CQSB8IDB4MTgwMDAgICAgLyogQkFTPTB4RjAwLEJTPTFNQixCVT1SL1csQlc9OGJpdAkqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBGUEdBIHN0dWZmCkBAIC0yOTMsNiArMzEwLDE1IEBACiAjZGVmaW5lIENGR19WWFdPUktTX01BQ19QVFIJMHgwMDAwMDAwMAkvKiBQYXNzIEV0aGVybmV0IE1BQyB0byBWeFdvcmtzICovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEdQSU9zCisgKi8KKyNkZWZpbmUgQ0ZHX05PTk1PTkFSQ0gJCSgweDgwMDAwMDAwID4+IDE0KSAgIC8qIEdQSU8yNCAqLworI2RlZmluZSBDRkdfWEVSRUFEWQkJKDB4ODAwMDAwMDAgPj4gMTUpICAgLyogR1BJTzE1ICovCisjZGVmaW5lIENGR19JTlRBX0ZBS0UJCSgweDgwMDAwMDAwID4+IDE5KSAgIC8qIEdQSU8xOSAqLworI2RlZmluZSBDRkdfU0VMRl9SU1QJCSgweDgwMDAwMDAwID4+IDIxKSAgIC8qIEdQSU8yMSAqLworI2RlZmluZSBDRkdfUkVWMV8yCQkoMHg4MDAwMDAwMCA+PiAyMykgICAvKiBHUElPMjMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBkYXRhIGNhY2hlKQogICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QUENoYW1lbGVvbkVWQi5oIGIvaW5jbHVkZS9jb25maWdzL1BQQ2hhbWVsZW9uRVZCLmgKaW5kZXggN2NhODI3Zi4uZTExNTVlMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1BQQ2hhbWVsZW9uRVZCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1BQQ2hhbWVsZW9uRVZCLmgKQEAgLTE4OCwzNCArMTg4LDM0IEBACiAgKiBOQU5ELUZMQVNIIHN0dWZmCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KKy8qCisgKiBuYW5kIGRldmljZSAxIG9uIGRhdmUgKFBQQ2hhbWVsZW9uRVZCKSBuZWVkcyBtb3JlIHRpbWUsCisgKiBzbyB3ZSBqdXN0IGludHJvZHVjZSBhZGRpdGlvbmFsIHdhaXQgaW4gbmFuZF93YWl0KCksCisgKiBlZmZlY3RpdmVseSBmb3IgYm90aCBkZXZpY2VzLgorICovCisjZGVmaW5lIFBQQ0hBTUVMT05fTkFORF9USU1FUl9IQUNLCisKICNkZWZpbmUgQ0ZHX05BTkQwX0JBU0UgMHhGRjQwMDAwMAogI2RlZmluZSBDRkdfTkFORDFfQkFTRSAweEZGMDAwMDAwCisjZGVmaW5lIENGR19OQU5EX0JBU0VfTElTVAl7IENGR19OQU5EMF9CQVNFLCBDRkdfTkFORDFfQkFTRSB9CisjZGVmaW5lIE5BTkRfQklHX0RFTEFZX1VTCTI1CisjZGVmaW5lIENGR19NQVhfTkFORF9ERVZJQ0UJMgkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcyAqLwogCi0jZGVmaW5lIENGR19NQVhfTkFORF9ERVZJQ0UJMgkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcwkJKi8KLSNkZWZpbmUgU0VDVE9SU0laRSA1MTIKLSNkZWZpbmUgTkFORF9OT19SQgotCi0jZGVmaW5lIEFERFJfQ09MVU1OIDEKLSNkZWZpbmUgQUREUl9QQUdFIDIKLSNkZWZpbmUgQUREUl9DT0xVTU5fUEFHRSAzCi0KLSNkZWZpbmUgTkFORF9DaGlwSURfVU5LTk9XTgkweDAwCi0jZGVmaW5lIE5BTkRfTUFYX0ZMT09SUyAxCiAjZGVmaW5lIE5BTkRfTUFYX0NISVBTIDEKIAogI2RlZmluZSBDRkdfTkFORDBfQ0UgICgweDgwMDAwMDAwID4+IDEpCSAvKiBvdXIgQ0UgaXMgR1BJTzEgKi8KKyNkZWZpbmUgQ0ZHX05BTkQwX1JEWSAoMHg4MDAwMDAwMCA+PiA0KQkgLyogb3VyIFJEWSBpcyBHUElPNCAqLwogI2RlZmluZSBDRkdfTkFORDBfQ0xFICgweDgwMDAwMDAwID4+IDIpCSAvKiBvdXIgQ0xFIGlzIEdQSU8yICovCiAjZGVmaW5lIENGR19OQU5EMF9BTEUgKDB4ODAwMDAwMDAgPj4gMykJIC8qIG91ciBBTEUgaXMgR1BJTzMgKi8KLSNkZWZpbmUgQ0ZHX05BTkQwX1JEWSAoMHg4MDAwMDAwMCA+PiA0KQkgLyogb3VyIFJEWSBpcyBHUElPNCAqLwogCiAjZGVmaW5lIENGR19OQU5EMV9DRSAgKDB4ODAwMDAwMDAgPj4gMTQpICAvKiBvdXIgQ0UgaXMgR1BJTzE0ICovCisjZGVmaW5lIENGR19OQU5EMV9SRFkgKDB4ODAwMDAwMDAgPj4gMzEpICAvKiBvdXIgUkRZIGlzIEdQSU8zMSAqLwogI2RlZmluZSBDRkdfTkFORDFfQ0xFICgweDgwMDAwMDAwID4+IDE1KSAgLyogb3VyIENMRSBpcyBHUElPMTUgKi8KICNkZWZpbmUgQ0ZHX05BTkQxX0FMRSAoMHg4MDAwMDAwMCA+PiAxNikgIC8qIG91ciBBTEUgaXMgR1BJTzE2ICovCi0jZGVmaW5lIENGR19OQU5EMV9SRFkgKDB4ODAwMDAwMDAgPj4gMzEpICAvKiBvdXIgUkRZIGlzIEdQSU8zMSAqLwogCi0jZGVmaW5lIE5BTkRfRElTQUJMRV9DRShuYW5kKSBkbyBcCisjZGVmaW5lIE1BQ1JPX05BTkRfRElTQUJMRV9DRShuYW5kcHRyKSBkbyBcCiB7IFwKLQlzd2l0Y2goKHVuc2lnbmVkIGxvbmcpKCgoc3RydWN0IG5hbmRfY2hpcCAqKW5hbmQpLT5JT19BRERSKSkgXAorCXN3aXRjaCgodW5zaWduZWQgbG9uZyluYW5kcHRyKSBcCiAJeyBcCiAJICAgIGNhc2UgQ0ZHX05BTkQwX0JBU0U6IFwKIAkJb3V0MzIoR1BJTzBfT1IsIGluMzIoR1BJTzBfT1IpIHwgQ0ZHX05BTkQwX0NFKTsgXApAQCAtMjI2LDkgKzIyNiw5IEBACiAJfSBcCiB9IHdoaWxlKDApCiAKLSNkZWZpbmUgTkFORF9FTkFCTEVfQ0UobmFuZCkgZG8gXAorI2RlZmluZSBNQUNST19OQU5EX0VOQUJMRV9DRShuYW5kcHRyKSBkbyBcCiB7IFwKLQlzd2l0Y2goKHVuc2lnbmVkIGxvbmcpKCgoc3RydWN0IG5hbmRfY2hpcCAqKW5hbmQpLT5JT19BRERSKSkgXAorCXN3aXRjaCgodW5zaWduZWQgbG9uZyluYW5kcHRyKSBcCiAJeyBcCiAJICAgIGNhc2UgQ0ZHX05BTkQwX0JBU0U6IFwKIAkJb3V0MzIoR1BJTzBfT1IsIGluMzIoR1BJTzBfT1IpICYgfkNGR19OQU5EMF9DRSk7IFwKQEAgLTIzOSw3ICsyMzksNyBAQAogCX0gXAogfSB3aGlsZSgwKQogCi0jZGVmaW5lIE5BTkRfQ1RMX0NMUkFMRShuYW5kcHRyKSBkbyBcCisjZGVmaW5lIE1BQ1JPX05BTkRfQ1RMX0NMUkFMRShuYW5kcHRyKSBkbyBcCiB7IFwKIAlzd2l0Y2goKHVuc2lnbmVkIGxvbmcpbmFuZHB0cikgXAogCXsgXApAQCAtMjUyLDcgKzI1Miw3IEBACiAJfSBcCiB9IHdoaWxlKDApCiAKLSNkZWZpbmUgTkFORF9DVExfU0VUQUxFKG5hbmRwdHIpIGRvIFwKKyNkZWZpbmUgTUFDUk9fTkFORF9DVExfU0VUQUxFKG5hbmRwdHIpIGRvIFwKIHsgXAogCXN3aXRjaCgodW5zaWduZWQgbG9uZyluYW5kcHRyKSBcCiAJeyBcCkBAIC0yNjUsNyArMjY1LDcgQEAKIAl9IFwKIH0gd2hpbGUoMCkKIAotI2RlZmluZSBOQU5EX0NUTF9DTFJDTEUobmFuZHB0cikgZG8gXAorI2RlZmluZSBNQUNST19OQU5EX0NUTF9DTFJDTEUobmFuZHB0cikgZG8gXAogeyBcCiAJc3dpdGNoKCh1bnNpZ25lZCBsb25nKW5hbmRwdHIpIFwKIAl7IFwKQEAgLTI3OCw3ICsyNzgsNyBAQAogCX0gXAogfSB3aGlsZSgwKQogCi0jZGVmaW5lIE5BTkRfQ1RMX1NFVENMRShuYW5kcHRyKSBkbyB7IFwKKyNkZWZpbmUgTUFDUk9fTkFORF9DVExfU0VUQ0xFKG5hbmRwdHIpIGRvIHsgXAogCXN3aXRjaCgodW5zaWduZWQgbG9uZyluYW5kcHRyKSB7IFwKIAljYXNlIENGR19OQU5EMF9CQVNFOiBcCiAJCW91dDMyKEdQSU8wX09SLCBpbjMyKEdQSU8wX09SKSB8IENGR19OQU5EMF9DTEUpOyBcCkBAIC0yODksNiArMjg5LDE3IEBACiAJfSBcCiB9IHdoaWxlKDApCiAKKyNpZiAwCisjZGVmaW5lIFNFQ1RPUlNJWkUgNTEyCisjZGVmaW5lIE5BTkRfTk9fUkIKKworI2RlZmluZSBBRERSX0NPTFVNTiAxCisjZGVmaW5lIEFERFJfUEFHRSAyCisjZGVmaW5lIEFERFJfQ09MVU1OX1BBR0UgMworCisjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04JMHgwMAorI2RlZmluZSBOQU5EX01BWF9GTE9PUlMgMQorCiAjaWZkZWYgTkFORF9OT19SQgogLyogY29uc3RhbnQgZGVsYXkgKHNlZSBhbHNvIHRSIGluIHRoZSBkYXRhc2hlZXQpICovCiAjZGVmaW5lIE5BTkRfV0FJVF9SRUFEWShuYW5kKSBkbyB7IFwKQEAgLTMwMyw3ICszMTQsNyBAQAogI2RlZmluZSBXUklURV9OQU5EX0FERFJFU1MoZCwgYWRyKSBkb3sgKih2b2xhdGlsZSBfX3U4ICopKCh1bnNpZ25lZCBsb25nKWFkcikgPSAoX191OCkoZCk7IH0gd2hpbGUoMCkKICNkZWZpbmUgV1JJVEVfTkFORChkLCBhZHIpIGRveyAqKHZvbGF0aWxlIF9fdTggKikoKHVuc2lnbmVkIGxvbmcpYWRyKSA9IChfX3U4KWQ7IH0gd2hpbGUoMCkKICNkZWZpbmUgUkVBRF9OQU5EKGFkcikgKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyKSgqKHZvbGF0aWxlIF9fdTggKikodW5zaWduZWQgbG9uZylhZHIpKQotCisjZW5kaWYKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFBDSSBzdHVmZgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzM4LDE2ICszNDksMTYgQEAKICNkZWZpbmUgQ0ZHX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKIAogLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IJKi8KKy8qCiAjZGVmaW5lIENGR19GTEFTSF9CQVNFCQkweEZGRkMwMDAwCiAjZGVmaW5lIENGR19NT05JVE9SX0JBU0UJQ0ZHX0ZMQVNIX0JBU0UKICNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQkoMjU2ICogMTAyNCkKKyovCiAKIC8qIFJlc2VydmUgMzIwIGtCIGZvciBNb25pdG9yCSovCi0vKgogI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkJMHhGRkZCMDAwMAogI2RlZmluZSBDRkdfTU9OSVRPUl9CQVNFCUNGR19GTEFTSF9CQVNFCiAjZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDMyMCAqIDEwMjQpCi0qLwogCiAjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkoMjU2ICogMTAyNCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIG1hbGxvYygpCSovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9SQkM4MjMuaCBiL2luY2x1ZGUvY29uZmlncy9SQkM4MjMuaAppbmRleCAyNDJjODM3Li4yMTk0NWEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUkJDODIzLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1JCQzgyMy5oCkBAIC0zMjYsNiArMzI2LDggQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIERpc2stT24tQ2hpcCBjb25maWd1cmF0aW9uCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBDRkdfTkFORF9MRUdBQ1kKKwogI2RlZmluZSBDRkdfTUFYX0RPQ19ERVZJQ0UJMQkvKiBNYXggbnVtYmVyIG9mIERPQyBkZXZpY2VzCQkqLwogI2RlZmluZSBDRkdfRE9DX1NIT1JUX1RJTUVPVVQKICNkZWZpbmUgQ0ZHX0RPQ19TVVBQT1JUXzIwMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9SUFhsaXRlLmggYi9pbmNsdWRlL2NvbmZpZ3MvUlBYbGl0ZS5oCmluZGV4IDZiNjUwMzEuLjQ4YWRhMGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9SUFhsaXRlLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1JQWGxpdGUuaApAQCAtMjEsMTAgKzIxLDYgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotLyoKLSAqIGJvYXJkL2NvbmZpZy5oIC0gY29uZmlndXJhdGlvbiBvcHRpb25zLCBib2FyZCBzcGVjaWZpYwotICovCi0KIC8qIFlvby4gSm9uZ2hvb24sIElQb25lLCB5b290aEBpcG9uZS5jby5rcgogICogVS1Cb290IHBvcnQgb24gUlBYbGl0ZSBib2FyZAogICovCkBAIC01Myw4ICs0OSw2IEBACiAjZGVmaW5lIENPTkZJR19CT09UREVMQVkJNQkvKiBhdXRvYm9vdCBhZnRlciA1IHNlY29uZHMJKi8KICNlbmRpZgogCi0jZGVmaW5lCUNPTkZJR19DTE9DS1NfSU5fTUhaCTEJLyogY2xvY2tzIHBhc3NzZWQgdG8gTGludXggaW4gTUh6ICovCi0KICN1bmRlZglDT05GSUdfQk9PVEFSR1MKICNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECQkJCQkJCVwKIAkiYm9vdHA7ICIgCQkJCQkJCQlcCkBAIC02NSw2ICs1OSw3IEBACiAjZGVmaW5lIENPTkZJR19MT0FEU19FQ0hPCTEJLyogZWNobyBvbiBmb3Igc2VyaWFsIGRvd25sb2FkCSovCiAjdW5kZWYJQ0ZHX0xPQURTX0JBVURfQ0hBTkdFCQkvKiBkb24ndCBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2UJKi8KIAorI2RlZmluZSBDT05GSUdfQlpJUDIJCS8qIEluY2x1ZGUgc3VwcG9ydCBmb3IgYnppcDIgY29tcHJlc3NlZCBpbWFnZXMgICovCiAjdW5kZWYJQ09ORklHX1dBVENIRE9HCQkJLyogd2F0Y2hkb2cgZGlzYWJsZWQJCSovCiAKICNkZWZpbmUgQ09ORklHX0JPT1RQX01BU0sJKENPTkZJR19CT09UUF9ERUZBVUxUIHwgQ09ORklHX0JPT1RQX0JPT1RGSUxFU0laRSkKQEAgLTg2LDEyICs4MSwxNCBAQAogI2RlZmluZQlDRkdfTUFYQVJHUwkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KICNkZWZpbmUgQ0ZHX0JBUkdTSVpFCUNGR19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwogCi0jZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4MDA0MDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCi0jZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwMEMwMDAwCS8qIDQgLi4uIDEyIE1CIGluIERSQU0JKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfU1RBUlQJMHgwMDQwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCisjZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwMEMwMDAwMAkvKiA0IC4uLiAxMiBNQiBpbiBEUkFNCSovCiAKLSNkZWZpbmUJQ0ZHX0xPQURfQUREUgkJMHgxMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MJKi8KKyNkZWZpbmUgQ0ZHX1JFU0VUX0FERFJFU1MJMHgwOTkwMDAwMAogCi0jZGVmaW5lCUNGR19IWgkJMTAwMAkJLyogZGVjcmVtZW50ZXIgZnJlcTogMSBtcyB0aWNrcwkqLworI2RlZmluZQlDRkdfTE9BRF9BRERSCQkweDQwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcwkqLworCisjZGVmaW5lCUNGR19IWgkJCTEwMDAJCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MJKi8KIAogI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAgfQogCkBAIC0xMjAsMTYgKzExNywxNCBAQAogICogUGxlYXNlIG5vdGUgdGhhdCBDRkdfU0RSQU1fQkFTRSBfbXVzdF8gc3RhcnQgYXQgMAogICovCiAjZGVmaW5lCUNGR19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCi0jZGVmaW5lIENGR19GTEFTSF9CQVNFCTB4RkZDMDAwMDAKLS8qJSUlICNkZWZpbmUgQ0ZHX0ZMQVNIX0JBU0UJCTB4RkZGMDAwMDAgKi8KLSNpZiBkZWZpbmVkKERFQlVHKSB8fCAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9JREUpCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQkweEZGQzAwMDAwCisjZGVmaW5lIENGR19NT05JVE9SX0JBU0UJVEVYVF9CQVNFCiAjZGVmaW5lCUNGR19NT05JVE9SX0xFTgkJKDI1NiA8PCAxMCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IJKi8KKyNpZmRlZiBDT05GSUdfQlpJUDIKKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCSg0MDk2IDw8IDEwKQkvKiBSZXNlcnZlIH40IE1CIGZvciBtYWxsb2MoKSAgICovCiAjZWxzZQotI2RlZmluZQlDRkdfTU9OSVRPUl9MRU4JCSgxMjggPDwgMTApCS8qIFJlc2VydmUgMTI4IGtCIGZvciBNb25pdG9yCSovCi0jZW5kaWYKLSNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQkweEZGRjAwMDAwCi0vKiUlJSAjZGVmaW5lIENGR19NT05JVE9SX0JBU0UJQ0ZHX0ZMQVNIX0JBU0UgKi8KLSNkZWZpbmUJQ0ZHX01BTExPQ19MRU4JCSgxMjggPDwgMTApCS8qIFJlc2VydmUgMTI4IGtCIGZvciBtYWxsb2MoKQkqLworI2RlZmluZSBDRkdfTUFMTE9DX0xFTgkJKDEyOCA8PCAxMCkJLyogUmVzZXJ2ZSAxMjggS0IgZm9yIG1hbGxvYygpICAqLworI2VuZGlmIC8qIENPTkZJR19CWklQMiAqLwogCiAvKgogICogRm9yIGJvb3RpbmcgTGludXgsIHRoZSBib2FyZCBpbmZvIGFuZCBjb21tYW5kIGxpbmUgZGF0YQpAQCAtMTQ3LDkgKzE0MiwxMyBAQAogI2RlZmluZSBDRkdfRkxBU0hfRVJBU0VfVE9VVAkxMjAwMDAJLyogVGltZW91dCBmb3IgRmxhc2ggRXJhc2UgKGluIG1zKQkqLwogI2RlZmluZSBDRkdfRkxBU0hfV1JJVEVfVE9VVAk1MDAJLyogVGltZW91dCBmb3IgRmxhc2ggV3JpdGUgKGluIG1zKQkqLwogCisjZGVmaW5lCUNGR19ESVJFQ1RfRkxBU0hfVEZUUAorCiAjZGVmaW5lCUNGR19FTlZfSVNfSU5fRkxBU0gJMQotI2RlZmluZQlDRkdfRU5WX09GRlNFVAkJMHg4MDAwCS8qICAgT2Zmc2V0ICAgb2YgRW52aXJvbm1lbnQgU2VjdG9yCSovCi0jZGVmaW5lCUNGR19FTlZfU0laRQkJMHg0MDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yCSovCisjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4NDAwMDAgCS8qIFdlIHVzZSBvbmUgY29tcGxldGUgc2VjdG9yCSovCisjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UgKyBDRkdfTU9OSVRPUl9MRU4pCisKKyNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogQ2FjaGUgQ29uZmlndXJhdGlvbgpAQCAtMzUyLDEyICszNTEsMTIgQEAKIAogI2RlZmluZSBCQ1NSMF9FTk1PTlhDVlIJMHgwMQkvKiBNb25pdG9yIFhWQ1IgQ29udHJvbCAqLwogI2RlZmluZSBCQ1NSMF9FTk5WUkFNCTB4MDIgCS8qIENTNCMgQ29udHJvbCAqLwotI2RlZmluZSBCQ1NSMF9MRUQ1CQkweDA0CS8qIExFRDUgY29udHJvbCAwPSdvbicgMT0nb2ZmJyAqLwotI2RlZmluZSBCQ1NSMF9MRUQ0CQkweDA4CS8qIExFRDQgY29udHJvbCAwPSdvbicgMT0nb2ZmJyAqLworI2RlZmluZSBCQ1NSMF9MRUQ1CTB4MDQJLyogTEVENSBjb250cm9sIDA9J29uJyAxPSdvZmYnICovCisjZGVmaW5lIEJDU1IwX0xFRDQJMHgwOAkvKiBMRUQ0IGNvbnRyb2wgMD0nb24nIDE9J29mZicgKi8KICNkZWZpbmUgQkNTUjBfRlVMTERQTFgJMHgxMAkvKiBFdGhlcm5ldCBYQ1ZSIENvbnRyb2wgKi8KICNkZWZpbmUgQkNTUjBfQ09MVEVTVAkweDIwCiAjZGVmaW5lIEJDU1IwX0VUSExQQksJMHg0MAotI2RlZmluZSBCQ1NSMF9FVEhFTgkJMHg4MAorI2RlZmluZSBCQ1NSMF9FVEhFTgkweDgwCiAKICNkZWZpbmUgQkNTUjFfUENWQ1RMNwkweDAxCS8qIFBDIFNsb3QgQiBDb250cm9sICovCiAjZGVmaW5lIEJDU1IxX1BDVkNUTDYJMHgwMgpAQCAtMzcxLDIyICszNzAsMTMgQEAKICNkZWZpbmUgQkNTUjJfVVNCU1BECTB4NDAKICNkZWZpbmUgQkNTUjJfVVNCU1VTUAkweDgwCiAKLSNkZWZpbmUgQkNTUjNfQldSVEMJCTB4MDEJLyogUmVhbCBUaW1lIENsb2NrIEJhdHRlcnkgKi8KLSNkZWZpbmUgQkNTUjNfQldOVlIJCTB4MDIJLyogTlZSQU0gQmF0dGVyeSAqLworI2RlZmluZSBCQ1NSM19CV1JUQwkweDAxCS8qIFJlYWwgVGltZSBDbG9jayBCYXR0ZXJ5ICovCisjZGVmaW5lIEJDU1IzX0JXTlZSCTB4MDIJLyogTlZSQU0gQmF0dGVyeSAqLwogI2RlZmluZSBCQ1NSM19SRFlfQlNZCTB4MDQJLyogRmxhc2ggT3BlcmF0aW9uICovCi0jZGVmaW5lIEJDU1IzX1JQWEwJCTB4MDgJLyogUmVzZXJ2ZWQgKHJlYWRzIGJhY2sgJzEnKSAqLwotI2RlZmluZSBCQ1NSM19EMjcJCTB4MTAJLyogRGlwIFN3aXRjaCBzZXR0aW5ncyAqLwotI2RlZmluZSBCQ1NSM19EMjYJCTB4MjAKLSNkZWZpbmUgQkNTUjNfRDI1CQkweDQwCi0jZGVmaW5lIEJDU1IzX0QyNAkJMHg4MAotCi0KLS8qCi0gKiBFbnZpcm9ubWVudCBzZXR0aW5nCi0gKi8KLQotI2RlZmluZSBDT05GSUdfRVRIQUREUgkwMDoxMDpFQzowMDoxRDowQgotI2RlZmluZSBDT05GSUdfSVBBRERSCTE5Mi4xNjguMS42NQotI2RlZmluZSBDT05GSUdfU0VSVkVSSVAJMTkyLjE2OC4xLjI3CisjZGVmaW5lIEJDU1IzX1JQWEwJMHgwOAkvKiBSZXNlcnZlZCAocmVhZHMgYmFjayAnMScpICovCisjZGVmaW5lIEJDU1IzX0QyNwkweDEwCS8qIERpcCBTd2l0Y2ggc2V0dGluZ3MgKi8KKyNkZWZpbmUgQkNTUjNfRDI2CTB4MjAKKyNkZWZpbmUgQkNTUjNfRDI1CTB4NDAKKyNkZWZpbmUgQkNTUjNfRDI0CTB4ODAKIAogI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9SUFhsaXRlX0RXLmggYi9pbmNsdWRlL2NvbmZpZ3MvUlBYbGl0ZV9EVy5oCmluZGV4IDhjZDdkZjEuLjVkMTc3MTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9SUFhsaXRlX0RXLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1JQWGxpdGVfRFcuaApAQCAtNDUsNyArNDUsNyBAQAogICovCiAKIC8qICNkZWZpbmUgREVCVUcJMSAqLwotLyogI2lmZGVmIERFUExPWU1FTlQJMSAqLworLyogI2RlZmluZSBERVBMT1lNRU5UIAkxICovCiAKICN1bmRlZglDT05GSUdfTVBDODYwCiAjZGVmaW5lIENPTkZJR19NUEM4MjMJCTEJLyogVGhpcyBpcyBhIE1QQzgyM2UgQ1BVLiAqLwpAQCAtMTE3LDYgKzExNywzNiBAQAogCiAjZGVmaW5lIENPTkZJR19CT09UUF9NQVNLCShDT05GSUdfQk9PVFBfREVGQVVMVCB8IENPTkZJR19CT09UUF9CT09URklMRVNJWkUpCiAKKyNpZiAxICAgICAgICAgIC8qIEVuYWJsZSB0aGlzIHN0YWZmIGNvdWxkIG1ha2UgaW1hZ2UgZW5sYXJnZSBhYm91dCAyNUtCLiBNYXNrIGl0IGlmIHlvdQorICAgICAgICAgICAgICAgICAgZG9uJ3Qgd2FudCB0aGUgYWR2YW5jZWQgZnVuY3Rpb24gKi8KKworI2lmZGVmICBDT05GSUdfU1BMQVNIX1NDUkVFTgorI2RlZmluZSBDT05GSUdfQ09NTUFORFMgICAgICAgKCBDT05GSUdfQ01EX0RGTCAgfCBcCisJCQkJQ0ZHX0NNRF9BU0tFTlYJfCBcCisJCQkJQ0ZHX0NNRF9CTVAgICAgIHwgXAorCQkJCUNGR19DTURfSkZGUzIgICB8IFwKKwkJCQlDRkdfQ01EX1BJTkcgICAgfCBcCisJCQkJQ0ZHX0NNRF9FTEYgICAgIHwgXAorCQkJCUNGR19DTURfUkVHSU5GTyB8IFwKKwkJCQlDRkdfQ01EX0RIQ1AgICAgKQorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX0NPTU1BTkRTICAgICAgICggQ09ORklHX0NNRF9ERkwgIHwgXAorCQkgICAgICAgICAgICAgICAgQ0ZHX0NNRF9BU0tFTlYgIHwgXAorCQkJCUNGR19DTURfSkZGUzIgICB8IFwKKwkJCQlDRkdfQ01EX1BJTkcgICAgfCBcCisJCQkJQ0ZHX0NNRF9FTEYgICAgIHwgXAorCQkJCUNGR19DTURfUkVHSU5GTyB8IFwKKwkJCQlDRkdfQ01EX0RIQ1AgICAgKQorI2VuZGlmICAvKiBDT05GSUdfU1BMQVNIX1NDUkVFTiAqLworCisvKiB0ZXN0LW9ubHkgKi8KKyNkZWZpbmUgQ0ZHX0pGRlMyX0ZJUlNUX0JBTksgICAgMCAgICAgICAgICAgLyogdXNlIGZvciBKRkZTMiAqLworI2RlZmluZSBDRkdfSkZGUzJfTlVNX0JBTktTICAgICAxICAgICAgICAgICAvKiAhIHNlY29uZCBiYW5rIGNvbnRhaW5zIFUtQm9vdCAqLworCisjZGVmaW5lIENPTkZJR19ORVRDT05TT0xFCisKKyNlbmRpZiAgLyogMSAqLworCiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCiAjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CiAKQEAgLTQ0Niw1ICs0NzYsNiBAQAogI2RlZmluZSBDT05GSUdfU0VSVkVSSVAgMTcyLjE2LjExNS42CiAjZGVmaW5lIENPTkZJR19ST09UUEFUSCAvd29ya3NwYWNlL215ZmlsZXN5c3RlbS90YXJnZXQvCiAjZGVmaW5lIENPTkZJR19CT09URklMRSB1SW1hZ2UucnB4dXNiCisjZGVmaW5lIENPTkZJR19IT1NUTkFNRSBMSVRFX0gxX0RXCiAKICNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUlBYc3VwZXIuaCBiL2luY2x1ZGUvY29uZmlncy9SUFhzdXBlci5oCmluZGV4IDZhZTk0MDMuLjQ1OTA3YWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9SUFhzdXBlci5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9SUFhzdXBlci5oCkBAIC0xNTQsNyArMTU0LDYgQEAKICNkZWZpbmUgQ09ORklHX0NPTU1BTkRTICAgICAgICAgKCBDT05GSUdfQ01EX0RGTCB8IFwKIAkJCQkgIENGR19DTURfSU1NQVAgIHwgXAogCQkJCSAgQ0ZHX0NNRF9BU0tFTlYgfCBcCi0JCQkJICBDRkdfQ01EX0VDSE8gICB8IFwKIAkJCQkgIENGR19DTURfSTJDICAgIHwgXAogCQkJCSAgQ0ZHX0NNRF9SRUdJTkZPICYgXAogCQkJCSB+Q0ZHX0NNRF9LR0RCICkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9SYXR0bGVyLmggYi9pbmNsdWRlL2NvbmZpZ3MvUmF0dGxlci5oCmluZGV4IGExNzBmMjkuLmRiYzU3ZTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9SYXR0bGVyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1JhdHRsZXIuaApAQCAtMTI3LDcgKzEyNyw2IEBACiAKICNkZWZpbmUgQ09ORklHX0NPTU1BTkRTCQkoQ09ORklHX0NNRF9ERkwgICBcCiAJCQkJfCBDRkdfQ01EX0RIQ1AgICAgXAotCQkJCXwgQ0ZHX0NNRF9FQ0hPICAgIFwKIAkJCQl8IENGR19DTURfSU1NQVAgICBcCiAJCQkJfCBDRkdfQ01EX0pGRlMyICAgXAogCQkJCXwgQ0ZHX0NNRF9NSUkgICAgIFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9TWE5JODU1VC5oIGIvaW5jbHVkZS9jb25maWdzL1NYTkk4NTVULmgKaW5kZXggYzFjNzY1Zi4uYTg0NTRkOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1NYTkk4NTVULmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1NYTkk4NTVULmgKQEAgLTE4Myw2ICsxODMsNyBAQAogKi8KIAogLyogTkFORCBmbGFzaCBzdXBwb3J0ICovCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQogI2RlZmluZSBDT05GSUdfTVREX05BTkRfRUNDX0pGRlMyCiAjZGVmaW5lIENGR19NQVhfTkFORF9ERVZJQ0UJMQkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcwkqLwogI2RlZmluZSBTRUNUT1JTSVpFIDUxMgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTUyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9UUU01MjAwLmgKaW5kZXggNWFkMTkzOS4uNjAyMDk5OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTUyMDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNNTIwMC5oCkBAIC0xNjEsNyArMTYxLDYgQEAKIAkJCQlDRkdfQ01EX0FTS0VOVgl8IFwKIAkJCQlDRkdfQ01EX0RBVEUJfCBcCiAJCQkJQ0ZHX0NNRF9ESENQCXwgXAotCQkJCUNGR19DTURfRUNITwl8IFwKIAkJCQlDRkdfQ01EX0VFUFJPTQl8IFwKIAkJCQlDRkdfQ01EX0kyQwl8IFwKIAkJCQlDRkdfQ01EX0pGRlMyCXwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1ZPSDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL1ZPSDQwNS5oCmluZGV4IDNjYTEzN2UuLjk2ZjNkMjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9WT0g0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVk9INDA1LmgKQEAgLTE0MSw2ICsxNDEsOCBAQAogICogTkFORC1GTEFTSCBzdHVmZgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQorCiAjZGVmaW5lIENGR19NQVhfTkFORF9ERVZJQ0UJMQkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcwkJKi8KICNkZWZpbmUgU0VDVE9SU0laRSA1MTIKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1dVSDQwNS5oIGIvaW5jbHVkZS9jb25maWdzL1dVSDQwNS5oCmluZGV4IGQ5MmY4MWYuLmZhZjg1NWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9XVUg0MDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvV1VINDA1LmgKQEAgLTEzMyw2ICsxMzMsOCBAQAogICogTkFORC1GTEFTSCBzdHVmZgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQorCiAjZGVmaW5lIENGR19NQVhfTkFORF9ERVZJQ0UJMQkvKiBNYXggbnVtYmVyIG9mIE5BTkQgZGV2aWNlcwkJKi8KICNkZWZpbmUgU0VDVE9SU0laRSA1MTIKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1pQQzE5MDAuaCBiL2luY2x1ZGUvY29uZmlncy9aUEMxOTAwLmgKaW5kZXggZjcxZTY5MS4uYTUwODVjZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1pQQzE5MDAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvWlBDMTkwMC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA1IEFyYWJlbGxhIFNvZnR3YXJlIEx0ZC4KICAqIFl1bGkgQmFyY29oZW4gPHl1bGlAYXJhYmVsbGFzdy5jb20+CiAgKgogICogVS1Cb290IGNvbmZpZ3VyYXRpb24gZm9yIFplcGh5ciBFbmdpbmVlcmluZyBaUEMuMTkwMCBib2FyZC4KQEAgLTMyLDExICszMiw3IEBACiAjZGVmaW5lIENQVV9JRF9TVFIJCSJNUEM4MjY1IgogI2RlZmluZSBDT05GSUdfQ1BNMgkJMQkvKiBIYXMgYSBDUE0yICovCiAKLSN1bmRlZiBERUJVRwotCi0jdW5kZWYgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRgkvKiBEb24ndCBjYWxsIGJvYXJkX2Vhcmx5X2luaXRfZiAqLwotCi0vKiBBbGxvdyBzZXJpYWwgbnVtYmVyIChzZXJpYWwpIGFuZCBNQUMgYWRkcmVzcyAoZXRoYWRkcikgdG8gYmUgb3ZlcndyaXR0ZW4gKi8KKy8qIEFsbG93IHNlcmlhbCBudW1iZXIgKHNlcmlhbCMpIGFuZCBNQUMgYWRkcmVzcyAoZXRoYWRkcikgdG8gYmUgb3ZlcndyaXR0ZW4gKi8KICNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKIAogLyoKQEAgLTExMyw3ICsxMDksNiBAQAogI2RlZmluZSBDT05GSUdfQ09NTUFORFMJCShDT05GSUdfQ01EX0RGTCAgIFwKIAkJCQl8IENGR19DTURfQVNLRU5WICBcCiAJCQkJfCBDRkdfQ01EX0RIQ1AgICAgXAotCQkJCXwgQ0ZHX0NNRF9FQ0hPICAgIFwKIAkJCQl8IENGR19DTURfSU1NQVAgICBcCiAJCQkJfCBDRkdfQ01EX01JSSAgICAgXAogCQkJCXwgQ0ZHX0NNRF9QSU5HICAgIFwKQEAgLTE1NCwzMSArMTQ5LDMwIEBACiAjZGVmaW5lIENGR19CQVJHU0laRQkJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplICAqLwogCiAjZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4MDAxMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbiAqLwotI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MDBmMDAwMDAJLyogMSAuLi4gMTUgTUIgaW4gRFJBTQkqLworI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MDM4MDAwMDAJLyogMSAuLi4gNTYgTUIgaW4gRFJBTQkqLwogCi0jZGVmaW5lIENGR19MT0FEX0FERFIJCTB4MTAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisjZGVmaW5lIENGR19MT0FEX0FERFIJCTB4NDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAKICNkZWZpbmUgQ0ZHX0haCQkJMTAwMAkvKiBkZWNyZW1lbnRlciBmcmVxOiAxIG1zIHRpY2tzICovCiAKICNkZWZpbmUgQ0ZHX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwLCAyMzA0MDAgfQogCi0jZGVmaW5lIENGR19GTEFTSF9CQVNFCQkweEZGRTAwMDAwCi0jZGVmaW5lIENGR19GTEFTSF9DRkkKLSNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSV9EUklWRVIKLSNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwkxCS8qIG1heCBudW0gb2YgZmxhc2ggYmFua3MJKi8KLSNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTMyCS8qIG1heCBudW0gb2Ygc2VjdHMgb24gb25lIGNoaXAgKi8KLQotI2RlZmluZSBDRkdfREVGQVVMVF9JTU1SCTB4MEYwMTAwMDAKLQotI2RlZmluZSBDRkdfSU1NUgkJMHhGMDAwMDAwMAogI2RlZmluZSBDRkdfU0RSQU1fQkFTRQkJMHgwMDAwMDAwMAogI2RlZmluZSBDRkdfU0RSQU1fU0laRQkJNjQKLSNkZWZpbmUgQ0ZHX0ZMU0lNTV9CQVNFCQkweEZDMDAwMDAwCi0jZGVmaW5lIENGR19MU0RSQU1fQkFTRQkJMHhGRTAwMDAwMAorCisjZGVmaW5lIENGR19JTU1SCQkweEYwMDAwMDAwCisjZGVmaW5lIENGR19MU0RSQU1fQkFTRQkJMHhGQzAwMDAwMAorI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkJMHhGRTAwMDAwMAogI2RlZmluZSBDRkdfQkNTUgkJMHhGRUEwMDAwMAogI2RlZmluZSBDRkdfRUVQUk9NCQkweEZFQjAwMDAwCisjZGVmaW5lIENGR19GTFNJTU1fQkFTRQkJMHhGRjAwMDAwMAogCi0jZGVmaW5lIENGR19GTEFTSF9CQU5LU19MSVNUCXsgQ0ZHX0ZMQVNIX0JBU0UgfQorI2RlZmluZSBDRkdfRkxBU0hfQ0ZJCisjZGVmaW5lIENGR19GTEFTSF9DRklfRFJJVkVSCisjZGVmaW5lIENGR19NQVhfRkxBU0hfQkFOS1MJMgkvKiBtYXggbnVtIG9mIGZsYXNoIGJhbmtzCSovCisjZGVmaW5lIENGR19NQVhfRkxBU0hfU0VDVAkzMgkvKiBtYXggbnVtIG9mIHNlY3RzIG9uIG9uZSBjaGlwICovCisKKyNkZWZpbmUgQ0ZHX0ZMQVNIX0JBTktTX0xJU1QJeyBDRkdfRkxBU0hfQkFTRSwgQ0ZHX0ZMU0lNTV9CQVNFIH0KIAogI2RlZmluZSBCQ1NSX1BDSV9NT0RFCQkweDAxCiAKQEAgLTE5MCwxMCArMTg0LDEwIEBACiAKIC8qIEhhcmQgcmVzZXQgY29uZmlndXJhdGlvbiB3b3JkICovCiAjZGVmaW5lIENGR19IUkNXX01BU1RFUgkJKEhSQ1dfRUJNIHwgSFJDV19CUFMwMXwgSFJDV19DSVAgICAgICAgICAgfFwKLQkJCQkgSFJDV19MMkNQQzEwIHwgSFJDV19EUFBDMDAgfCBIUkNXX0lTQjAxMCB8XAotCQkJCSBIUkNXX0JNUyB8IEhSQ1dfTEJQQzAxIHwgSFJDV19BUFBDMTAgICAgIHxcCi0JCQkJIEhSQ1dfTU9EQ0tfSDAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQkJCQkpIC8qIDB4MTY4Mjg2MDUgKi8KKwkJCQkgSFJDV19MMkNQQzEwIHwgSFJDV19EUFBDMDAgfCBIUkNXX0lTQjEwMCB8XAorCQkJCSBIUkNXX0JNUyB8IEhSQ1dfTEJQQzAwIHwgSFJDV19BUFBDMTAgICAgIHxcCisJCQkJIEhSQ1dfTU9EQ0tfSDAxMTEgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJCQkpIC8qIDB4MTY4NDgyMDcgKi8KIC8qIE5vIHNsYXZlcyAqLwogI2RlZmluZSBDRkdfSFJDV19TTEFWRTEgCTAKICNkZWZpbmUgQ0ZHX0hSQ1dfU0xBVkUyIAkwCkBAIC0yMTEsNyArMjA1LDcgQEAKICNkZWZpbmUgQ0ZHX1JBTUJPT1QKICNlbmRpZgogCi0jZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDE5MiA8PCAxMCkJLyogUmVzZXJ2ZSAxOTIga0IgZm9yIE1vbml0b3IJKi8KKyNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQkoMjU2IDw8IDEwKQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgTW9uaXRvcgkqLwogI2RlZmluZSBDRkdfTUFMTE9DX0xFTgkJKDQwOTYgPDwgMTApCS8qIFJlc2VydmUgNCBNQiBmb3IgbWFsbG9jKCkJKi8KICNkZWZpbmUgQ0ZHX0JPT1RNQVBTWgkJKDggPDwgMjApCS8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KIApAQCAtMjMzLDE0ICsyMjcsMTQgQEAKICMgIGRlZmluZSBDRkdfQ0FDSEVMSU5FX1NISUZUCTUJLyogbG9nIGJhc2UgMiBvZiB0aGUgYWJvdmUgdmFsdWUgKi8KICNlbmRpZgogCi0jZGVmaW5lIENGR19ISUQwX0lOSVQJCTAKLSNkZWZpbmUgQ0ZHX0hJRDBfRklOQUwJCShISUQwX0lDRSB8IEhJRDBfSUZFTSB8IEhJRDBfQUJFICkKKyNkZWZpbmUgQ0ZHX0hJRDBfSU5JVAkJKEhJRDBfSUNGSSkKKyNkZWZpbmUgQ0ZHX0hJRDBfRklOQUwJCShISUQwX0lDRSB8IEhJRDBfSUZFTSB8IEhJRDBfQUJFKQogCiAjZGVmaW5lIENGR19ISUQyCQkwCiAKICNkZWZpbmUgQ0ZHX1NJVU1DUgkJMHg0MjIwMDAwMAogI2RlZmluZSBDRkdfU1lQQ1IJCTB4RkZGRkZGQzMKLSNkZWZpbmUgQ0ZHX0JDUgkJCTB4OTA0MDAwMDAKKyNkZWZpbmUgQ0ZHX0JDUgkJCTB4OTAwMDAwMDAKICNkZWZpbmUgQ0ZHX1NDQ1IJCVNDQ1JfREZCUkcwMQogCiAjZGVmaW5lIENGR19STVIJCQlSTVJfQ1NSRQpAQCAtMjQ4LDE4ICsyNDIsMjMgQEAKICNkZWZpbmUgQ0ZHX1BJU0NSCQkoUElTQ1JfUFN8UElTQ1JfUFRGfFBJU0NSX1BURSkKICNkZWZpbmUgQ0ZHX1JDQ1IJCTAKIAotI2RlZmluZSBDRkdfUFNETVIJCTB4MDE0RUI0NUEKLSNkZWZpbmUgQ0ZHX1BTUlQJCTB4MEMKLSNkZWZpbmUgQ0ZHX0xTRE1SCQkweDAwOEFCNTUyCi0jZGVmaW5lIENGR19MU1JUCQkweDBFCisjZGVmaW5lIENGR19QU0RNUgkJLyogMHg4MzREQTQzQiAqLzB4MDE0REE0M0EKKyNkZWZpbmUgQ0ZHX1BTUlQJCTB4MEYvKiAweDBDICovCisjZGVmaW5lIENGR19MU0RNUgkJMHgwMDg1QTU2MgorI2RlZmluZSBDRkdfTFNSVAkJMHgwRgogI2RlZmluZSBDRkdfTVBUUFIJCTB4NDAwMAogCisjZGVmaW5lIENGR19QU0RSQU1fQlIJCUNGR19TRFJBTV9CQVNFIHwgMHgwMDAwMDA0MQorI2RlZmluZSBDRkdfUFNEUkFNX09SCQkweEZDMDAyOEMwCisjZGVmaW5lIENGR19MU0RSQU1fQlIJCUNGR19MU0RSQU1fQkFTRSB8IDB4MDAwMDE4NjEKKyNkZWZpbmUgQ0ZHX0xTRFJBTV9PUgkJMHhGRjgwMzQ4MAorCiAjZGVmaW5lIENGR19CUjBfUFJFTElNCQlDRkdfRkxBU0hfQkFTRSB8IDB4MDAwMDA4MDEKICNkZWZpbmUgQ0ZHX09SMF9QUkVMSU0JCTB4RkZFMDA4NTYKICNkZWZpbmUgQ0ZHX0JSNV9QUkVMSU0JCUNGR19FRVBST00gfCAweDAwMDAwODAxCiAjZGVmaW5lIENGR19PUjVfUFJFTElNCQkweEZGRkYwM0Y2Ci0jZGVmaW5lIENGR19CUjZfUFJFTElNCQlDRkdfRkxTSU1NX0JBU0UgfCAweDAwMDAwODAxCi0jZGVmaW5lIENGR19PUjZfUFJFTElNCQkweEZFMDAwODU2CisjZGVmaW5lIENGR19CUjZfUFJFTElNCQlDRkdfRkxTSU1NX0JBU0UgfCAweDAwMDAxODAxCisjZGVmaW5lIENGR19PUjZfUFJFTElNCQkweEZGMDAwODU2CiAjZGVmaW5lIENGR19CUjdfUFJFTElNCQlDRkdfQkNTUiB8IDB4MDAwMDA4MDEKICNkZWZpbmUgQ0ZHX09SN19QUkVMSU0JCTB4RkZGRjgzRjYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JhbWJvby5oIGIvaW5jbHVkZS9jb25maWdzL2JhbWJvby5oCmluZGV4IGVhY2M3NDQuLjZkMzI4MjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9iYW1ib28uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmFtYm9vLmgKQEAgLTQzLDYgKzQzLDcgQEAKICAqIDJuZCBldGhlcm5ldCBwb3J0IHlvdSBoYXZlIHRvICJ1bmRlZiIgdGhlIGZvbGxvd2luZyBkZWZpbmUuCiAgKi8KICNkZWZpbmUgQ09ORklHX0JBTUJPT19OQU5EICAgICAgMSAgICAgICAvKiBlbmFibGUgbmFuZCBmbGFzaCBzdXBwb3J0ICAgICovCisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBCYXNlIGFkZHJlc3NlcyAtLSBOb3RlIHRoZXNlIGFyZSBlZmZlY3RpdmUgYWRkcmVzc2VzIHdoZXJlIHRoZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2RlbHRhLmggYi9pbmNsdWRlL2NvbmZpZ3MvZGVsdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDJhN2UyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL2RlbHRhLmgKQEAgLTAsMCArMSwyODcgQEAKKy8qCisgKiBDb25maWd1YXRpb24gc2V0dGluZ3MgZm9yIHRoZSBEZWx0YSBib2FyZC4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisvKgorICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKKyAqIChlYXN5IHRvIGNoYW5nZSkKKyAqLworI2RlZmluZSBDT05GSUdfQ1BVX01PTkFIQU5TCTEJLyogSW50ZWwgTW9uYWhhbiBDUFUgICAgKi8KKyNkZWZpbmUgQ09ORklHX0RFTFRBCQkxCS8qIERlbHRhIGJvYXJkICAgICAgICovCisKKy8qICNkZWZpbmUgQ09ORklHX0xDRAkJMSAqLworI2lmZGVmIENPTkZJR19MQ0QKKyNkZWZpbmUgQ09ORklHX1NIQVJQX0xNOFYzMQorI2VuZGlmCisvKiAjZGVmaW5lIENPTkZJR19NTUMJCTEgKi8KKyNkZWZpbmUgQk9BUkRfTEFURV9JTklUCQkxCisKKyN1bmRlZiBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVAorI3VuZGVmIENPTkZJR19VU0VfSVJRCQkJLyogd2UgZG9uJ3QgbmVlZCBJUlEvRklRIHN0dWZmICovCisKKy8qCisgKiBTaXplIG9mIG1hbGxvYygpIHBvb2wKKyAqLworI2RlZmluZSBDRkdfTUFMTE9DX0xFTgkgICAgKENGR19FTlZfU0laRSArIDI1NioxMDI0KQorI2RlZmluZSBDRkdfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCisKKy8qCisgKiBIYXJkd2FyZSBkcml2ZXJzCisgKi8KKworI3VuZGVmIFRVUk5fT05fRVRIRVJORVQKKyNpZmRlZiBUVVJOX09OX0VUSEVSTkVUCisjIGRlZmluZSBDT05GSUdfRFJJVkVSX1NNQzkxMTExIDEKKyMgZGVmaW5lIENPTkZJR19TTUM5MTExMV9CQVNFICAgMHgxNDAwMDMwMAorIyBkZWZpbmUgQ09ORklHX1NNQzkxMTExX0VYVF9QSFkKKyMgZGVmaW5lIENPTkZJR19TTUNfVVNFXzMyX0JJVAorIyB1bmRlZiBDT05GSUdfU01DX1VTRV9JT0ZVTkNTICAgICAgICAgIC8qIGp1c3QgZm9yIHVzZSB3aXRoIHRoZSBrZXJuZWwgKi8KKyNlbmRpZgorCisvKgorICogc2VsZWN0IHNlcmlhbCBjb25zb2xlIGNvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfRkZVQVJUCSAgICAgICAxCisKKy8qIGFsbG93IHRvIG92ZXJ3cml0ZSBzZXJpYWwgYW5kIGV0aGFkZHIgKi8KKyNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKKworI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAorCisvKiAjZGVmaW5lIENPTkZJR19DT01NQU5EUyAgICAgICAoQ09ORklHX0NNRF9ERkwgfCBDRkdfQ01EX01NQyB8IENGR19DTURfRkFUKSAqLworI2lmZGVmIFRVUk5fT05fRVRIRVJORVQKKyMgZGVmaW5lIENPTkZJR19DT01NQU5EUyAgICAgICAgKENPTkZJR19DTURfREZMIHwgQ0ZHX0NNRF9QSU5HKQorI2Vsc2UKKyMgZGVmaW5lIENPTkZJR19DT01NQU5EUwkoKENPTkZJR19DTURfREZMIHwgQ0ZHX0NNRF9FTlYgfCBDRkdfQ01EX05BTkQpIFwKKwkJCQkmIH4oQ0ZHX0NNRF9ORVQgfCBDRkdfQ01EX0ZMQVNIIHwgQ0ZHX0NNRF9JTUxTKSkKKyNlbmRpZgorCisKKy8qIHRoaXMgbXVzdCBiZSBpbmNsdWRlZCBBRlRFUiB0aGUgZGVmaW5pdGlvbiBvZiBDT05GSUdfQ09NTUFORFMgKGlmIGFueSkgKi8KKyNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KKworI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCS0xCisjZGVmaW5lIENPTkZJR19FVEhBRERSCQkwODowMDozZToyNjowYTo1YgorI2RlZmluZSBDT05GSUdfTkVUTUFTSwkJMjU1LjI1NS4wLjAKKyNkZWZpbmUgQ09ORklHX0lQQUREUgkJMTkyLjE2OC4wLjIxCisjZGVmaW5lIENPTkZJR19TRVJWRVJJUAkJMTkyLjE2OC4wLjI1MAorI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJImJvb3RtIDgwMDAwIgorI2RlZmluZSBDT05GSUdfQk9PVEFSR1MJCSJyb290PS9kZXYvbXRkYmxvY2syIHJvb3Rmc3R5cGU9Y3JhbWZzIGNvbnNvbGU9dHR5UzAsMTE1MjAwIgorI2RlZmluZSBDT05GSUdfQ01ETElORV9UQUcKKyNkZWZpbmUgQ09ORklHX1RJTUVTVEFNUAorCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfS0dEQikKKyNkZWZpbmUgQ09ORklHX0tHREJfQkFVRFJBVEUJMjMwNDAwCQkvKiBzcGVlZCB0byBydW4ga2dkYiBzZXJpYWwgcG9ydCAqLworI2RlZmluZSBDT05GSUdfS0dEQl9TRVJfSU5ERVgJMgkJLyogd2hpY2ggc2VyaWFsIHBvcnQgdG8gdXNlICovCisjZW5kaWYKKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZSBDRkdfSFVTSF9QQVJTRVIJCTEKKyNkZWZpbmUgQ0ZHX1BST01QVF9IVVNIX1BTMgkiPiAiCisKKyNkZWZpbmUgQ0ZHX0xPTkdIRUxQCQkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CQkqLworI2lmZGVmIENGR19IVVNIX1BBUlNFUgorI2RlZmluZSBDRkdfUFJPTVBUCQkiJCAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCisjZWxzZQorI2RlZmluZSBDRkdfUFJPTVBUCQkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLworI2VuZGlmCisjZGVmaW5lIENGR19DQlNJWkUJCTI1NgkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUJKi8KKyNkZWZpbmUgQ0ZHX1BCU0laRSAoQ0ZHX0NCU0laRStzaXplb2YoQ0ZHX1BST01QVCkrMTYpIC8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENGR19NQVhBUkdTCQkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KKyNkZWZpbmUgQ0ZHX0JBUkdTSVpFCQlDRkdfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUJKi8KKyNkZWZpbmUgQ0ZHX0RFVklDRV9OVUxMREVWCTEKKworI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweGEwNDAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24JKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweGEwODAwMDAwCS8qIDQgLi4uIDggTUIgaW4gRFJBTQkqLworCisjdW5kZWYJQ0ZHX0NMS1NfSU5fSFoJCS8qIGV2ZXJ5dGhpbmcsIGluY2wgYm9hcmQgaW5mbywgaW4gSHogKi8KKworI2RlZmluZSBDRkdfTE9BRF9BRERSCShDRkdfRFJBTV9CQVNFICsgMHg4MDAwKSAvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworCisjZGVmaW5lIENGR19IWgkJCTM2ODY0MDAJCS8qIGluY3JlbWVudGVyIGZyZXE6IDMuNjg2NCBNSHogKi8KKyNkZWZpbmUgQ0ZHX0NQVVNQRUVECQkweDE2MQkJLyogc2V0IGNvcmUgY2xvY2sgdG8gNDAwLzIwMC8xMDAgTUh6ICovCisKKwkJCQkJCS8qIHZhbGlkIGJhdWRyYXRlcyAqLworI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAgfQorCisvKiAjZGVmaW5lIENGR19NTUNfQkFTRQkJMHhGMDAwMDAwMCAqLworCisvKgorICogU3RhY2sgc2l6ZXMKKyAqCisgKiBUaGUgc3RhY2sgc2l6ZXMgYXJlIHNldCB1cCBpbiBzdGFydC5TIHVzaW5nIHRoZSBzZXR0aW5ncyBiZWxvdworICovCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJKDEyOCoxMDI0KQkvKiByZWd1bGFyIHN0YWNrICovCisjaWZkZWYgQ09ORklHX1VTRV9JUlEKKyNkZWZpbmUgQ09ORklHX1NUQUNLU0laRV9JUlEJKDQqMTAyNCkJLyogSVJRIHN0YWNrICovCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkVfRklRCSg0KjEwMjQpCS8qIEZJUSBzdGFjayAqLworI2VuZGlmCisKKy8qCisgKiBQaHlzaWNhbCBNZW1vcnkgTWFwCisgKi8KKyNkZWZpbmUgQ09ORklHX05SX0RSQU1fQkFOS1MJNAkgICAvKiB3ZSBoYXZlIDIgYmFua3Mgb2YgRFJBTSAqLworI2RlZmluZSBQSFlTX1NEUkFNXzEJCTB4YTAwMDAwMDAgLyogU0RSQU0gQmFuayAjMSAqLworI2RlZmluZSBQSFlTX1NEUkFNXzFfU0laRQkweDEwMDAwMDAgIC8qIDY0IE1CICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMgkJMHhhMTAwMDAwMCAvKiBTRFJBTSBCYW5rICMyICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMl9TSVpFCTB4MTAwMDAwMCAgLyogNjQgTUIgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8zCQkweGEyMDAwMDAwIC8qIFNEUkFNIEJhbmsgIzMgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8zX1NJWkUJMHgxMDAwMDAwICAvKiA2NCBNQiAqLworI2RlZmluZSBQSFlTX1NEUkFNXzQJCTB4YTMwMDAwMDAgLyogU0RSQU0gQmFuayAjNCAqLworI2RlZmluZSBQSFlTX1NEUkFNXzRfU0laRQkweDEwMDAwMDAgIC8qIDY0IE1CICovCisKKyNkZWZpbmUgQ0ZHX0RSQU1fQkFTRQkJMHhhMDAwMDAwMCAvKiBhdCBDUzAgKi8KKyNkZWZpbmUgQ0ZHX0RSQU1fU0laRQkJMHgwNDAwMDAwMCAvKiA2NCBNQiBSYW0gKi8KKworI3VuZGVmIENGR19TS0lQX0RSQU1fU0NSVUIKKworLyoKKyAqIE5BTkQgRmxhc2gKKyAqLworLyogVXNlIHRoZSBuZXcgTkFORCBjb2RlLiAoQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kL2xpYm5hbmQuYSByZXF1aXJlZCkgKi8KKyNkZWZpbmUgQ09ORklHX05FV19OQU5EX0NPREUKKyNkZWZpbmUgQ0ZHX05BTkQwX0JBU0UJCTB4MCAvKiAweDQzMTAwMDQwICovIC8qIDB4MTAwMDAwMDAgKi8KKyN1bmRlZiBDRkdfTkFORDFfQkFTRQorCisjZGVmaW5lIENGR19OQU5EX0JBU0VfTElTVAl7IENGR19OQU5EMF9CQVNFIH0KKyNkZWZpbmUgQ0ZHX01BWF9OQU5EX0RFVklDRQkxCS8qIE1heCBudW1iZXIgb2YgTkFORCBkZXZpY2VzICovCisjZGVmaW5lIFNFQ1RPUlNJWkUgCQk1MTIKKyNkZWZpbmUgTkFORF9ERUxBWV9VUwkJMjUJLyogbWtAdGJkOiBjb3VsZCBiZSAwLCBJIGd1ZXNzICovCisKKy8qIG5hbmQgdGltZW91dCB2YWx1ZXMgKi8KKyNkZWZpbmUgQ0ZHX05BTkRfUFJPR19FUkFTRV9UTwkzMDAwCisjZGVmaW5lIENGR19OQU5EX09USEVSX1RPCTEwMAorI2RlZmluZSBDRkdfTkFORF9TRU5EQ01EX1JFVFJZCTMKKyN1bmRlZiBOQU5EX0FMTE9XX0VSQVNFX0FMTAkvKiBBbGxvdyBlcmFzaW5nIGJhZCBibG9ja3MgLSBkb24ndCB1c2UgKi8KKworLyogTkFORCBUaW1pbmcgUGFyYW1ldGVycyAoaW4gbnMpICovCisjZGVmaW5lIE5BTkRfVElNSU5HX3RDSCAJMTAKKyNkZWZpbmUgTkFORF9USU1JTkdfdENTIAkwCisjZGVmaW5lIE5BTkRfVElNSU5HX3RXSAkJMjAKKyNkZWZpbmUgTkFORF9USU1JTkdfdFdQIAk0MAorCisjZGVmaW5lIE5BTkRfVElNSU5HX3RSSCAJMjAKKyNkZWZpbmUgTkFORF9USU1JTkdfdFJQIAk0MAorCisjZGVmaW5lIE5BTkRfVElNSU5HX3RSICAJMTExMjMKKy8qICNkZWZpbmUgTkFORF9USU1JTkdfdFdIUgkxMTAgKi8KKyNkZWZpbmUgTkFORF9USU1JTkdfdFdIUgkxMDAKKyNkZWZpbmUgTkFORF9USU1JTkdfdEFSCQkxMAorCisvKiBOQU5EIGRlYnVnZ2luZyAqLworI2RlZmluZSBDRkdfREZDX0RFQlVHMSAvKiB1c2VmdWxsICovCisjdW5kZWYgQ0ZHX0RGQ19ERUJVRzIgIC8qIG5vaXN5ICovCisjdW5kZWYgQ0ZHX0RGQ19ERUJVRzMgIC8qIGV4dHJlbWx5IG5vaXN5ICAqLworCisjZGVmaW5lIENPTkZJR19NVERfREVCVUcKKyNkZWZpbmUgQ09ORklHX01URF9ERUJVR19WRVJCT1NFIDEKKworI2RlZmluZSBBRERSX0NPTFVNTiAxCisjZGVmaW5lIEFERFJfUEFHRSAyCisjZGVmaW5lIEFERFJfQ09MVU1OX1BBR0UgMworCisjZGVmaW5lIE5BTkRfQ2hpcElEX1VOS05PV04JMHgwMAorI2RlZmluZSBOQU5EX01BWF9GTE9PUlMgMQorI2RlZmluZSBOQU5EX01BWF9DSElQUyAxCisKKyNkZWZpbmUgQ0ZHX05PX0ZMQVNICTEKKyNpZm5kZWYgQ0dGX05PX0ZMQVNICisvKiB0aGVzZSBhcmUgcmVxdWlyZWQgYnkgdGhlIGVudmlyb25tZW50IGNvZGUgKi8KKyNkZWZpbmUgUEhZU19GTEFTSF8xICAgICAgICAgICAgQ0ZHX05BTkQwX0JBU0UgLyogRmxhc2ggQmFuayAjMSAqLworI2RlZmluZSBQSFlTX0ZMQVNIX1NJWkUgICAgICAgICAweDA0MDAwMDAwIC8qIDY0IE1CICovCisjZGVmaW5lIFBIWVNfRkxBU0hfQkFOS19TSVpFICAgIDB4MDQwMDAwMDAgLyogNjQgTUIgQmFua3MgKi8KKyNkZWZpbmUgUEhZU19GTEFTSF9TRUNUX1NJWkUgICAgKFNFQ1RPUlNJWkUqMTAyNCkgLyogIEtCIHNlY3RvcnMgKHgyKSAqLworI2VuZGlmCisKKy8qCisgKiBHUElPIHNldHRpbmdzCisgKi8KKyNkZWZpbmUgQ0ZHX0dQU1IwX1ZBTAkJMHgwMDAwODAwMAorI2RlZmluZSBDRkdfR1BTUjFfVkFMCQkweDAwRkMwMzgyCisjZGVmaW5lIENGR19HUFNSMl9WQUwJCTB4MDAwMUZGRkYKKyNkZWZpbmUgQ0ZHX0dQQ1IwX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfR1BDUjFfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19HUENSMl9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dQRFIwX1ZBTAkJMHgwMDYwQTgwMAorI2RlZmluZSBDRkdfR1BEUjFfVkFMCQkweDAwRkYwMzgyCisjZGVmaW5lIENGR19HUERSMl9WQUwJCTB4MDAwMUMwMDAKKyNkZWZpbmUgQ0ZHX0dBRlIwX0xfVkFMCQkweDk4NDAwMDAwCisjZGVmaW5lIENGR19HQUZSMF9VX1ZBTAkJMHgwMDAwMjk1MAorI2RlZmluZSBDRkdfR0FGUjFfTF9WQUwJCTB4MDAwQTk1NTgKKyNkZWZpbmUgQ0ZHX0dBRlIxX1VfVkFMCQkweDAwMDVBQUFBCisjZGVmaW5lIENGR19HQUZSMl9MX1ZBTAkJMHhBMDAwMDAwMAorI2RlZmluZSBDRkdfR0FGUjJfVV9WQUwJCTB4MDAwMDAwMDIKKworI2RlZmluZSBDRkdfUFNTUl9WQUwJCTB4MjAKKworLyoKKyAqIE1lbW9yeSBzZXR0aW5ncworICovCisjZGVmaW5lIENGR19NU0MwX1ZBTAkJMHgyM0YyMjNGMgorI2RlZmluZSBDRkdfTVNDMV9WQUwJCTB4M0ZGMUE0NDEKKyNkZWZpbmUgQ0ZHX01TQzJfVkFMCQkweDdGRjk3RkYxCisjZGVmaW5lIENGR19NRENORkdfVkFMCQkweDAwMDAxQUM5CisjZGVmaW5lIENGR19NRFJFRlJfVkFMCQkweDAwMDE4MDE4CisjZGVmaW5lIENGR19NRE1SU19WQUwJCTB4MDAwMDAwMDAKKworLyoKKyAqIFBDTUNJQSBhbmQgQ0YgSW50ZXJmYWNlcworICovCisjZGVmaW5lIENGR19NRUNSX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfTUNNRU0wX1ZBTAkJMHgwMDAxMDUwNAorI2RlZmluZSBDRkdfTUNNRU0xX1ZBTAkJMHgwMDAxMDUwNAorI2RlZmluZSBDRkdfTUNBVFQwX1ZBTAkJMHgwMDAxMDUwNAorI2RlZmluZSBDRkdfTUNBVFQxX1ZBTAkJMHgwMDAxMDUwNAorI2RlZmluZSBDRkdfTUNJTzBfVkFMCQkweDAwMDA0NzE1CisjZGVmaW5lIENGR19NQ0lPMV9WQUwJCTB4MDAwMDQ3MTUKKworI2RlZmluZSBfTEVECQkJMHgwODAwMDAxMAorI2RlZmluZSBMRURfQkxBTksJCTB4MDgwMDAwNDAKKworLyoKKyAqIEZMQVNIIGFuZCBlbnZpcm9ubWVudCBvcmdhbml6YXRpb24KKyAqLworI2lmbmRlZiBDRkdfTk9fRkxBU0gKKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwkyCS8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCQkqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJMTI4ICAvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAgICAgKi8KKworLyogdGltZW91dCB2YWx1ZXMgYXJlIGluIHRpY2tzICovCisjZGVmaW5lIENGR19GTEFTSF9FUkFTRV9UT1VUCSgyNSpDRkdfSFopIC8qIFRpbWVvdXQgZm9yIEZsYXNoIEVyYXNlICovCisjZGVmaW5lIENGR19GTEFTSF9XUklURV9UT1VUCSgyNSpDRkdfSFopIC8qIFRpbWVvdXQgZm9yIEZsYXNoIFdyaXRlICovCisKKworLyogTk9URTogbWFueSBkZWZhdWx0IHBhcnRpdGlvbmluZyBzY2hlbWVzIGFzc3VtZSB0aGUga2VybmVsIHN0YXJ0cyBhdCB0aGUKKyAqIHNlY29uZCBzZWN0b3IsIG5vdCBhbiBlbnZpcm9ubWVudC4gIFlvdSBoYXZlIGJlZW4gd2FybmVkIQorICovCisjZGVmaW5lCUNGR19NT05JVE9SX0xFTgkJUEhZU19GTEFTSF9TRUNUX1NJWkUKKyNlbmRpZiAvKiAjaWZuZGVmIENGR19OT19GTEFTSCAqLworCisvKiAjZGVmaW5lIENGR19FTlZfSVNfTk9XSEVSRSAqLworI2RlZmluZSBDRkdfRU5WX0lTX0lOX05BTkQJMQorI2RlZmluZSBDRkdfRU5WX09GRlNFVAkJMHg0MDAwMAorI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4NDAwMAorCisjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2V6a2l0NTMzLmggYi9pbmNsdWRlL2NvbmZpZ3MvZXpraXQ1MzMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWRhNjczCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL2V6a2l0NTMzLmgKQEAgLTAsMCArMSwxODggQEAKKyNpZm5kZWYgX19DT05GSUdfRVpLSVQ1MzNfSF9fCisjZGVmaW5lIF9fQ09ORklHX0VaS0lUNTMzX0hfXworCisjZGVmaW5lIENGR19MT05HSEVMUAkJMQorI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTU3NjAwCisjZGVmaW5lIENPTkZJR19TVEFNUAkJMQorI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTUKKworI2RlZmluZSBDT05GSUdfRFJJVkVSX1NNQzkxMTExCTEKKyNkZWZpbmUgQ09ORklHX1NNQzkxMTExX0JBU0UJMHgyMDMxMDMwMAorI2lmIDAKKyNkZWZpbmUgQ09ORklHX01JSQorI2RlZmluZSBDRkdfRElTQ09WRVJfUEhZCisjZW5kaWYKKworI2RlZmluZSBDT05GSUdfUlRDX0JGNTMzCTEKKyNkZWZpbmUgQ09ORklHX0JPT1RfUkVUUllfVElNRQktMQkvKiBFbmFibGUgdGhpcyBpZiBib290cmV0cnkgcmVxdWlyZWQsIGN1cnJlbnRseSBpdHMgZGlzYWJsZWQgKi8KKworLyogQ09ORklHX0NMS0lOX0haIGlzIGFueSB2YWx1ZSBpbiBIegkJCQkgKi8KKyNkZWZpbmUgQ09ORklHX0NMS0lOX0haCQkgMjcwMDAwMDAKKy8qIENPTkZJR19DTEtJTl9IQUxGIGNvbnRyb2xzIHdoYXQgaXMgcGFzc2VkIHRvIFBMTCAwPUNMS0lOCSAqLworLyoJCQkJCQkgICAgMT1DTEtJTi8yCSAqLworI2RlZmluZSBDT05GSUdfQ0xLSU5fSEFMRgkJMAorLyogQ09ORklHX1BMTF9CWVBBU1MgY29udHJvbHMgaWYgdGhlIFBMTCBpcyB1c2VkIDA9ZG9uJ3QgYnlwYXNzCSAqLworLyoJCQkJCQkgMT1ieXBhc3MgUExMCSAqLworI2RlZmluZSBDT05GSUdfUExMX0JZUEFTUwkJMAorLyogQ09ORklHX1ZDT19NVUxUIGNvbnRyb2xzIHdoYXQgdGhlIG11bHRpcGxpZXIgb2YgdGhlIFBMTCBpcy4JICovCisvKiBWYWx1ZXMgY2FuIHJhbmdlIGZyb20gMS02NAkJCQkJICovCisjZGVmaW5lIENPTkZJR19WQ09fTVVMVAkJCTIyCisvKiBDT05GSUdfQ0NMS19ESVYgY29udHJvbHMgd2hhdCB0aGUgY29yZSBjbG9jayBkaXZpZGVyIGlzCSAqLworLyogVmFsdWVzIGNhbiBiZSAxLCAyLCA0LCBvciA4IE9OTFkJCQkJICovCisjZGVmaW5lIENPTkZJR19DQ0xLX0RJVgkJCTEKKy8qIENPTkZJR19TQ0xLX0RJViBjb250cm9scyB3aGF0IHRoZSBwZXJpcGhlcmFsIGNsb2NrIGRpdmlkZXIgaXMgKi8KKy8qIFZhbHVlcyBjYW4gcmFuZ2UgZnJvbSAxLTE1CQkJCQkgKi8KKyNkZWZpbmUgQ09ORklHX1NDTEtfRElWCQkJNQorCisjaWYgKCBDT05GSUdfQ0xLSU5fSEFMRiA9PSAwICkKKyNkZWZpbmUgQ09ORklHX1ZDT19IWgkJKCBDT05GSUdfQ0xLSU5fSFogKiBDT05GSUdfVkNPX01VTFQgKQorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1ZDT19IWgkJKCggQ09ORklHX0NMS0lOX0haICogQ09ORklHX1ZDT19NVUxUICkgLyAyICkKKyNlbmRpZgorCisjaWYgKENPTkZJR19QTExfQllQQVNTID09IDApCisjZGVmaW5lIENPTkZJR19DQ0xLX0haCQkoIENPTkZJR19WQ09fSFogLyBDT05GSUdfQ0NMS19ESVYgKQorI2RlZmluZSBDT05GSUdfU0NMS19IWgkJKCBDT05GSUdfVkNPX0haIC8gQ09ORklHX1NDTEtfRElWICkKKyNlbHNlCisjZGVmaW5lIENPTkZJR19DQ0xLX0haCQlDT05GSUdfQ0xLSU5fSFoKKyNkZWZpbmUgQ09ORklHX1NDTEtfSFoJCUNPTkZJR19DTEtJTl9IWgorI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX01FTV9TSVpFCQkJMzIJICAgICAgIC8qIDEyOCwgNjQsIDMyLCAxNiAqLworI2RlZmluZSBDT05GSUdfTUVNX0FERF9XRFRICQkgOQkgICAgICAgLyogOCwgOSwgMTAsIDExCSAgKi8KKyNkZWZpbmUgQ09ORklHX01FTV9NVDQ4TEMxNk0xNkEyVEdfNzUJIDEKKworI2RlZmluZSBDT05GSUdfTE9BRFNfRUNITwkxCisKKworI2RlZmluZSBDT05GSUdfQ09NTUFORFMJCQkoQ09ORklHX0NNRF9ERkwgfCBcCisJCQkJCSBDRkdfQ01EX1BJTkcJfCBcCisJCQkJCSBDRkdfQ01EX0VMRgl8IFwKKwkJCQkJIENGR19DTURfSTJDCXwgXAorCQkJCQkgQ0ZHX0NNRF9KRkZTMgl8IFwKKwkJCQkJIENGR19DTURfREFURSkKKyNkZWZpbmUgQ09ORklHX0JPT1RBUkdTICJyb290PS9kZXYvbXRkYmxvY2swIGlwPTE5Mi4xNjguMC4xNToxOTIuMTY4LjAuMjoxOTIuMTY4LjAuMToyNTUuMjU1LjI1NS4wOmV6a2l0OmV0aDA6b2ZmIgorCisvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCisjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CisKKyNkZWZpbmUgQ0ZHX1BST01QVAkJImV6a2l0PiAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQorI2RlZmluZSBDRkdfQ0JTSVpFCQkxMDI0CS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplICovCisjZWxzZQorI2RlZmluZSBDRkdfQ0JTSVpFCQkyNTYJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgKi8KKyNlbmRpZgorI2RlZmluZSBDRkdfUEJTSVpFCQkoQ0ZHX0NCU0laRStzaXplb2YoQ0ZHX1BST01QVCkrMTYpCS8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENGR19NQVhBUkdTCQkxNgkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncyAqLworI2RlZmluZSBDRkdfQkFSR1NJWkUJCUNGR19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZSAqLworI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweDAwMTAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24gKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDAxRjAwMDAwCS8qIDEgLi4uIDMxIE1CIGluIERSQU0gKi8KKyNkZWZpbmUgQ0ZHX0xPQURfQUREUgkJMHgwMTAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworI2RlZmluZSBDRkdfSFoJCQkxMDAwCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEwIG1zIHRpY2tzICovCisjZGVmaW5lIENGR19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9CisjZGVmaW5lIENGR19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19NQVhfUkFNX1NJWkUJMHgwMjAwMDAwMAorI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkJMHgyMDAwMDAwMAorCisjZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDI1NiA8PCAxMCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IJKi8KKyNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQkoQ0ZHX01BWF9SQU1fU0laRSAtIENGR19NT05JVE9SX0xFTikKKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCSgxMjggPDwgMTApCS8qIFJlc2VydmUgMTI4IGtCIGZvciBtYWxsb2MoKQkqLworI2RlZmluZSBDRkdfTUFMTE9DX0JBU0UJCShDRkdfTU9OSVRPUl9CQVNFIC0gQ0ZHX01BTExPQ19MRU4pCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCTB4NDAwMAorI2RlZmluZSBDRkdfR0JMX0RBVEFfQUREUgkoQ0ZHX01BTExPQ19CQVNFIC0gQ0ZHX0dCTF9EQVRBX1NJWkUpCisjZGVmaW5lIENPTkZJR19TVEFDS0JBU0UJKENGR19HQkxfREFUQV9BRERSICAtIDQpCisKKyNkZWZpbmUgQ0ZHX0JPT1RNQVBTWgkJKDggPDwgMjApCS8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIMF9CQVNFCQkweDIwMDAwMDAwCisjZGVmaW5lIENGR19GTEFTSDFfQkFTRQkJMHgyMDIwMDAwMAorI2RlZmluZSBDRkdfRkxBU0gyX0JBU0UJCTB4MjAyODAwMDAKKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwkzCS8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzICovCisjZGVmaW5lIENGR19NQVhfRkxBU0hfU0VDVAk0MAkvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAgKi8KKworI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNICTEKKyNkZWZpbmUgQ0ZHX0VOVl9BRERSCQkweDIwMDIwMDAwCisjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4MTAwMDAgLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCBTZWN0b3IgKi8KKworLyogSkZGUyBQYXJ0aXRpb24gb2Zmc2V0IHNldCAgKi8KKyNkZWZpbmUgQ0ZHX0pGRlMyX0ZJUlNUX0JBTksgMAorI2RlZmluZSBDRkdfSkZGUzJfTlVNX0JBTktTICAxCisvKiA1MTJrIHJlc2VydmVkIGZvciB1LWJvb3QgKi8KKyNkZWZpbmUgQ0ZHX0pGRlMyX0ZJUlNUX1NFQ1RPUgkJICAgICAgIDExCisKKworLyoKKyAqIFN0YWNrIHNpemVzCisgKi8KKyNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkoMTI4KjEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KKworI2RlZmluZSBQT0xMX01PREUJCTEKKyNkZWZpbmUgRkxBU0hfVE9UX1NFQ1QJCTQwCisjZGVmaW5lIEZMQVNIX1NJWkUJCTB4MjIwMDAwCisjZGVmaW5lIENGR19GTEFTSF9TSVpFCQkweDIyMDAwMAorCisvKgorICogSW5pdGlhbGl6ZSBQU0Q0MjU2IHJlZ2lzdGVycyBmb3IgdXNpbmcgSTJDCisgKi8KKyNkZWZpbmUgQ09ORklHX01JU0NfSU5JVF9SCisKKy8qCisgKiBJMkMgc2V0dGluZ3MKKyAqIEJ5IGRlZmF1bHQgUEYxIGlzIHVzZWQgYXMgU0RBIGFuZCBQRjAgYXMgU0NMIG9uIHRoZSBTdGFtcCBib2FyZAorICovCisjZGVmaW5lIENPTkZJR19TT0ZUX0kyQwkJCTEJLyogSTJDIGJpdC1iYW5nZWQJCSovCisvKgorICogU29mdHdhcmUgKGJpdC1iYW5nKSBJMkMgZHJpdmVyIGNvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBQRl9TQ0wJCQkJUEYwCisjZGVmaW5lIFBGX1NEQQkJCQlQRjEKKworI2RlZmluZSBJMkNfSU5JVAkJCSgqcEZJT19ESVIgfD0gIFBGX1NDTCk7IGFzbSgic3N5bmM7IikKKyNkZWZpbmUgSTJDX0FDVElWRQkJCSgqcEZJT19ESVIgfD0gIFBGX1NEQSk7ICpwRklPX0lORU4gJj0gflBGX1NEQTsgYXNtKCJzc3luYzsiKQorI2RlZmluZSBJMkNfVFJJU1RBVEUJCQkoKnBGSU9fRElSICY9IH5QRl9TREEpOyAqcEZJT19JTkVOIHw9IFBGX1NEQTsgYXNtKCJzc3luYzsiKQorI2RlZmluZSBJMkNfUkVBRAkJCSgodm9sYXRpbGUpKCpwRklPX0ZMQUdfRCAmIFBGX1NEQSkgIT0gMCk7IGFzbSgic3N5bmM7IikKKyNkZWZpbmUgSTJDX1NEQShiaXQpCQkJaWYoYml0KSB7IFwKKwkJCQkJCQkqcEZJT19GTEFHX1MgPSBQRl9TREE7IFwKKwkJCQkJCQlhc20oInNzeW5jOyIpOyBcCisJCQkJCQl9IFwKKwkJCQkJZWxzZQl7IFwKKwkJCQkJCQkqcEZJT19GTEFHX0MgPSBQRl9TREE7IFwKKwkJCQkJCQlhc20oInNzeW5jOyIpOyBcCisJCQkJCQl9CisjZGVmaW5lIEkyQ19TQ0woYml0KQkJCWlmKGJpdCkgeyBcCisJCQkJCQkJKnBGSU9fRkxBR19TID0gUEZfU0NMOyBcCisJCQkJCQkJYXNtKCJzc3luYzsiKTsgXAorCQkJCQkJfSBcCisJCQkJCWVsc2UJeyBcCisJCQkJCQkJKnBGSU9fRkxBR19DID0gUEZfU0NMOyBcCisJCQkJCQkJYXNtKCJzc3luYzsiKTsgXAorCQkJCQkJfQorI2RlZmluZSBJMkNfREVMQVkJCQl1ZGVsYXkoNSkJLyogMS80IEkyQyBjbG9jayBkdXJhdGlvbiAqLworCisjZGVmaW5lIENGR19JMkNfU1BFRUQJCQk1MDAwMAorI2RlZmluZSBDRkdfSTJDX1NMQVZFCQkJMHhGRQorCisKKyNkZWZpbmUgX19BRFNQTFBCTEFDS0ZJTl9fCTEKKyNkZWZpbmUgX19BRFNQQkY1MzNfXwkJMQorCisvKiAweEZGLCAweDdCQjA3QkIwLCAweDIyNTQ3QkIwICovCisvKiAjZGVmaW5lIEFNR0NUTFZBTAkJKEFNQkVOX1AwIHwgQU1CRU5fUDEgfCBBTUJFTl9QMiB8IEFNQ0tFTikKKyNkZWZpbmUgQU1CQ1RMMFZBTAkJKEIxV0FUXzcgfCBCMVJBVF8xMSB8IEIxSFRfMiB8IEIxU1RfMyB8IEIxVFRfNCB8IH5CMVJEWVBPTCB8CVwKKwkJCQl+QjFSRFlFTiB8IEIwV0FUXzcgfCBCMFJBVF8xMSB8IEIwSFRfMiB8IEIwU1RfMyB8IEIwVFRfNCB8IH5CMFJEWVBPTCB8IH5CMFJEWUVOKQorI2RlZmluZSBBTUJDVEwxVkFMCQkoQjNXQVRfMiB8IEIzUkFUXzIgfCBCM0hUXzEgfCBCM1NUXzEgfCBCM1RUXzQgfCBCM1JEWVBPTCB8IH5CM1JEWUVOIHwJXAorCQkJCUIyV0FUXzcgfCBCMlJBVF8xMSB8IEIySFRfMiB8IEIyU1RfMyB8IEIyVFRfNCB8IH5CMlJEWVBPTCB8IH5CMlJEWUVOKQorKi8KKyNkZWZpbmUgQU1HQ1RMVkFMCQkweEZGCisjZGVmaW5lIEFNQkNUTDBWQUwJCTB4N0JCMDdCQjAKKyNkZWZpbmUgQU1CQ1RMMVZBTAkJMHhGRkMyN0JCMAorCisjZGVmaW5lIENPTkZJR19WRFNQCQkxCisKKyNpZmRlZiBDT05GSUdfVkRTUAorI2RlZmluZSBFVF9FWEVDX1ZEU1AJCTB4OAorI2RlZmluZSBTSFRfU1RSVEFCX1ZEU1AJCTB4MQorI2RlZmluZSBFTEZTSERSU0laRV9WRFNQCTB4MkMKKyNkZWZpbmUgVkRTUF9FTlRSWV9BRERSCQkweEZGQTAwMDAwCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvZ3c4MjYwLmggYi9pbmNsdWRlL2NvbmZpZ3MvZ3c4MjYwLmgKaW5kZXggNmMwODA0My4uNGY4M2IxOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2d3ODI2MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9ndzgyNjAuaApAQCAtMzA1LDcgKzMwNSw2IEBACiAJCQkgICAgICAgQ0ZHX0NNRF9CRURCVUcgIHwgXAogCQkJICAgICAgIENGR19DTURfRUxGIHwgXAogCQkJICAgICAgIENGR19DTURfQVNLRU5WICB8IFwKLQkJCSAgICAgICBDRkdfQ01EX0VDSE8gICAgfCBcCiAJCQkgICAgICAgQ0ZHX0NNRF9SRUdJTkZPIHwgXAogCQkJICAgICAgIENGR19DTURfSU1NQVAgICB8IFwKIAkJCSAgICAgICBDRkdfQ01EX01JSSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9pbmthNHgwLmggYi9pbmNsdWRlL2NvbmZpZ3MvaW5rYTR4MC5oCmluZGV4IGMwY2M0ZjEuLjc3M2Q1ZDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9pbmthNHgwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2lua2E0eDAuaApAQCAtMTAxLDcgKzEwMSw3IEBACiAvKgogICogQXV0b2Jvb3RpbmcKICAqLwotI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTUJLyogYXV0b2Jvb3QgYWZ0ZXIgNSBzZWNvbmRzICovCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJMQkvKiBhdXRvYm9vdCBhZnRlciAxIHNlY29uZCAqLwogCiAjZGVmaW5lIENPTkZJR19QUkVCT09UCSJlY2hvOyIgXAogCSJlY2hvIFR5cGUgXCJydW4gZmxhc2hfbmZzXCIgdG8gbW91bnQgcm9vdCBmaWxlc3lzdGVtIG92ZXIgTkZTOyIgXApAQCAtMTA5LDYgKzEwOSwxNiBAQAogCiAjdW5kZWYJQ09ORklHX0JPT1RBUkdTCiAKKyNkZWZpbmUJQ09ORklHX0VUSEFERFIJCTAwOmEwOmE0OjAzOjAwOjAwCisjZGVmaW5lCUNPTkZJR19PVkVSV1JJVEVfRVRIQUREUl9PTkNFCisKKyNkZWZpbmUJQ09ORklHX0lQQUREUgkJMTkyLjE2OC4xMDAuMgorI2RlZmluZQlDT05GSUdfU0VSVkVSSVAJCTE5Mi4xNjguMTAwLjEKKyNkZWZpbmUJQ09ORklHX05FVE1BU0sJCTI1NS4yNTUuMjU1LjAKKyNkZWZpbmUgSE9TVE5BTUUJCWlua2E0eDAKKyNkZWZpbmUgQ09ORklHX0JPT1RGSUxFCQkvdGZ0cGJvb3QvaW5rYTR4MC91SW1hZ2UKKyNkZWZpbmUJQ09ORklHX1JPT1RQQVRICQkvb3B0L2VsZGsvcHBjXzZ4eAorCiAjZGVmaW5lIENPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJCVwKIAkibmV0ZGV2PWV0aDBcMCIJCQkJCQkJXAogCSJuZnNhcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3ICIJCQlcCkBAIC0xMTcsMTMgKzEyNywyMiBAQAogCSJhZGRpcD1zZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gIgkJCQlcCiAJCSJpcD0ke2lwYWRkcn06JHtzZXJ2ZXJpcH06JHtnYXRld2F5aXB9OiR7bmV0bWFza30iCVwKIAkJIjoke2hvc3RuYW1lfToke25ldGRldn06b2ZmIHBhbmljPTFcMCIJCQlcCi0JImZsYXNoX25mcz1ydW4gbmZzYXJncyBhZGRpcDsiCQkJCQlcCisJImFkZGNvbnM9c2V0ZW52IGJvb3RhcmdzICR7Ym9vdGFyZ3N9ICIJCQkJXAorCQkiY29uc29sZT10dHlTMCwke2JhdWRyYXRlfVwwIgkJCQlcCisJImZsYXNoX25mcz1ydW4gbmZzYXJncyBhZGRpcCBhZGRjb25zOyIJCQkJXAogCQkiYm9vdG0gJHtrZXJuZWxfYWRkcn1cMCIJCQkJXAotCSJuZXRfbmZzPXRmdHAgMjAwMDAwICR7Ym9vdGZpbGV9O3J1biBuZnNhcmdzIGFkZGlwO2Jvb3RtXDAiCVwKLQkicm9vdHBhdGg9L29wdC9lbGRrL3BwY184Mnh4XDAiCQkJCQlcCisJIm5ldF9uZnM9dGZ0cCAyMDAwMDAgJHtib290ZmlsZX07IgkJCQlcCisJCSJydW4gbmZzYXJncyBhZGRpcCBhZGRjb25zO2Jvb3RtXDAiCQkJXAorCSJlbmFibGVfZGlzcD1tdy5sIDEwMDAwMCAwNDAwMDAwMCAxOyIJCQkJXAorCQkiY3AubCAxMDAwMDAgZjAwMDBiMjAgMTsiCQkJCVwKKwkJImNwLmwgMTAwMDAwIGYwMDAwYjI4IDFcMCIJCQkJXAorCSJpZGVhcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvaGRhMSByd1wwIgkJCVwKKwkiaWRlX2Jvb3Q9ZXh0MmxvYWQgaWRlIDA6MSAyMDAwMDAgdUltYWdlOyIJCQlcCisJCSJydW4gaWRlYXJncyBhZGRpcCBhZGRjb25zIGVuYWJsZV9kaXNwO2Jvb3RtIgkJXAorCSJicmlnaHRuZXNzPTI1NVwwIgkJCQkJCVwKIAkiIgogCi0jZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkicnVuIG5ldF9uZnMiCisjZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkicnVuIGlkZV9ib290IgogCiAvKgogICogSVBCIEJ1cyBjbG9ja2luZyBjb25maWd1cmF0aW9uLgpAQCAtMTkzLDYgKzIxMiw3IEBACiAgKi8KIC8qICNkZWZpbmUgQ09ORklHX0ZFQ18xME1CSVQgMSAqLwogI2RlZmluZSBDT05GSUdfUEhZX0FERFIJCTB4MDAKKyNkZWZpbmUgQ09ORklHX01JSQogCiAvKgogICogR1BJTyBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbWNjMjAwLmggYi9pbmNsdWRlL2NvbmZpZ3MvbWNjMjAwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRkZWUzYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9tY2MyMDAuaApAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNgorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisvKgorICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKKyAqIChlYXN5IHRvIGNoYW5nZSkKKyAqLworCisjZGVmaW5lIENPTkZJR19NUEM1MjAwCisjZGVmaW5lIENPTkZJR19NUEM1eHh4CQkxCS8qIFRoaXMgaXMgYW4gTVBDNXh4eCBDUFUJCSovCisjZGVmaW5lIENPTkZJR19NQ0MyMDAJCTEJLyogLi4uIG9uIE1DQzIwMCBib2FyZAkJCSovCisKKyNkZWZpbmUgQ0ZHX01QQzVYWFhfQ0xLSU4JMzMwMDAwMDAgLyogLi4uIHJ1bm5pbmcgYXQgMzNNSHoJCSovCisKKyNkZWZpbmUgQ09ORklHX01JU0NfSU5JVF9SCisKKyNkZWZpbmUgQk9PVEZMQUdfQ09MRAkJMHgwMQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAJKi8KKyNkZWZpbmUgQk9PVEZMQUdfV0FSTQkJMHgwMgkvKiBTb2Z0d2FyZSByZWJvb3QJICAgICAJCSovCisKKyNkZWZpbmUgQ0ZHX0NBQ0hFTElORV9TSVpFCTMyCS8qIEZvciBNUEM1eHh4IENQVXMgCQkJKi8KKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQorIyAgZGVmaW5lIENGR19DQUNIRUxJTkVfU0hJRlQJNQkvKiBsb2cgYmFzZSAyIG9mIHRoZSBhYm92ZSB2YWx1ZSAJKi8KKyNlbmRpZgorCisvKgorICogU2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19QU0NfQ09OU09MRQkxCS8qIGNvbnNvbGUgaXMgb24gUFNDMQkJCSovCisjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCisjZGVmaW5lIENGR19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCwgMjMwNDAwIH0KKworI2RlZmluZSBDT05GSUdfTUlJCQkxCisKKyNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04KKworLyogVVNCICovCisjZGVmaW5lIENPTkZJR19VU0JfT0hDSQorI2RlZmluZSBBRERfVVNCX0NNRCAgICAgICAgICAgICBDRkdfQ01EX1VTQiB8IENGR19DTURfRkFUCisjZGVmaW5lIENPTkZJR19VU0JfU1RPUkFHRQorCisvKgorICogU3VwcG9ydGVkIGNvbW1hbmRzCisgKi8KKyNkZWZpbmUgQ09ORklHX0NPTU1BTkRTCSAgICAgICAoQ09ORklHX0NNRF9ERkwJfCBcCisJCQkJQUREX1VTQl9DTUQJfCBcCisJCQkJQ0ZHX0NNRF9CRURCVUcJfCBcCisJCQkJQ0ZHX0NNRF9EQVRFCXwgXAorCQkJCUNGR19DTURfREhDUAl8IFwKKwkJCQlDRkdfQ01EX0VFUFJPTQl8IFwKKwkJCQlDRkdfQ01EX0ZBVAl8IFwKKwkJCQlDRkdfQ01EX0kyQwl8IFwKKwkJCQlDRkdfQ01EX05GUwl8IFwKKwkJCQlDRkdfQ01EX1NOVFAJKQorCisvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCisjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CisKKy8qCisgKiBBdXRvYm9vdGluZworICovCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJNQkvKiBhdXRvYm9vdCBhZnRlciA1IHNlY29uZHMgKi8KKworI2RlZmluZSBDT05GSUdfUFJFQk9PVAkiZWNobzsiCVwKKwkiZWNobyBUeXBlIFwicnVuIGZsYXNoX25mc1wiIHRvIG1vdW50IHJvb3QgZmlsZXN5c3RlbSBvdmVyIE5GUzsiIFwKKwkiZWNobyIKKworI3VuZGVmCUNPTkZJR19CT09UQVJHUworCisjZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJCVwKKwkibmV0ZGV2PWV0aDBcMCIJCQkJCQkJXAorCSJob3N0bmFtZT1tY2MyMDBcMCIJCQkJCQlcCisJIm5mc2FyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgcncgIgkJCVwKKwkJIm5mc3Jvb3Q9JHtzZXJ2ZXJpcH06JHtyb290cGF0aH1cMCIJCQlcCisJInJhbWFyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9yYW0gcndcMCIJCQlcCisJImFkZGlwPXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSAiCQkJCVwKKwkJImlwPSR7aXBhZGRyfToke3NlcnZlcmlwfToke2dhdGV3YXlpcH06JHtuZXRtYXNrfSIJXAorCQkiOiR7aG9zdG5hbWV9OiR7bmV0ZGV2fTpvZmYgcGFuaWM9MVwwIgkJCVwKKwkiZmxhc2hfbmZzPXJ1biBuZnNhcmdzIGFkZGlwOyIJCQkJCVwKKwkJImJvb3RtICR7a2VybmVsX2FkZHJ9XDAiCQkJCVwKKwkiZmxhc2hfc2VsZj1ydW4gcmFtYXJncyBhZGRpcDsiCQkJCQlcCisJCSJib290bSAke2tlcm5lbF9hZGRyfSAke3JhbWRpc2tfYWRkcn1cMCIJCVwKKwkibmV0X25mcz10ZnRwIDIwMDAwMCAke2Jvb3RmaWxlfTtydW4gbmZzYXJncyBhZGRpcDtib290bVwwIglcCisJInJvb3RwYXRoPS9vcHQvZWxkay9wcGNfNnh4XDAiCQkJCQlcCisJImJvb3RmaWxlPS90ZnRwYm9vdC9tY2MyMDAvdUltYWdlXDAiCQkJCVwKKwkiYmF1ZHJhdGU9MTE1MjAwXDAiCQkJCQkJXAorCSJsb2FkPXRmdHAgMjAwMDAwIC90ZnRwYm9vdC9tY2MyMDAvdS1ib290LmJpblwwIgkJXAorCSJ1cGRhdGU9cHJvdGVjdCBvZmYgRkZGMDAwMDAgKyR7ZmlsZXNpemV9OyIJCQlcCisJCSJlcmEgRkZGMDAwMDAgKyR7ZmlsZXNpemV9OyIJCQkJXAorCQkiY3AuYiAyMDAwMDAgRkZGMDAwMDAgJHtmaWxlc2l6ZX1cMCIJCSAgICAgICAgXAorCSJzZXJ2ZXJpcD0xOTIuMTY4LjEuMVwwIgkJCQkJXAorCSJpcGFkZHI9MTkyLjE2OC4xMzMuMTQ0XDAiCQkJCQlcCisJIm5ldG1hc2s9MjU1LjI1NS4wLjBcMCIJCQkJCQlcCisJInVubG9jaz15ZXNcMCIJCQkJCQkJXAorCSJldGhhZGRyPTAwOjAyOjQ0OjdEOjczOjNCXDAiCQkJCQlcCisJIiIKKworI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJInJ1biBmbGFzaF9zZWxmIgorCisjZGVmaW5lIENGR19IVVNIX1BBUlNFUgkJMQkvKiB1c2UgImh1c2giIGNvbW1hbmQgcGFyc2VyCSovCisjZGVmaW5lIENGR19QUk9NUFRfSFVTSF9QUzIJIj4gIgorCisvKgorICogSVBCIEJ1cyBjbG9ja2luZyBjb25maWd1cmF0aW9uLgorICovCisjZGVmaW5lIENGR19JUEJTUEVFRF8xMzMgICAJCS8qIGRlZmluZSBmb3IgMTMzTUh6IHNwZWVkICovCisKKy8qCisgKiBJMkMgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19IQVJEX0kyQwkJMQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0ICovCisjZGVmaW5lIENGR19JMkNfTU9EVUxFCQkyCS8qIFNlbGVjdCBJMkMgbW9kdWxlICMxIG9yICMyICovCisKKyNkZWZpbmUgQ0ZHX0kyQ19TUEVFRAkJMTAwMDAwIC8qIDEwMCBrSHogKi8KKyNkZWZpbmUgQ0ZHX0kyQ19TTEFWRQkJMHg3RgorCisvKgorICogRUVQUk9NIGNvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDRkdfSTJDX0VFUFJPTV9BRERSCQkweDU4CisjZGVmaW5lIENGR19JMkNfRUVQUk9NX0FERFJfTEVOCQkxCisjZGVmaW5lIENGR19FRVBST01fUEFHRV9XUklURV9CSVRTCTQKKyNkZWZpbmUgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0RFTEFZX01TCTEwCisKKy8qCisgKiBSVEMgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19SVENfUENGODU2MworI2RlZmluZSBDRkdfSTJDX1JUQ19BRERSCQkweDUxCisKKy8qCisgKiBGbGFzaCBjb25maWd1cmF0aW9uICg4LDE2IG9yIDMyIE1CKQorICogVEVYVCBiYXNlIGFsd2F5cyBhdCAweEZGRjAwMDAwCisgKiBFTlZfQUREUiBhbHdheXMgYXQgIDB4RkZGNDAwMDAKKyAqIEZMQVNIX0JBU0UgYXQgMHhGQzAwMDAwMCBmb3IgNjQgTUIgKG9ubHkgMzJNQiBhcmUgc3VwcG9ydGVkLCBub3QgZW5vdWdoIGFkZHIgbGluZXMhISEpCisgKiAgICAgICAgICAgICAgIDB4RkUwMDAwMDAgZm9yIDMyIE1CCisgKiAgICAgICAgICAgICAgIDB4RkYwMDAwMDAgZm9yIDE2IE1CCisgKiAgICAgICAgICAgICAgIDB4RkY4MDAwMDAgZm9yICA4IE1CCisgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0JBU0UJCTB4ZmMwMDAwMDAKKyNkZWZpbmUgQ0ZHX0ZMQVNIX1NJWkUJCTB4MDQwMDAwMDAKKworI2RlZmluZSBDRkdfRkxBU0hfQ0ZJCQkJCS8qIFRoZSBmbGFzaCBpcyBDRkkgY29tcGF0aWJsZQkqLworI2RlZmluZSBDRkdfRkxBU0hfQ0ZJX0RSSVZFUgkJCS8qIFVzZSBjb21tb24gQ0ZJIGRyaXZlcgkqLworCisjZGVmaW5lIENGR19GTEFTSF9CQU5LU19MSVNUCXsgQ0ZHX0ZMQVNIX0JBU0UgfQorCisjZGVmaW5lIENGR19NQVhfRkxBU0hfQkFOS1MJMQkvKiBtYXggbnVtYmVyIG9mIG1lbW9yeSBiYW5rcwkJKi8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTUxMgkvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAJKi8KKworI2RlZmluZSBDRkdfRkxBU0hfVVNFX0JVRkZFUl9XUklURSAxCS8qIHVzZSBidWZmZXJlZCB3cml0ZXMgKDIweCBmYXN0ZXIpCSovCisjZGVmaW5lIENGR19GTEFTSF9QUk9URUNUSU9OCTEJLyogaGFyZHdhcmUgZmxhc2ggcHJvdGVjdGlvbgkJKi8KKworI2RlZmluZSBDRkdfRkxBU0hfRVJBU0VfVE9VVAkxMjAwMDAJLyogVGltZW91dCBmb3IgRmxhc2ggRXJhc2UgKGluIG1zKQkqLworI2RlZmluZSBDRkdfRkxBU0hfV1JJVEVfVE9VVAk1MDAJLyogVGltZW91dCBmb3IgRmxhc2ggV3JpdGUgKGluIG1zKQkqLworCisjZGVmaW5lIENGR19GTEFTSF9FTVBUWV9JTkZPCQkvKiBwcmludCAnRScgZm9yIGVtcHR5IHNlY3RvciBvbiBmbGluZm8gKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX1FVSUVUX1RFU1QJMQkvKiBkb24ndCB3YXJuIHVwb24gdW5rbm93biBmbGFzaAkqLworCisjZGVmaW5lIENGR19FTlZfSVNfSU5fRkxBU0ggICAgIDEJLyogdXNlIEZMQVNIIGZvciBlbnZpcm9ubWVudCB2YXJzCSovCisKKyNkZWZpbmUgQ0ZHX0VOVl9TRUNUX1NJWkUJMHg0MDAwMCAJLyogc2l6ZSBvZiBvbmUgY29tcGxldGUgc2VjdG9yCSovCisjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UgKyBDRkdfTU9OSVRPUl9MRU4pCisjZGVmaW5lCUNGR19FTlZfU0laRQkJMHgyMDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yCSovCisKKy8qIEFkZHJlc3MgYW5kIHNpemUgb2YgUmVkdW5kYW50IEVudmlyb25tZW50IFNlY3RvcgkqLworI2RlZmluZSBDRkdfRU5WX0FERFJfUkVEVU5ECShDRkdfRU5WX0FERFIgKyBDRkdfRU5WX1NFQ1RfU0laRSkKKyNkZWZpbmUgQ0ZHX0VOVl9TSVpFX1JFRFVORAkoQ0ZHX0VOVl9TSVpFKQorCisjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCTEJLyogYWxsb3cgbW9kaWZpY2F0aW9uIG9mIHZlbmRvciBwYXJhbXMgKi8KKworLyoKKyAqIE1lbW9yeSBtYXAKKyAqLworI2RlZmluZSBDRkdfTUJBUgkJMHhmMDAwMDAwMAorI2RlZmluZSBDRkdfU0RSQU1fQkFTRQkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfREVGQVVMVF9NQkFSCTB4ODAwMDAwMDAKKworLyogVXNlIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCisjZGVmaW5lIENGR19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQorI2RlZmluZSBDRkdfSU5JVF9SQU1fRU5ECU1QQzVYWFhfU1JBTV9TSVpFCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gRFBSQU0gKi8KKworCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KKyNkZWZpbmUgQ0ZHX0dCTF9EQVRBX09GRlNFVAkoQ0ZHX0lOSVRfUkFNX0VORCAtIENGR19HQkxfREFUQV9TSVpFKQorI2RlZmluZSBDRkdfSU5JVF9TUF9PRkZTRVQJQ0ZHX0dCTF9EQVRBX09GRlNFVAorCisjZGVmaW5lIENGR19NT05JVE9SX0JBU0UgICAgVEVYVF9CQVNFCisjaWYgKENGR19NT05JVE9SX0JBU0UgPCBDRkdfRkxBU0hfQkFTRSkKKyMgICBkZWZpbmUgQ0ZHX1JBTUJPT1QJCTEKKyNlbmRpZgorCisjZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDI1NiA8PCAxMCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IJKi8KKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCSg1MTIgPDwgMTApCS8qIFJlc2VydmUgNTEyIGtCIGZvciBtYWxsb2MoKQkqLworI2RlZmluZSBDRkdfQk9PVE1BUFNaCQkoOCA8PCAyMCkJLyogSW5pdGlhbCBNZW1vcnkgbWFwIGZvciBMaW51eCAqLworCisvKgorICogRXRoZXJuZXQgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19NUEM1eHh4X0ZFQwkxCisvKgorICogRGVmaW5lIENPTkZJR19GRUNfMTBNQklUIHRvIGZvcmNlIEZFQyBhdCAxME1iCisgKi8KKy8qICNkZWZpbmUgQ09ORklHX0ZFQ18xME1CSVQgMSAqLworI2RlZmluZSBDT05GSUdfUEhZX0FERFIJCTEKKworLyoKKyAqIEdQSU8gY29uZmlndXJhdGlvbgorICovCisvKiAweDEwMDAwMDA0ID0gMzJNQiBTRFJBTSAqLworLyogMHg5MDAwMDAwNCA9IDY0TUIgU0RSQU0gKi8KKyNkZWZpbmUgQ0ZHX0dQU19QT1JUX0NPTkZJRwkweDEwMDAwMDA0CisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCisgKi8KKyNkZWZpbmUgQ0ZHX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJICAgICovCisjZGVmaW5lIENGR19QUk9NUFQJCSI9PiAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgICAqLworI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0tHREIpCisjZGVmaW5lIENGR19DQlNJWkUJCTEwMjQJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgICovCisjZWxzZQorI2RlZmluZSBDRkdfQ0JTSVpFCQkyNTYJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgICovCisjZW5kaWYKKyNkZWZpbmUgQ0ZHX1BCU0laRSAoQ0ZHX0NCU0laRStzaXplb2YoQ0ZHX1BST01QVCkrMTYpCS8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENGR19NQVhBUkdTCQkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KKyNkZWZpbmUgQ0ZHX0JBUkdTSVpFCQlDRkdfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUJKi8KKworI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweDAwMTAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24gKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDAwZjAwMDAwCS8qIDEgLi4uIDE1IE1CIGluIERSQU0JKi8KKworI2RlZmluZSBDRkdfTE9BRF9BRERSCQkweDEwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworCisjZGVmaW5lIENGR19IWgkJCTEwMDAJLyogZGVjcmVtZW50ZXIgZnJlcTogMSBtcyB0aWNrcyAqLworCisvKgorICogVmFyaW91cyBsb3ctbGV2ZWwgc2V0dGluZ3MKKyAqLworI2RlZmluZSBDRkdfSElEMF9JTklUCQlISUQwX0lDRSB8IEhJRDBfSUNGSQorI2RlZmluZSBDRkdfSElEMF9GSU5BTAkJSElEMF9JQ0UKKworI2RlZmluZSBDRkdfQk9PVENTX1NUQVJUCUNGR19GTEFTSF9CQVNFCisjZGVmaW5lIENGR19CT09UQ1NfU0laRQkJQ0ZHX0ZMQVNIX1NJWkUKKyNkZWZpbmUgQ0ZHX0JPT1RDU19DRkcJCTB4MDAwNGZiMDAKKyNkZWZpbmUgQ0ZHX0NTMF9TVEFSVAkJQ0ZHX0ZMQVNIX0JBU0UKKyNkZWZpbmUgQ0ZHX0NTMF9TSVpFCQlDRkdfRkxBU0hfU0laRQorCisjZGVmaW5lIENGR19DU19CVVJTVAkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfQ1NfREVBRENZQ0xFCTB4MzMzMzMzMzMKKworI2RlZmluZSBDRkdfUkVTRVRfQUREUkVTUwkweGZmMDAwMDAwCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFVTQiBzdHVmZgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIENPTkZJR19VU0JfQ0xPQ0sJMHgwMDAxQkJCQgorI2RlZmluZSBDT05GSUdfVVNCX0NPTkZJRwkweDAwMDA1MDAwCisKKyNlbmRpZiAvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvbmV0c3Rhci5oIGIvaW5jbHVkZS9jb25maWdzL25ldHN0YXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTc3OTZhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL25ldHN0YXIuaApAQCAtMCwwICsxLDI2NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNSAyTiBURUxFS09NVU5JS0FDRSwgTGFkaXNsYXYgTWljaGwKKyAqCisgKiBDb25maWd1YXRpb24gc2V0dGluZ3MgZm9yIHRoZSBUSSBPTUFQIE5ldFN0YXIgYm9hcmQuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworI2luY2x1ZGUgPGNvbmZpZ3Mvb21hcDE1MTAuaD4KKworLyoKKyAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCisgKiAoZWFzeSB0byBjaGFuZ2UpCisgKi8KKyNkZWZpbmUgQ09ORklHX0FSTTkyNVQJMQkJLyogVGhpcyBpcyBhbiBhcm05MjV0IENQVSAqLworI2RlZmluZSBDT05GSUdfT01BUAkxCQkvKiBpbiBhIFRJIE9NQVAgY29yZSAqLworI2RlZmluZSBDT05GSUdfT01BUDE1MTAgMQkJLyogd2hpY2ggaXMgaW4gYSA1OTEwICovCisKKy8qIElucHV0IGNsb2NrIG9mIFBMTCAqLworI2RlZmluZSBDT05GSUdfU1lTX0NMS19GUkVRCTE1MDAwMDAwMAkvKiAxNTBNSHogaW5wdXQgY2xvY2sgKi8KKyNkZWZpbmUgQ09ORklHX1hUQUxfRlJFUQkxMjAwMDAwMAorCisjdW5kZWYgQ09ORklHX1VTRV9JUlEJCQkvKiB3ZSBkb24ndCBuZWVkIElSUS9GSVEgc3R1ZmYgKi8KKworI2RlZmluZSBDT05GSUdfTUlTQ19JTklUX1IJCS8qIFRoZXJlIGlzIG5vdGhpbmcgdG8gcmVhbGx5IGluaXQgKi8KKyNkZWZpbmUgQk9BUkRfTEFURV9JTklUCQkJLyogYnV0IHdlIGZsYXNoIHRoZSBMRURzIGhlcmUgKi8KKworI2RlZmluZSBDT05GSUdfQ01ETElORV9UQUcJCTEJLyogZW5hYmxlIHBhc3Npbmcgb2YgQVRBR3MgKi8KKyNkZWZpbmUgQ09ORklHX1NFVFVQX01FTU9SWV9UQUdTCTEKKyNkZWZpbmUgQ09ORklHX0lOSVRSRF9UQUcJCTEKKworI2RlZmluZSBDRkdfREVWSUNFX05VTExERVYJCTEJLyogZW5hYmxlIG51bGwgZGV2aWNlICovCisjZGVmaW5lIENPTkZJR19TSUxFTlRfQ09OU09MRQkJMQkvKiBlbmFibGUgc2lsZW50IHN0YXJ0dXAgKi8KKworLyoKKyAqIFBoeXNpY2FsIE1lbW9yeSBNYXAKKyAqLworI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwkxCQkvKiB3ZSBoYXZlIDEgYmFuayBvZiBEUkFNICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMQkJMHgxMDAwMDAwMAkvKiBTRFJBTSBCYW5rICMxICovCisjZGVmaW5lIFBIWVNfRkxBU0hfMQkJMHgwMDAwMDAwMAkvKiBGbGFzaCBCYW5rICMxICovCisKKy8qCisgKiBGTEFTSCBvcmdhbml6YXRpb24KKyAqLworI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkJUEhZU19GTEFTSF8xCisjZGVmaW5lIENGR19NQVhfRkxBU0hfQkFOS1MJMQorI2lmIChQSFlTX1NEUkFNXzFfU0laRSA9PSBTWl8zMk0pCisvKiNpZiAxKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSQkJCS8qIEZsYXNoIGlzIENGSSBjb25mb3JtYW50ICovCisjZGVmaW5lIENGR19GTEFTSF9DRklfRFJJVkVSCQkvKiBVc2UgdGhlIGNvbW1vbiBkcml2ZXIgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0VNUFRZX0lORk8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTEyOAorI2Vsc2UKKyNkZWZpbmUgUEhZU19GTEFTSF8xX1NJWkUJU1pfMU0KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTE5CisjZGVmaW5lIENGR19GTEFTSF9FUkFTRV9UT1VUCSg1KkNGR19IWikgLyogaW4gdGlja3MgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQJKDUqQ0ZHX0haKQorI2VuZGlmCisKKyNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQlQSFlTX0ZMQVNIXzEKKyNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQlTWl8yNTZLCisKKy8qCisgKiBFbnZpcm9ubWVudCBzZXR0aW5ncworICovCisjZGVmaW5lIENGR19FTlZfSVNfSU5fRkxBU0gKKyNkZWZpbmUgRU5WX0lTX1NPTElUQVJZCisjZGVmaW5lIENGR19FTlZfQUREUgkJMHg0MDAwCisjZGVmaW5lIENGR19FTlZfU0laRQkJU1pfOEsKKyNkZWZpbmUgQ0ZHX0VOVl9TRUNUX1NJWkUJU1pfOEsKKyNkZWZpbmUgQ0ZHX0VOVl9BRERSX1JFRFVORAkweDYwMDAKKyNkZWZpbmUgQ0ZHX0VOVl9TSVpFX1JFRFVORAlDRkdfRU5WX1NJWkUKKyNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKKworLyoKKyAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAorICovCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCTEyOAkvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KKy8qIFhYWCAjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkoU1pfNjRLIC0gQ0ZHX0dCTF9EQVRBX1NJWkUpKi8KKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCVNaXzRNCisKKy8qCisgKiBUaGUgc3RhY2sgc2l6ZSBpcyBzZXQgdXAgaW4gc3RhcnQuUyB1c2luZyB0aGUgc2V0dGluZ3MgYmVsb3cKKyAqLworLyogWFhYICNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQlTWl84SwkvWFhYKiByZWd1bGFyIHN0YWNrICovCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJU1pfMU0JLyogcmVndWxhciBzdGFjayAqLworCisvKgorICogSGFyZHdhcmUgZHJpdmVycworICovCisjZGVmaW5lIENPTkZJR19EUklWRVJfU01DOTExMTEKKyNkZWZpbmUgQ09ORklHX1NNQzkxMTExX0JBU0UJMHgwNDAwMDMwMAorCisvKgorICogTlMxNjU1MCBDb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ0ZHX05TMTY1NTAKKyNkZWZpbmUgQ0ZHX05TMTY1NTBfU0VSSUFMCisjZGVmaW5lIENGR19OUzE2NTUwX1JFR19TSVpFCSgtNCkKKyNkZWZpbmUgQ0ZHX05TMTY1NTBfQ0xLCQkoQ09ORklHX1hUQUxfRlJFUSkJLyogY2FuIGJlIDEyTS8zMktoeiBvciA0OE1oeiAgKi8KKyNkZWZpbmUgQ0ZHX05TMTY1NTBfQ09NMQlPTUFQMTUxMF9VQVJUMV9CQVNFCS8qIHVhcnQxICovCisKKyNkZWZpbmUgQ09ORklHX0NPTlNfSU5ERVgJMQorI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAorI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAgfQorCisvKiNkZWZpbmUgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QqLworLyojZGVmaW5lIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQgKi8KKworLyoKKyAqIE5BTkQgZmxhc2gKKyAqLworI2RlZmluZSBDRkdfTUFYX05BTkRfREVWSUNFCTEKKyNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKKyNkZWZpbmUgQ0ZHX05BTkRfQkFTRQkweDA0MDAwMDAwICsgKDIgPDwgMjMpCisKKy8qCisgKiBKRkZTMiBwYXJ0aXRpb25zIChtdGRwYXJ0cyBjb21tYW5kIGxpbmUgc3VwcG9ydCkKKyAqLworI2RlZmluZSBDT05GSUdfSkZGUzJfQ01ETElORQorI2RlZmluZSBNVERJRFNfREVGQVVMVAkJIm5vcjA9b21hcGZsYXNoLjAsbmFuZDA9b21hcG5hbmQuMCIKKyNkZWZpbmUgTVREUEFSVFNfREVGQVVMVAkibXRkcGFydHM9b21hcGZsYXNoLjA6OGtAMTZrKGVudiksOGsocl9lbnYpLDQ0OGtANTc2ayh1LWJvb3QpO29tYXBuYW5kLjA6NDhNKHJvb3RmczApLDQ4TShyb290ZnMxKSwtKGRhdGEpIgorCisjaWYgMAorI2RlZmluZSBDT05GSUdfQ09NTUFORFMJCShDRkdfQ01EX0JESSAgICB8IFwKKwkJCQkgQ0ZHX0NNRF9CT09URCAgfCBcCisJCQkJIENGR19DTURfREhDUCAgIHwgXAorCQkJCSBDRkdfQ01EX0VOVgl8IFwKKwkJCQkgQ0ZHX0NNRF9GTEFTSCAgfCBcCisJCQkJIENGR19DTURfSU1JICAgIHwgXAorCQkJCSBDRkdfQ01EX0xPQURCICB8IFwKKwkJCQkgQ0ZHX0NNRF9ORVQgICAgfCBcCisJCQkJIENGR19DTURfTUVNT1JZIHwgXAorCQkJCSBDRkdfQ01EX1BJTkcgICB8IFwKKwkJCQkgQ0ZHX0NNRF9SVU4pCisKKyNlbHNlCisjZGVmaW5lIENPTkZJR19DT01NQU5EUwkJKENGR19DTURfQkRJICAgIHwgXAorCQkJCSBDRkdfQ01EX0JPT1REICB8IFwKKwkJCQkgQ0ZHX0NNRF9ESENQICAgfCBcCisJCQkJIENGR19DTURfRU5WCXwgXAorCQkJCSBDRkdfQ01EX0ZMQVNIICB8IFwKKwkJCQkgQ0ZHX0NNRF9OQU5ECXwgXAorCQkJCSBDRkdfQ01EX0lNSSAgICB8IFwKKwkJCQkgQ0ZHX0NNRF9KRkZTMgl8IFwKKwkJCQkgQ0ZHX0NNRF9MT0FEQiAgfCBcCisJCQkJIENGR19DTURfTkVUICAgIHwgXAorCQkJCSBDRkdfQ01EX01FTU9SWSB8IFwKKwkJCQkgQ0ZHX0NNRF9QSU5HICAgfCBcCisJCQkJIENGR19DTURfUlVOKQorCisjZGVmaW5lIENPTkZJR19KRkZTMl9OQU5ECTEJLyogamZmczIgb24gbmFuZCBzdXBwb3J0ICovCisjZW5kaWYKKworI2RlZmluZSBDT05GSUdfQk9PVFBfTUFTSwlDT05GSUdfQk9PVFBfREVGQVVMVAorI2RlZmluZSBDT05GSUdfTE9PUFcKKworLyogdGhpcyBtdXN0IGJlIGluY2x1ZGVkIEFGVEVSIHRoZSBkZWZpbml0aW9uIG9mIENPTkZJR19DT01NQU5EUyAoaWYgYW55KSAqLworI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgorCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJMworI2RlZmluZSBDT05GSUdfWkVST19CT09UREVMQVlfQ0hFQ0sJLyogYWxsb3cgdG8gYnJlYWsgaW4gYWx3YXlzICovCisjdW5kZWYgIENPTkZJR19CT09UQVJHUwkJLyogdGhlIGJvb3QgY29tbWFuZCB3aWxsIHNldCBib290YXJncyovCisjZGVmaW5lIENGR19BVVRPTE9BRAkJIm4iCQkvKiBObyBhdXRvbG9hZCAqLworI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJInJ1biBuYm9vdCIKKyNkZWZpbmUgQ09ORklHX1BSRUJPT1QJCSJydW4gc2V0dXAiCisjZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJXAorCSJzZXR1cD1zZXRlbnYgYm9vdGFyZ3MgY29uc29sZT10dHlTMCwkYmF1ZHJhdGUgIglcCisJCSIkbXRkcGFydHNcMCIJCQkJCVwKKwkib3NwYXJ0PTBcMCIJCQkJCQlcCisJInNldHBhcnQ9IgkJCQkJCVwKKwkiaWYgdGVzdCAtbiAkc3dhcG9zOyB0aGVuICIJCQkJXAorCQkiaWYgdGVzdCAkb3NwYXJ0IC1lcSAwOyB0aGVuIGNocGFydCBuYW5kMCwxOyBlbHNlIGNocGFydCBuYW5kMCwwOyBmaTsgIlwKKwkJInNldGVudiBzd2Fwb3M7IHNhdmVlbnY7ICIJCQlcCisJImVsc2UgIgkJCQkJCQlcCisJCSJjaHBhcnQgbmFuZDAsJG9zcGFydDsgIgkJCVwKKwkiZmlcMCIJCQkJCQkJXAorCSJuZnNhcmdzPXNldGVudiBib290YXJncyAkYm9vdGFyZ3MgIgkJCVwKKwkJImlwPSRpcGFkZHI6JHNlcnZlcmlwOiRnYXRld2F5aXA6JG5ldG1hc2s6JGhvc3RuYW1lOjpvZmYgIiBcCisJCSJuZnNyb290PSRyb290cGF0aCByb290PS9kZXYvbmZzXDAiCQlcCisJImZsYXNoYXJncz1ydW4gc2V0cGFydDtzZXRlbnYgYm9vdGFyZ3MgJGJvb3RhcmdzICIJXAorCQkicm9vdD0vZGV2L210ZGJsb2NrJHBhcnRpdGlvbiBybyAiCQlcCisJCSJyb290ZnN0eXBlPWpmZnMyXDAiCQkJCVwKKwkiaW5pdHJkYXJncz1zZXRlbnYgYm9vdGFyZ3MgJGJvb3RhcmdzICIJCQlcCisJCSJpcD0kaXBhZGRyOiRzZXJ2ZXJpcDokZ2F0ZXdheWlwOiRuZXRtYXNrOiRob3N0bmFtZTo6b2ZmXDAiIFwKKwkiaWJvb3Q9Ym9vdHA7cnVuIGluaXRyZGFyZ3M7dGZ0cDtib290bVwwIgkJXAorCSJmYm9vdD1ydW4gZmxhc2hhcmdzO2ZzbG9hZCAvYm9vdC91SW1hZ2U7Ym9vdG1cMCIJXAorCSJuYm9vdD1ib290cDtydW4gbmZzYXJnczt0ZnRwO2Jvb3RtXDAiCisKKyNpZiAwCS8qIGZlZWwgZnJlZSB0byBkaXNhYmxlIGZvciBkZXZlbG9wbWVudCAqLworI2RlZmluZQlDT05GSUdfQVVUT0JPT1RfS0VZRUQJCS8qIEVuYWJsZSBwYXNzd29yZCBwcm90ZWN0aW9uCSovCisjZGVmaW5lIENPTkZJR19BVVRPQk9PVF9QUk9NUFQJIlxuTmV0U3RhciBQQlggLSBib290IGluICVkIHNlYy4uLlxuIgorI2RlZmluZSBDT05GSUdfQVVUT0JPT1RfREVMQVlfU1RSCSJSIgkvKiAxc3QgInBhc3N3b3JkIgkqLworI2RlZmluZSBDT05GSUdfQk9PVF9SRVRSWV9USU1FCTMwCisjZW5kaWYKKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZSBDRkdfTE9OR0hFTFAJCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJCSovCisjZGVmaW5lIENGR19QUk9NUFQJCSIjICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KKyNkZWZpbmUgQ0ZHX0NCU0laRQkJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLworI2RlZmluZSBDRkdfUEJTSVpFIChDRkdfQ0JTSVpFK3NpemVvZihDRkdfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ0ZHX01BWEFSR1MJCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLworI2RlZmluZSBDRkdfQkFSR1NJWkUJCUNGR19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLworCisjZGVmaW5lIENGR19IVVNIX1BBUlNFUgorI2RlZmluZSBDRkdfUFJPTVBUX0hVU0hfUFMyCSI+ICIKKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUKKworI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAlQSFlTX1NEUkFNXzEKKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQlQSFlTX1NEUkFNXzEgKyBQSFlTX1NEUkFNXzFfU0laRQorCisjdW5kZWYJQ0ZHX0NMS1NfSU5fSFoJCS8qIGV2ZXJ5dGhpbmcsIGluY2wgYm9hcmQgaW5mbywgaW4gSHogKi8KKworI2RlZmluZSBDRkdfTE9BRF9BRERSCQlQSFlTX1NEUkFNXzEgKyAweDQwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworCisvKiBUaGUgMTUxMCBoYXMgMyB0aW1lcnMsIHRoZXkgY2FuIGJlIGRyaXZlbiBieSB0aGUgUmVmQ2xrICgxMk1oeikgb3IgYnkgRFBMTDEuCisgKiBUaGlzIHRpbWUgaXMgZnVydGhlciBzdWJkaXZpZGVkIGJ5IGEgbG9jYWwgZGl2aXNvci4KKyAqLworI2RlZmluZSBDRkdfVElNRVJCQVNFCQlPTUFQMTUxMF9USU1FUjFfQkFTRQorI2RlZmluZSBDRkdfUFZUCQkJNwkJLyogMl4ocHZ0KzEpLCBkaXZpZGUgYnkgMjU2ICovCisjZGVmaW5lIENGR19IWgkJCSgoQ09ORklHX1NZU19DTEtfRlJFUSkvKDIgPDwgQ0ZHX1BWVCkpCisKKyNkZWZpbmUgT01BUDU5MTBfRFBMTF9ESVYJMQorI2RlZmluZSBPTUFQNTkxMF9EUExMX01VTAkoKENPTkZJR19TWVNfQ0xLX0ZSRVEgKiBcCisJCQkJICgxIDw8IE9NQVA1OTEwX0RQTExfRElWKSkgLyBDT05GSUdfWFRBTF9GUkVRKQorCisjZGVmaW5lIE9NQVA1OTEwX0FSTV9QRVJfRElWCTIJLyogQ0tMLzQgKi8KKyNkZWZpbmUgT01BUDU5MTBfTENEX0RJVgkyCS8qIENLTC80ICovCisjZGVmaW5lIE9NQVA1OTEwX0FSTV9ESVYJMAkvKiBDS0wvMSAqLworI2RlZmluZSBPTUFQNTkxMF9EU1BfRElWCTAJLyogQ0tMLzEgKi8KKyNkZWZpbmUgT01BUDU5MTBfVENfRElWCQkxCS8qIENLTC8yICovCisjZGVmaW5lIE9NQVA1OTEwX0RTUF9NTVVfRElWCTEJLyogQ0tMLzIgKi8KKyNkZWZpbmUgT01BUDU5MTBfQVJNX1RJTV9TRUwJMQkvKiBDS0wgdXNlZCBmb3IgTVBVIHRpbWVycyAqLworCisjZGVmaW5lIE9NQVA1OTEwX0FSTV9FTl9DTEsJMHgwM2Q2CS8qIDAwMDAgMDAxMSAxMTAxIDAxMTBiICBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgT01BUDU5MTBfQVJNX0NLQ1RMCSgoT01BUDU5MTBfQVJNX1BFUl9ESVYpICB8CVwKKwkJCQkgKE9NQVA1OTEwX0xDRF9ESVYgPDwgMikgfAlcCisJCQkJIChPTUFQNTkxMF9BUk1fRElWIDw8IDQpIHwJXAorCQkJCSAoT01BUDU5MTBfRFNQX0RJViA8PCA2KSB8CVwKKwkJCQkgKE9NQVA1OTEwX1RDX0RJViA8PCA4KSB8CVwKKwkJCQkgKE9NQVA1OTEwX0RTUF9NTVVfRElWIDw8IDEwKSB8CVwKKwkJCQkgKE9NQVA1OTEwX0FSTV9USU1fU0VMIDw8IDEyKSkKKworI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9wcG1jODI2MC5oIGIvaW5jbHVkZS9jb25maWdzL3BwbWM4MjYwLmgKaW5kZXggNzU3OTIyMjEuLmQ2NzFkY2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9wcG1jODI2MC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9wcG1jODI2MC5oCkBAIC0yNzksNyArMjc5LDYgQEAKICNkZWZpbmUgQ09ORklHX0NPTU1BTkRTCQkoKChDT05GSUdfQ01EX0RGTCAmIH4oQ0ZHX0NNRF9LR0RCKSkpIHwgXAogCQkJCUNGR19DTURfRUxGCXwgXAogCQkJCUNGR19DTURfQVNLRU5WCXwgXAotCQkJCUNGR19DTURfRUNITwl8IFwKIAkJCQlDRkdfQ01EX1JFR0lORk8gfCBcCiAJCQkJQ0ZHX0NNRF9NRU1URVNUIHwgXAogCQkJCUNGR19DTURfTUlJCXwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NhY3NuZy5oIGIvaW5jbHVkZS9jb25maWdzL3NhY3NuZy5oCmluZGV4IDRlMGNmZGIuLjk3YjUyZmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zYWNzbmcuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2Fjc25nLmgKQEAgLTUwNyw3ICs1MDcsNiBAQAogIyBkZWZpbmUgQ09ORklHX0NPTU1BTkRTCSgoKENPTkZJR19DTURfREZMICYgfihDRkdfQ01EX0tHREIpKSkgfCBcCiAJCQkJQ0ZHX0NNRF9FTEYJfCBcCiAJCQkJQ0ZHX0NNRF9BU0tFTlYJfCBcCi0JCQkJQ0ZHX0NNRF9FQ0hPCXwgXAogCQkJCUNGR19DTURfSTJDCXwgXAogCQkJCUNGR19DTURfU1BJCXwgXAogCQkJCUNGR19DTURfU0RSQU0gICB8IFwKQEAgLTUyMCw3ICs1MTksNiBAQAogIyBkZWZpbmUgQ09ORklHX0NPTU1BTkRTCSgoKENPTkZJR19DTURfREZMICYgfihDRkdfQ01EX0tHREIpKSkgfCBcCiAJCQkJQ0ZHX0NNRF9FTEYJfCBcCiAJCQkJQ0ZHX0NNRF9BU0tFTlYJfCBcCi0JCQkJQ0ZHX0NNRF9FQ0hPCXwgXAogCQkJCUNGR19DTURfSTJDCXwgXAogCQkJCUNGR19DTURfU1BJCXwgXAogCQkJCUNGR19DTURfU0RSQU0gICB8IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zYmM4MjYwLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjODI2MC5oCmluZGV4IDE4MGNlMDUuLjljZjA2NTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zYmM4MjYwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3NiYzgyNjAuaApAQCAtNDQ4LDcgKzQ0OCw2IEBACiAjaWZkZWYgQ09ORklHX0VUSEVSX09OX0ZDQwogIyBkZWZpbmUgQ09ORklHX0NPTU1BTkRTCSgoKENPTkZJR19DTURfREZMICYgfihDRkdfQ01EX0tHREIpKSkgfCBcCiAJCQkJQ0ZHX0NNRF9BU0tFTlYJfCBcCi0JCQkJQ0ZHX0NNRF9FQ0hPCXwgXAogCQkJCUNGR19DTURfRUxGCXwgXAogCQkJCUNGR19DTURfSTJDCXwgXAogCQkJCUNGR19DTURfSU1NQVAJfCBcCkBAIC00NTksNyArNDU4LDYgQEAKICNlbHNlCiAjIGRlZmluZSBDT05GSUdfQ09NTUFORFMJKCgoQ09ORklHX0NNRF9ERkwgJiB+KENGR19DTURfS0dEQikpKSB8IFwKIAkJCQlDRkdfQ01EX0FTS0VOVgl8IFwKLQkJCQlDRkdfQ01EX0VDSE8JfCBcCiAJCQkJQ0ZHX0NNRF9FTEYJfCBcCiAJCQkJQ0ZHX0NNRF9JMkMJfCBcCiAJCQkJQ0ZHX0NNRF9JTU1BUAl8IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zbW1hY280LmggYi9pbmNsdWRlL2NvbmZpZ3Mvc21tYWNvNC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMDZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc21tYWNvNC5oCkBAIC0wLDAgKzEsMzczIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAzLTIwMDYKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogKEMpIENvcHlyaWdodCAyMDA0LTIwMDUKKyAqIE1hcnRpbiBLcmF1c2UsIFRRLVN5c3RlbXMgR21iSCwgbWFydGluLmtyYXVzZUB0cXMuZGUKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisvKgorICogSGlnaCBMZXZlbCBDb25maWd1cmF0aW9uIE9wdGlvbnMKKyAqIChlYXN5IHRvIGNoYW5nZSkKKyAqLworCisjZGVmaW5lIENPTkZJR19NUEM1eHh4CQkxCS8qIFRoaXMgaXMgYW4gTVBDNXh4eCBDUFUgKi8KKyNkZWZpbmUgQ09ORklHX01QQzUyMDAJCTEJLyogKG1vcmUgcHJlY2lzZWx5IGFuIE1QQzUyMDAgQ1BVKSAqLworI2RlZmluZSBDT05GSUdfVFFNNTIwMAkJMQkvKiAuLi4gb24gVFFNNTIwMCBtb2R1bGUgKi8KKyN1bmRlZiBDT05GSUdfVFFNNTIwMF9SRVYxMDAJCS8qICBkZWZpbmUgZm9yIHJldmlzaW9uIDEwMCBtb2R1bGVzICovCisKKyNkZWZpbmUgQ0ZHX01QQzVYWFhfQ0xLSU4JMzMwMDAwMDAgLyogLi4uIHJ1bm5pbmcgYXQgMzMuMDAwMDAwTUh6ICovCisKKyNkZWZpbmUgQk9PVEZMQUdfQ09MRAkJMHgwMQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAgKi8KKyNkZWZpbmUgQk9PVEZMQUdfV0FSTQkJMHgwMgkvKiBTb2Z0d2FyZSByZWJvb3QJICAgICAqLworCisjZGVmaW5lIENGR19DQUNIRUxJTkVfU0laRQkzMgkvKiBGb3IgTVBDNXh4eCBDUFVzICovCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfS0dEQikKKyMgIGRlZmluZSBDRkdfQ0FDSEVMSU5FX1NISUZUCTUJLyogbG9nIGJhc2UgMiBvZiB0aGUgYWJvdmUgdmFsdWUgKi8KKyNlbmRpZgorCisvKgorICogU2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19QU0NfQ09OU09MRQkxCS8qIGNvbnNvbGUgaXMgb24gUFNDMSAqLworI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAkvKiAuLi4gYXQgMTE1MjAwIGJwcyAqLworI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAsIDIzMDQwMCB9CisKKy8qIFBhcnRpdGlvbnMgKi8KKyNkZWZpbmUgQ09ORklHX01BQ19QQVJUSVRJT04KKyNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04KKyNkZWZpbmUgQ09ORklHX0lTT19QQVJUSVRJT04KKworLyogUE9TVCBzdXBwb3J0ICovCisjZGVmaW5lIENPTkZJR19QT1NUCQkoQ0ZHX1BPU1RfTUVNT1JZICAgfCBcCisJCQkJIENGR19QT1NUX0NQVQkgICB8IFwKKwkJCQkgQ0ZHX1BPU1RfSTJDKQorCisjaWZkZWYgQ09ORklHX1BPU1QKKyNkZWZpbmUgQ0ZHX0NNRF9QT1NUX0RJQUcgQ0ZHX0NNRF9ESUFHCisvKiBwcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHBvc3Rfd29yZCBhdCBlbmQgb2Ygb24tY2hpcCBTUkFNICovCisjZGVmaW5lIE1QQzVYWFhfU1JBTV9QT1NUX1NJWkUgTVBDNVhYWF9TUkFNX1NJWkUtNAorI2Vsc2UKKyNkZWZpbmUgQ0ZHX0NNRF9QT1NUX0RJQUcgMAorI2VuZGlmCisKKy8qCisgKiBTdXBwb3J0ZWQgY29tbWFuZHMKKyAqLworI2RlZmluZSBDT05GSUdfQ09NTUFORFMJICAgICAgIChDT05GSUdfQ01EX0RGTAl8IFwKKwkJCQlDRkdfQ01EX0FTS0VOVgl8IFwKKwkJCQlDRkdfQ01EX0RBVEUJfCBcCisJCQkJQ0ZHX0NNRF9ESENQCXwgXAorCQkJCUNGR19DTURfRUNITwl8IFwKKwkJCQlDRkdfQ01EX0VFUFJPTQl8IFwKKwkJCQlDRkdfQ01EX0kyQwl8IFwKKwkJCQlDRkdfQ01EX0pGRlMyCXwgXAorCQkJCUNGR19DTURfTUlJCXwgXAorCQkJCUNGR19DTURfTkZTCXwgXAorCQkJCUNGR19DTURfUElORwl8IFwKKwkJCQlDRkdfQ01EX1BPU1RfRElBRyB8IFwKKwkJCQlDRkdfQ01EX1JFR0lORk8gfCBcCisJCQkJQ0ZHX0NNRF9TTlRQCSkKKworLyogdGhpcyBtdXN0IGJlIGluY2x1ZGVkIEFGVEVSIHRoZSBkZWZpbml0aW9uIG9mIENPTkZJR19DT01NQU5EUyAoaWYgYW55KSAqLworI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgorCisjZGVmaW5lCUNPTkZJR19USU1FU1RBTVAJCS8qIGRpc3BsYXkgaW1hZ2UgdGltZXN0YW1wcyAqLworCisjaWYgKFRFWFRfQkFTRSA9PSAweEZDMDAwMDAwKQkJLyogQm9vdCBsb3cgKi8KKyMgICBkZWZpbmUgQ0ZHX0xPV0JPT1QJCTEKKyNlbmRpZgorCisvKgorICogQXV0b2Jvb3RpbmcKKyAqLworI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTUJLyogYXV0b2Jvb3QgYWZ0ZXIgNSBzZWNvbmRzICovCisKKyNkZWZpbmUgQ09ORklHX1BSRUJPT1QJImVjaG87IiBcCisJImVjaG8gVHlwZSBcInJ1biBmbGFzaF9uZnNcIiB0byBtb3VudCByb290IGZpbGVzeXN0ZW0gb3ZlciBORlM7IiBcCisJImVjaG8iCisKKyN1bmRlZglDT05GSUdfQk9PVEFSR1MKKworI2RlZmluZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTCQkJCQlcCisJIm5ldGRldj1ldGgwXDAiCQkJCQkJCVwKKwkicm9vdHBhdGg9L29wdC9lbGRrL3BwY182eHhcMCIJCQkJCVwKKwkicmFtYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3JhbSByd1wwIgkJCVwKKwkibmZzYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyAiCQkJXAorCQkibmZzcm9vdD0ke3NlcnZlcmlwfToke3Jvb3RwYXRofVwwIgkJCVwKKwkiYWRkaXA9c2V0ZW52IGJvb3RhcmdzICR7Ym9vdGFyZ3N9ICIJCQkJXAorCQkiaXA9JHtpcGFkZHJ9OiR7c2VydmVyaXB9OiR7Z2F0ZXdheWlwfToke25ldG1hc2t9IglcCisJCSI6JHtob3N0bmFtZX06JHtuZXRkZXZ9Om9mZiBwYW5pYz0xXDAiCQkJXAorCSJmbGFzaF9zZWxmPXJ1biByYW1hcmdzIGFkZGlwOyIJCQkJCVwKKwkJImJvb3RtICR7a2VybmVsX2FkZHJ9ICR7cmFtZGlza19hZGRyfVwwIgkJXAorCSJmbGFzaF9uZnM9cnVuIG5mc2FyZ3MgYWRkaXA7IgkJCQkJXAorCQkiYm9vdG0gJHtrZXJuZWxfYWRkcn1cMCIJCQkJXAorCSJuZXRfbmZzPXRmdHAgMjAwMDAwICR7Ym9vdGZpbGV9O3J1biBuZnNhcmdzIGFkZGlwO2Jvb3RtXDAiCVwKKwkiYm9vdGZpbGU9L3RmdHBib290L3NtbWFjbzQvdUltYWdlXDAiCQkJCVwKKwkibG9hZD10ZnRwIDIwMDAwMCAke3UtYm9vdH1cMCIJCQkJCVwKKwkidS1ib290PS90ZnRwYm9vdC9zbW1hY280L3UtYm9vdC5iaW5cMCIJCQkJXAorCSJ1cGRhdGU9cHJvdGVjdCBvZmYgRkMwMDAwMDAgRkMwNUZGRkY7IgkJCQlcCisJCSJlcmFzZSBGQzAwMDAwMCBGQzA1RkZGRjsiCQkJCVwKKwkJImNwLmIgMjAwMDAwIEZDMDAwMDAwICR7ZmlsZXNpemV9OyIJCQlcCisJCSJwcm90ZWN0IG9uIEZDMDAwMDAwIEZDMDVGRkZGXDAiCQkJXAorCSIiCisKKyNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECSJydW4gbmV0X25mcyIKKworLyoKKyAqIElQQiBCdXMgY2xvY2tpbmcgY29uZmlndXJhdGlvbi4KKyAqLworI2RlZmluZSBDRkdfSVBCU1BFRURfMTMzCQkvKiBkZWZpbmUgZm9yIDEzM01IeiBzcGVlZCAqLworCisjaWYgZGVmaW5lZChDRkdfSVBCU1BFRURfMTMzKQorLyoKKyAqIFBDSSBCdXMgY2xvY2tpbmcgY29uZmlndXJhdGlvbgorICoKKyAqIEFjdHVhbGx5IGEgUENJIENsb2NrIG9mIDY2IE1IeiBpcyBvbmx5IHNldCAoaW4gY3B1X2luaXQuYykgaWYKKyAqIENGR19JUEJTUEVFRF8xMzMgaXMgZGVmaW5lZC4gVGhpcyBpcyBiZWNhdXNlIGEgUENJIENsb2NrIG9mIDY2IE1IeiB5ZXQgaGFzbid0CisgKiBiZWVuIHRlc3RlZCB3aXRoIGEgSVBCIEJ1cyBDbG9jayBvZiA2NiBNSHouCisgKi8KKyNkZWZpbmUgQ0ZHX1BDSVNQRUVEXzY2CQkJLyogZGVmaW5lIGZvciA2Nk1IeiBzcGVlZCAqLworI2VuZGlmCisKKy8qCisgKiBJMkMgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19IQVJEX0kyQwkJMQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0ICovCisjaWZkZWYgQ09ORklHX1RRTTUyMDBfUkVWMTAwCisjZGVmaW5lIENGR19JMkNfTU9EVUxFCQkxCS8qIFNlbGVjdCBJMkMgbW9kdWxlICMxIGZvciByZXYuIDEwMCBib2FyZCAqLworI2Vsc2UKKyNkZWZpbmUgQ0ZHX0kyQ19NT0RVTEUJCTIJLyogU2VsZWN0IEkyQyBtb2R1bGUgIzIgZm9yIGFsbCBvdGhlciByZXZzICovCisjZW5kaWYKKworLyoKKyAqIEkyQyBjbG9jayBmcmVxdWVuY3kKKyAqCisgKiBQbGVhc2Ugbm90aWNlLCB0aGF0IHRoZSByZXN1bHRpbmcgY2xvY2sgZnJlcXVlbmN5IGNvdWxkIGRpZmZlciBmcm9tIHRoZQorICogY29uZmlndXJlZCB2YWx1ZS4gVGhpcyBpcyBiZWNhdXNlIHRoZSBJMkMgY2xvY2sgaXMgZGVyaXZlZCBmcm9tIHN5c3RlbQorICogY2xvY2sgb3ZlciBhIGZyZXF1ZW5jeSBkaXZpZGVyIHdpdGggb25seSBhIGZldyBkaXZpZGVyIHZhbHVlcy4gVS1ib290CisgKiBjYWxjdWxhdGVzIHRoZSBiZXN0IGFwcHJveGltYXRpb24gZm9yIENGR19JMkNfU1BFRUQuIEhvd2V2ZXIgdGhlIGNhbGN1bGF0ZWQKKyAqIGFwcHJveGltYXRpb24gYWxsd2F5cyBsaWVzIGJlbG93IHRoZSBjb25maWd1cmVkIHZhbHVlLCBuZXZlciBhYm92ZS4KKyAqLworI2RlZmluZSBDRkdfSTJDX1NQRUVECQkxMDAwMDAgLyogMTAwIGtIeiAqLworI2RlZmluZSBDRkdfSTJDX1NMQVZFCQkweDdGCisKKy8qCisgKiBFRVBST00gY29uZmlndXJhdGlvbiBmb3Igb25ib2FyZCBFRVBST00gTTI0QzMyIChNMjRDNjQgc2hvdWxkIHdvcmsKKyAqIGFsc28pLiBGb3Igb3RoZXIgRUVQUk9NcyBjb25maWd1cmF0aW9uIHNob3VsZCBiZSB2ZXJpZmllZC4gT24gTWluaS1GQVAgdGhlCisgKiBFRVBST00gKDI0QzY0KSBpcyBvbiB0aGUgc2FtZSBJMkMgYWRkcmVzcyAoYnV0IG9uIG90aGVyIEkyQyBidXMpLCBzbyB0aGUKKyAqIHNhbWUgY29uZmlndXJhdGlvbiBjb3VsZCBiZSB1c2VkLgorICovCisjZGVmaW5lIENGR19JMkNfRUVQUk9NX0FERFIJCTB4NTAJLyogMTAxMDAwMHggKi8KKyNkZWZpbmUgQ0ZHX0kyQ19FRVBST01fQUREUl9MRU4JCTIKKyNkZWZpbmUgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMJNQkvKiA9MzIgQnl0ZXMgcGVyIHdyaXRlICovCisjZGVmaW5lIENGR19FRVBST01fUEFHRV9XUklURV9ERUxBWV9NUwkyMAorCisvKgorICogRmxhc2ggY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQlURVhUX0JBU0UgLyogMHhGQzAwMDAwMCAqLworCisvKiB1c2UgQ0ZJIGZsYXNoIGRyaXZlciBpZiBubyBtb2R1bGUgdmFyaWFudCBpcyBzcGV6aWZpZWQgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0NGSQkJMQkvKiBGbGFzaCBpcyBDRkkgY29uZm9ybWFudCAqLworI2RlZmluZSBDRkdfRkxBU0hfQ0ZJX0RSSVZFUgkxCS8qIFVzZSB0aGUgY29tbW9uIGRyaXZlciAqLworI2RlZmluZSBDRkdfRkxBU0hfQkFOS1NfTElTVAl7IENGR19CT09UQ1NfU1RBUlQgfQorI2RlZmluZSBDRkdfRkxBU0hfRU1QVFlfSU5GTworI2RlZmluZSBDRkdfRkxBU0hfU0laRQkJMHgwNDAwMDAwMCAvKiA2NCBNQnl0ZSAqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJNTEyCS8qIG1heCBudW0gb2Ygc2VjdHMgb24gb25lIGNoaXAgKi8KKyN1bmRlZiBDRkdfRkxBU0hfVVNFX0JVRkZFUl9XUklURQkvKiBub3Qgc3VwcG9ydGVkIHlldCBmb3IgQU1EICovCisKKyNpZiAhZGVmaW5lZChDRkdfTE9XQk9PVCkKKyNkZWZpbmUgQ0ZHX0VOVl9BRERSCQkoQ0ZHX0ZMQVNIX0JBU0UgKyAweDAwNzYwMDAwICsgMHgwMDgwMDAwMCkKKyNlbHNlCS8qIENGR19MT1dCT09UICovCisjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19GTEFTSF9CQVNFICsgMHgwMDA2MDAwMCkKKyNlbmRpZgkvKiBDRkdfTE9XQk9PVCAqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCTEJLyogbWF4IG51bSBvZiBmbGFzaCBiYW5rcworCQkJCQkgICAoPSBjaGlwIHNlbGVjdHMpICovCisjZGVmaW5lIENGR19GTEFTSF9FUkFTRV9UT1VUCTI0MDAwMAkvKiBGbGFzaCBFcmFzZSBUaW1lb3V0IChpbiBtcykJKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQJNTAwCS8qIEZsYXNoIFdyaXRlIFRpbWVvdXQgKGluIG1zKQkqLworCisvKiBEeW5hbWljIE1URCBwYXJ0aXRpb24gc3VwcG9ydCAqLworI2RlZmluZSBDT05GSUdfSkZGUzJfQ01ETElORQorI2RlZmluZSBNVERJRFNfREVGQVVMVAkJIm5vcjA9VFFNNTIwMC0wIgorI2RlZmluZSBNVERQQVJUU19ERUZBVUxUCSJtdGRwYXJ0cz1UUU01MjAwLTA6NjQwayhmaXJtd2FyZSksIglcCisJCQkJCQkiMTQwOGsoa2VybmVsKSwiCVwKKwkJCQkJCSIybShpbml0cmQpLCIJCVwKKwkJCQkJCSI0bShzbWFsbC1mcyksIgkJXAorCQkJCQkJIjE2bShiaWctZnMpLCIJCVwKKwkJCQkJCSI4bShtaXNjKSIKKworLyoKKyAqIEVudmlyb25tZW50IHNldHRpbmdzCisgKi8KKyNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9GTEFTSAkxCisjZGVmaW5lIENGR19FTlZfU0laRQkJMHgxMDAwMAorI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQkweDIwMDAwCisjZGVmaW5lIENGR19FTlZfQUREUl9SRURVTkQJKENGR19FTlZfQUREUiArIENGR19FTlZfU0VDVF9TSVpFKQorI2RlZmluZQlDRkdfRU5WX1NJWkVfUkVEVU5ECShDRkdfRU5WX1NJWkUpCisKKy8qCisgKiBNZW1vcnkgbWFwCisgKi8KKyNkZWZpbmUgQ0ZHX01CQVIJCTB4RjAwMDAwMDAKKyNkZWZpbmUgQ0ZHX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0RFRkFVTFRfTUJBUgkweDgwMDAwMDAwCisKKy8qIFVzZSBPTi1DaGlwIFNSQU0gdW50aWwgUkFNIHdpbGwgYmUgYXZhaWxhYmxlICovCisjZGVmaW5lIENGR19JTklUX1JBTV9BRERSCU1QQzVYWFhfU1JBTQorI2lmZGVmIENPTkZJR19QT1NUCisvKiBwcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHBvc3Rfd29yZCBhdCBlbmQgb2Ygb24tY2hpcCBTUkFNICovCisjZGVmaW5lIENGR19JTklUX1JBTV9FTkQJTVBDNVhYWF9TUkFNX1BPU1RfU0laRQorI2Vsc2UKKyNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0VORAlNUEM1WFhYX1NSQU1fU0laRQorI2VuZGlmCisKKworI2RlZmluZSBDRkdfR0JMX0RBVEFfU0laRQkxMjgJLyogc2l6ZSBpbiBieXRlcyByZXNlcnZlZCBmb3IgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENGR19HQkxfREFUQV9PRkZTRVQJKENGR19JTklUX1JBTV9FTkQgLSBDRkdfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ0ZHX0lOSVRfU1BfT0ZGU0VUCUNGR19HQkxfREFUQV9PRkZTRVQKKworI2RlZmluZSBDRkdfTU9OSVRPUl9CQVNFCVRFWFRfQkFTRQorI2lmIChDRkdfTU9OSVRPUl9CQVNFIDwgQ0ZHX0ZMQVNIX0JBU0UpCisjICAgZGVmaW5lIENGR19SQU1CT09UCQkxCisjZW5kaWYKKworI2RlZmluZSBDRkdfTU9OSVRPUl9MRU4JCSgzODQgPDwgMTApCS8qIFJlc2VydmUgMzg0IGtCIGZvciBNb25pdG9yCSovCisjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkoMjU2IDw8IDEwKQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgbWFsbG9jKCkJKi8KKyNkZWZpbmUgQ0ZHX0JPT1RNQVBTWgkJKDggPDwgMjApCS8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KKworLyoKKyAqIEV0aGVybmV0IGNvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfTVBDNXh4eF9GRUMJMQorLyoKKyAqIERlZmluZSBDT05GSUdfRkVDXzEwTUJJVCB0byBmb3JjZSBGRUMgYXQgMTBNYgorICovCisvKiAjZGVmaW5lIENPTkZJR19GRUNfMTBNQklUIDEgKi8KKyNkZWZpbmUgQ09ORklHX1BIWV9BRERSCQkweDAwCisKKy8qCisgKiBHUElPIGNvbmZpZ3VyYXRpb24KKyAqCisgKiB1c2UgcGluIGdwaW9fd2t1cF82IGFzIHNlY29uZCBTRFJBTSBjaGlwIHNlbGVjdCAobWVtX2NzMSk6CisgKglCaXQgMCAobWFzazogMHg4MDAwMDAwMCk6IDEKKyAqIHVzZSBBTFQgQ0FOIHBvc2l0aW9uOiBCaXRzIDItMyAobWFzazogMHgzMDAwMDAwMCk6CisgKgkwMCAtPiBObyBBbHRlcm5hdGl2ZXMsIENBTjEvMiBvbiBQU0MyIGFjY29yZGluZyB0byBQU0MyIHNldHRpbmcuCisgKgkwMSAtPiBDQU4xIG9uIEkyQzEsIENBTjIgb24gVG1yMC8xLgorICoJICAgICAgVXNlIGZvciBSRVYyMDAgU1RLNTJYWCBib2FyZHMuIERvIG5vdCB1c2Ugd2l0aCBSRVYxMDAgbW9kdWxlcworICoJICAgICAgKGJlY2F1c2UsIHRoZXJlIEkyQzEgaXMgdXNlZCBhcyBJMkMgYnVzKQorICogdXNlIFBTQzEgYXMgVUFSVDogQml0cyAyOC0zMSAobWFzazogMHgwMDAwMDAwNyk6IDAxMDAKKyAqIHVzZSBQU0MyIGFzIENBTjogQml0cyAyNToyNyAobWFzazogMHgwMDAwMDAzMCkKKyAqCTAwMCAtPiBBbGwgUFNDMiBwaW5zIGFyZSBHSU9QcworICoJMDAxIC0+IENBTjEvMiBvbiBQU0MyIHBpbnMKKyAqCSAgICAgICBVc2UgZm9yIFJFVjEwMCBTVEs1Mnh4IGJvYXJkcworICogdXNlIFBTQzY6CisgKiAgIG9uIFNUSzUyeHg6CisgKgl1c2UgYXMgVUFSVC4gUGlucyBQU0M2XzAgdG8gUFNDNl8zIGFyZSB1c2VkLgorICoJQml0cyA5OjExIChtYXNrOiAweDAwNzAwMDAwKToKKyAqCSAgIDEwMSAtPiBQU0M2IDogRXh0ZW5kZWQgUE9TVCB0ZXN0IGlzIG5vdCBhdmFpbGFibGUKKyAqICAgb24gTUlOSS1GQVAgYW5kIFRRTTUyMDBfSUI6CisgKgl1c2UgUFNDNl8wIHRvIFBTQzZfMyBhcyBHUElPOiBCaXRzIDk6MTEgKG1hc2s6IDB4MDA3MDAwMDApOgorICoJICAgMDAwIC0+IFBTQzYgY291bGQgbm90IGJlIHVzZWQgYXMgVUFSVCwgQ09ERUMgb3IgSXJEQQorICogICBHUElPIG9uIFBTQzZfMyBpcyB1c2VkIGluIHBvc3RfaG90a2V5c19wcmVzc2VkKCkgdG8gZW5hYmxlIGV4dGVuZGVkIFBPU1QKKyAqICAgdGVzdHMuCisgKi8KKyNpZiBkZWZpbmVkIChDT05GSUdfTUlOSUZBUCkKKyMgZGVmaW5lIENGR19HUFNfUE9SVF9DT05GSUcJMHg5MTAwMDAwNAorI2VsaWYgZGVmaW5lZCAoQ09ORklHX1NUSzUyWFgpCisjIGlmIGRlZmluZWQgKENPTkZJR19TVEs1MlhYX1JFVjEwMCkKKyMgIGRlZmluZSBDRkdfR1BTX1BPUlRfQ09ORklHCTB4ODE1MDAwMTQKKyMgZWxzZSAvKiBTVEs1Mnh4IFJFVjIwMCBhbmQgYWJvdmUgKi8KKyMgIGlmIGRlZmluZWQgKENPTkZJR19UUU01MjAwX1JFVjEwMCkKKyMgICBlcnJvciBUUU01MjAwIFJFVjEwMCBub3Qgc3VwcG9ydGVkIG9uIFNUSzUyWFggUkVWMjAwIG9yIGFib3ZlCisjICBlbHNlLyogVFFNNTIwMCBSRVYyMDAgYW5kIGFib3ZlICovCisjICAgZGVmaW5lIENGR19HUFNfUE9SVF9DT05GSUcJMHg5MTUwMDAwNAorIyAgZW5kaWYKKyMgZW5kaWYKKyNlbHNlICAvKiBUTVE1MjAwIEluYmV0cmllYm5haG1lLUJvYXJkICovCisjIGRlZmluZSBDRkdfR1BTX1BPUlRfQ09ORklHCTB4ODEwMDAwMDQKKyNlbmRpZgorCisvKgorICogUlRDIGNvbmZpZ3VyYXRpb24KKyAqLworI2RlZmluZSBDT05GSUdfUlRDX01QQzUyMDAJMQkvKiB1c2UgaW50ZXJuYWwgTVBDNTIwMCBSVEMgKi8KKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZSBDRkdfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkgICAgKi8KKyNkZWZpbmUgQ0ZHX1BST01QVAkJIj0+ICIJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAgICovCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfS0dEQikKKyNkZWZpbmUgQ0ZHX0NCU0laRQkJMTAyNAkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZSAgKi8KKyNlbHNlCisjZGVmaW5lIENGR19DQlNJWkUJCTI1NgkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZSAgKi8KKyNlbmRpZgorI2RlZmluZSBDRkdfUEJTSVpFIChDRkdfQ0JTSVpFK3NpemVvZihDRkdfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ0ZHX01BWEFSR1MJCTE2CS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCisjZGVmaW5lIENGR19CQVJHU0laRQkJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCisKKy8qIEVuYWJsZSBhbiBhbHRlcm5hdGUsIG1vcmUgZXh0ZW5zaXZlIG1lbW9yeSB0ZXN0ICovCisjZGVmaW5lIENGR19BTFRfTUVNVEVTVAorCisjZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4MDAxMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbiAqLworI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MDBmMDAwMDAJLyogMSAuLi4gMTUgTUIgaW4gRFJBTQkqLworCisjZGVmaW5lIENGR19MT0FEX0FERFIJCTB4MTAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisKKyNkZWZpbmUgQ0ZHX0haCQkJMTAwMAkvKiBkZWNyZW1lbnRlciBmcmVxOiAxIG1zIHRpY2tzICovCisKKy8qCisgKiBFbmFibGUgbG9vcHcgY29tbWFuZG8uIFRoaXMgaGFzIG9ubHkgYWZmZWN0LCBpZiBDRkdfQ01EX01FTSBpcyBkZWZpbmVkLAorICogd2hpY2ggaXMgbm9ybWFsbHkgcGFydCBvZiB0aGUgZGVmYXVsdCBjb21tYW5kcyAoQ0ZWX0NNRF9ERkwpCisgKi8KKyNkZWZpbmUgQ09ORklHX0xPT1BXCisKKy8qCisgKiBWYXJpb3VzIGxvdy1sZXZlbCBzZXR0aW5ncworICovCisjaWYgZGVmaW5lZChDT05GSUdfTVBDNTIwMCkKKyNkZWZpbmUgQ0ZHX0hJRDBfSU5JVAkJSElEMF9JQ0UgfCBISUQwX0lDRkkKKyNkZWZpbmUgQ0ZHX0hJRDBfRklOQUwJCUhJRDBfSUNFCisjZWxzZQorI2RlZmluZSBDRkdfSElEMF9JTklUCQkwCisjZGVmaW5lIENGR19ISUQwX0ZJTkFMCQkwCisjZW5kaWYKKworI2RlZmluZSBDRkdfQk9PVENTX1NUQVJUCUNGR19GTEFTSF9CQVNFCisjZGVmaW5lIENGR19CT09UQ1NfU0laRQkJQ0ZHX0ZMQVNIX1NJWkUKKyNpZmRlZiBDRkdfUENJU1BFRURfNjYKKyNkZWZpbmUgQ0ZHX0JPT1RDU19DRkcJCTB4MDAwOERGMzAgLyogZm9yIHBjaV9jbGsgID0gNjYgTUh6ICovCisjZWxzZQorI2RlZmluZSBDRkdfQk9PVENTX0NGRwkJMHgwMDA0REYzMCAvKiBmb3IgcGNpX2NsayA9IDMzIE1IeiAqLworI2VuZGlmCisjZGVmaW5lIENGR19DUzBfU1RBUlQJCUNGR19GTEFTSF9CQVNFCisjZGVmaW5lIENGR19DUzBfU0laRQkJQ0ZHX0ZMQVNIX1NJWkUKKworI2RlZmluZSBDRkdfQ1NfQlVSU1QJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0NTX0RFQURDWUNMRQkweDMzMzMzMzExCS8qIDEgZGVhZCBjeWNsZSBmb3IgZmxhc2ggYW5kIFNNNTAxICovCisKKyNkZWZpbmUgQ0ZHX1JFU0VUX0FERFJFU1MJMHhmZjAwMDAwMAorCisjZW5kaWYgLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3N0YW1wLmggYi9pbmNsdWRlL2NvbmZpZ3Mvc3RhbXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDhjYTcwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL3N0YW1wLmgKQEAgLTAsMCArMSwzMzMgQEAKKy8qCisgKiBVLWJvb3QgLSBzdGFtcC5oICBDb25maWd1cmF0aW9uIGZpbGUgZm9yIFNUQU1QIGJvYXJkCisgKgkJCWhhdmluZyBCRjUzMyBwcm9jZXNzb3IKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQ09ORklHX1NUQU1QX0hfXworI2RlZmluZSBfX0NPTkZJR19TVEFNUF9IX18KKworLyoKKyAqIEJvYXJkIHNldHRpbmdzCisgKgorICovCisKKyNkZWZpbmUgX19BRFNQTFBCTEFDS0ZJTl9fCQkxCisjZGVmaW5lIF9fQURTUEJGNTMzX18JCQkxCisjZGVmaW5lIENPTkZJR19TVEFNUAkJCTEKKyNkZWZpbmUgQ09ORklHX1JUQ19CRjUzMwkJMQorCisvKiBGTEFTSC9FVEhFUk5FVCB1c2VzIHRoZSBzYW1lIGFkZHJlc3MgcmFuZ2UgKi8KKyNkZWZpbmUgU0hBUkVEX1JFU09VUkNFUwkJMQorCisjZGVmaW5lIENPTkZJR19WRFNQCQkJMQorCisvKgorICogQ2xvY2sgc2V0dGluZ3MKKyAqCisgKi8KKworLyogQ09ORklHX0NMS0lOX0haIGlzIGFueSB2YWx1ZSBpbiBIegkJCQkgKi8KKyNkZWZpbmUgQ09ORklHX0NMS0lOX0haCQkJMTEwNTkyMDAKKy8qIENPTkZJR19DTEtJTl9IQUxGIGNvbnRyb2xzIHdoYXQgaXMgcGFzc2VkIHRvIFBMTCAwPUNMS0lOCSAqLworLyoJCQkJCQkgICAgMT1DTEtJTi8yCSAqLworI2RlZmluZSBDT05GSUdfQ0xLSU5fSEFMRgkJMAorLyogQ09ORklHX1BMTF9CWVBBU1MgY29udHJvbHMgaWYgdGhlIFBMTCBpcyB1c2VkIDA9ZG9uJ3QgYnlwYXNzCSAqLworLyoJCQkJCQkgMT1ieXBhc3MgUExMCSAqLworI2RlZmluZSBDT05GSUdfUExMX0JZUEFTUwkJMAorLyogQ09ORklHX1ZDT19NVUxUIGNvbnRyb2xzIHdoYXQgdGhlIG11bHRpcGxpZXIgb2YgdGhlIFBMTCBpcy4JICovCisvKiBWYWx1ZXMgY2FuIHJhbmdlIGZyb20gMS02NAkJCQkJICovCisjZGVmaW5lIENPTkZJR19WQ09fTVVMVAkJCTQ1CisvKiBDT05GSUdfQ0NMS19ESVYgY29udHJvbHMgd2hhdCB0aGUgY29yZSBjbG9jayBkaXZpZGVyIGlzCSAqLworLyogVmFsdWVzIGNhbiBiZSAxLCAyLCA0LCBvciA4IE9OTFkJCQkJICovCisjZGVmaW5lIENPTkZJR19DQ0xLX0RJVgkJCTEKKy8qIENPTkZJR19TQ0xLX0RJViBjb250cm9scyB3aGF0IHRoZSBwZXJpcGhlcmFsIGNsb2NrIGRpdmlkZXIgaXMgKi8KKy8qIFZhbHVlcyBjYW4gcmFuZ2UgZnJvbSAxLTE1CQkJCQkgKi8KKyNkZWZpbmUgQ09ORklHX1NDTEtfRElWCQkJNgorCisvKgorICogTmV0d29yayBTZXR0aW5ncworICovCisvKiBuZXR3b3JrIHN1cHBvcnQgKi8KKyNkZWZpbmUgQ09ORklHX0lQQUREUgkJMTkyLjE2OC4wLjE1CisjZGVmaW5lIENPTkZJR19ORVRNQVNLCQkyNTUuMjU1LjI1NS4wCisjZGVmaW5lIENPTkZJR19HQVRFV0FZSVAJMTkyLjE2OC4wLjEKKyNkZWZpbmUgQ09ORklHX1NFUlZFUklQCQkxOTIuMTY4LjAuMgorI2RlZmluZSBDT05GSUdfSE9TVE5BTUUJCVNUQU1QCisjZGVmaW5lIENPTkZJR19ST09UUEFUSAkJCS9jaGVja291dC91Q2xpbnV4LWRpc3Qvcm9tZnMKKworLyogVG8gcmVtb3ZlIGhhcmRjb2RpbmcgYW5kIGVuYWJsZSBNQUMgc3RvcmFnZSBpbiBFRVBST00gICovCisvKiAjZGVmaW5lIENPTkZJR19FVEhBRERSCQkwMjo4MDphZDoyMDozMTpiOCAqLworCisvKgorICogQ29tbWFuZCBzZXR0aW5ncworICoKKyAqLworCisjZGVmaW5lIENGR19MT05HSEVMUAkJCTEKKworI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCQk1CisjZGVmaW5lIENPTkZJR19CT09UX1JFVFJZX1RJTUUJCS0xCS8qIEVuYWJsZSB0aGlzIGlmIGJvb3RyZXRyeSByZXF1aXJlZCwgY3VycmVudGx5IGl0cyBkaXNhYmxlZCAqLworI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJCSJydW4gcmFtYm9vdCIKKyNkZWZpbmUgQ09ORklHX0FVVE9CT09UX1BST01QVAkJImF1dG9ib290IGluICVkIHNlY29uZHNcbiIKKworI2RlZmluZSBDT05GSUdfQ09NTUFORFMJCQkoQ09ORklHX0NNRF9ERkwgfCBcCisJCQkJCSBDRkdfQ01EX1BJTkcJfCBcCisJCQkJCSBDRkdfQ01EX0VMRgl8IFwKKwkJCQkJIENGR19DTURfSTJDCXwgXAorCQkJCQkgQ0ZHX0NNRF9DQUNIRQl8IFwKKwkJCQkJIENGR19DTURfSkZGUzIJfCBcCisJCQkJCSBDRkdfQ01EX0RBVEUpCisjZGVmaW5lIENPTkZJR19CT09UQVJHUyAicm9vdD0vZGV2L210ZGJsb2NrMCBydyIKKworI2RlZmluZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTCQkJCQkJCQkJCQkJXAorCSJyYW1hcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvbXRkYmxvY2swIHJ3XDAiCQkJCQkJCVwKKwkibmZzYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyAiCQkJCQkJCQkJXAorCSJuZnNyb290PSQoc2VydmVyaXApOiQocm9vdHBhdGgpXDAiCQkJCQkJCQkJCQlcCisJImFkZGlwPXNldGVudiBib290YXJncyAkKGJvb3RhcmdzKSAiCQkJCQkJCQkJCVwKKwkiaXA9JChpcGFkZHIpOiQoc2VydmVyaXApOiQoZ2F0ZXdheWlwKTokKG5ldG1hc2spIgkJCQkJCQlcCisJIjokKGhvc3RuYW1lKTpldGgwOm9mZlwwIgkJCQkJCQkJCQkJCQlcCisgICAgInJhbWJvb3Q9dGZ0cGJvb3QgMHgxMDAwMDAwIGxpbnV4OyIJCQkJCQkJCQkJCVwKKwkicnVuIHJhbWFyZ3M7cnVuIGFkZGlwO2Jvb3RlbGZcMCIJCQkJCQkJCQkJCVwKKwkibmZzYm9vdD10ZnRwYm9vdCAweDEwMDAwMDAgbGludXg7IgkJCQkJCQkJCQkJXAorCSJydW4gbmZzYXJncztydW4gYWRkaXA7Ym9vdGVsZlwwIgkJCQkJCQkJCQkJXAorCSJmbGFzaGJvb3Q9Ym9vdG0gMHgyMDEwMDAwMFwwIgkJCQkJCQkJCQkJCVwKKwkiIgorCisvKiBUaGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCisjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CisKKy8qCisgKiBDb25zb2xlIHNldHRpbmdzCisgKgorICovCisKKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkJNTc2MDAKKyNkZWZpbmUgQ0ZHX0JBVURSQVRFX1RBQkxFCQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9CisKKyNkZWZpbmUgQ0ZHX1BST01QVAkJCSJzdGFtcD4iCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQorI2RlZmluZSBDRkdfQ0JTSVpFCQkJMTAyNAkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZSAqLworI2Vsc2UKKyNkZWZpbmUgQ0ZHX0NCU0laRQkJCTI1NgkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZSAqLworI2VuZGlmCisjZGVmaW5lIENGR19QQlNJWkUJCQkoQ0ZHX0NCU0laRStzaXplb2YoQ0ZHX1BST01QVCkrMTYpCS8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENGR19NQVhBUkdTCQkJMTYJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MgKi8KKyNkZWZpbmUgQ0ZHX0JBUkdTSVpFCQkJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplICovCisKKyNkZWZpbmUgQ09ORklHX0xPQURTX0VDSE8JCTEKKworLyoKKyAqIE5ldHdvcmsgc2V0dGluZ3MKKyAqCisgKi8KKworI2RlZmluZSBDT05GSUdfRFJJVkVSX1NNQzkxMTExCQkxCisjZGVmaW5lIENPTkZJR19TTUM5MTExMV9CQVNFCQkweDIwMzAwMzAwCisvKiBUbyByZW1vdmUgaGFyZGNvZGluZyBhbmQgZW5hYmxlIE1BQyBzdG9yYWdlIGluIEVFUFJPTSAqLworLyogI2RlZmluZSBIQVJEQ09ERV9NQUMJCQkxICovCisKKy8qCisgKiBGbGFzaCBzZXR0aW5ncworICoKKyAqLworCisjZGVmaW5lIENGR19GTEFTSF9DRkkJCQkJLyogVGhlIGZsYXNoIGlzIENGSSBjb21wYXRpYmxlCSovCisjZGVmaW5lIENGR19GTEFTSF9DRklfRFJJVkVSCQkJLyogVXNlIGNvbW1vbiBDRkkgZHJpdmVyCSovCisjZGVmaW5lIENGR19GTEFTSF9DRklfQU1EX1JFU0VUCisKKyNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9GTEFTSAkJMQorCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQkJMHgyMDAwMDAwMAorI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCQkxCQkvKiBtYXggbnVtYmVyIG9mIG1lbW9yeSBiYW5rcyAqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJCTY3CQkvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAgKi8KKworI2RlZmluZSBDRkdfRU5WX0FERFIJCQkweDIwMDIwMDAwCisjZGVmaW5lIENGR19FTlZfU0laRQkJCTB4MTAwMDAKKyNkZWZpbmUgQ0ZHX0VOVl9TRUNUX1NJWkUJCTB4MTAwMDAgLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCBTZWN0b3IgKi8KKworI2RlZmluZSBDRkdfRkxBU0hfRVJBU0VfVE9VVAkJMzAwMDAJLyogVGltZW91dCBmb3IgQ2hpcCBFcmFzZSAoaW4gbXMpICovCisjZGVmaW5lIENGR19GTEFTSF9FUkFTRUJMT0NLX1RPVVQJNTAwMAkvKiBUaW1lb3V0IGZvciBCbG9jayBFcmFzZSAoaW4gbXMpICovCisjZGVmaW5lIENGR19GTEFTSF9XUklURV9UT1VUCQkxCS8qIFRpbWVvdXQgZm9yIEZsYXNoIFdyaXRlIChpbiBtcykgKi8KKworLyogSkZGUyBQYXJ0aXRpb24gb2Zmc2V0IHNldCAgKi8KKyNkZWZpbmUgQ0ZHX0pGRlMyX0ZJUlNUX0JBTksgMAorI2RlZmluZSBDRkdfSkZGUzJfTlVNX0JBTktTICAxCisvKiA1MTJrIHJlc2VydmVkIGZvciB1LWJvb3QgKi8KKyNkZWZpbmUgQ0ZHX0pGRlMyX0ZJUlNUX1NFQ1RPUgkJMTEKKworLyoKKyAqIGZvbGxvd2luZyB0aW1lb3V0cyBzaGFsbCBiZSB1c2VkIG9uY2UgdGhlCisgKiBGbGFzaCByZWFsIHByb3RlY3Rpb24gaXMgZW5hYmxlZAorICovCisjZGVmaW5lIENGR19GTEFTSF9MT0NLX1RPVVQJCTUJLyogVGltZW91dCBmb3IgRmxhc2ggU2V0IExvY2sgQml0IChpbiBtcykgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX1VOTE9DS19UT1VUCQkxMDAwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBDbGVhciBMb2NrIEJpdHMgKGluIG1zKSAqLworCisvKgorICogSTJDIHNldHRpbmdzCisgKiBCeSBkZWZhdWx0IFBGMiBpcyB1c2VkIGFzIFNEQSBhbmQgUEYzIGFzIFNDTCBvbiB0aGUgU3RhbXAgYm9hcmQKKyAqLworI2RlZmluZSBDT05GSUdfU09GVF9JMkMJCQkxCS8qIEkyQyBiaXQtYmFuZ2VkCQkqLworLyoKKyAqIFNvZnR3YXJlIChiaXQtYmFuZykgSTJDIGRyaXZlciBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgUEZfU0NMCQkJCVBGMworI2RlZmluZSBQRl9TREEJCQkJUEYyCisKKyNkZWZpbmUgSTJDX0lOSVQJCQkoKnBGSU9fRElSIHw9ICBQRl9TQ0wpOyBhc20oInNzeW5jOyIpCisjZGVmaW5lIEkyQ19BQ1RJVkUJCQkoKnBGSU9fRElSIHw9ICBQRl9TREEpOyAqcEZJT19JTkVOICY9IH5QRl9TREE7IGFzbSgic3N5bmM7IikKKyNkZWZpbmUgSTJDX1RSSVNUQVRFCQkJKCpwRklPX0RJUiAmPSB+UEZfU0RBKTsgKnBGSU9fSU5FTiB8PSBQRl9TREE7IGFzbSgic3N5bmM7IikKKyNkZWZpbmUgSTJDX1JFQUQJCQkoKHZvbGF0aWxlKSgqcEZJT19GTEFHX0QgJiBQRl9TREEpICE9IDApOyBhc20oInNzeW5jOyIpCisjZGVmaW5lIEkyQ19TREEoYml0KQkJCWlmKGJpdCkgeyBcCisJCQkJCQkJKnBGSU9fRkxBR19TID0gUEZfU0RBOyBcCisJCQkJCQkJYXNtKCJzc3luYzsiKTsgXAorCQkJCQkJfSBcCisJCQkJCWVsc2UJeyBcCisJCQkJCQkJKnBGSU9fRkxBR19DID0gUEZfU0RBOyBcCisJCQkJCQkJYXNtKCJzc3luYzsiKTsgXAorCQkJCQkJfQorI2RlZmluZSBJMkNfU0NMKGJpdCkJCQlpZihiaXQpIHsgXAorCQkJCQkJCSpwRklPX0ZMQUdfUyA9IFBGX1NDTDsgXAorCQkJCQkJCWFzbSgic3N5bmM7Iik7IFwKKwkJCQkJCX0gXAorCQkJCQllbHNlCXsgXAorCQkJCQkJCSpwRklPX0ZMQUdfQyA9IFBGX1NDTDsgXAorCQkJCQkJCWFzbSgic3N5bmM7Iik7IFwKKwkJCQkJCX0KKyNkZWZpbmUgSTJDX0RFTEFZCQkJdWRlbGF5KDUpCS8qIDEvNCBJMkMgY2xvY2sgZHVyYXRpb24gKi8KKworI2RlZmluZSBDRkdfSTJDX1NQRUVECQkJNTAwMDAKKyNkZWZpbmUgQ0ZHX0kyQ19TTEFWRQkJCTB4RkUKKworLyoKKyAqIENvbXBhY3QgRmxhc2ggc2V0dGluZ3MKKyAqLworCisvKiBFbmFibGVkIGJlbG93IG9wdGlvbiBmb3IgQ0Ygc3VwcG9ydCAqLworLyogI2RlZmluZSBDT05GSUdfU1RBTVBfQ0YJCTEgKi8KKworI2lmIGRlZmluZWQoQ09ORklHX1NUQU1QX0NGKSAmJiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9JREUpCisKKyNkZWZpbmUgQ09ORklHX01JU0NfSU5JVF9SCQkxCisjZGVmaW5lIENPTkZJR19ET1NfUEFSVElUSU9OCQkxCisKKy8qCisgKiBJREUvQVRBIHN0dWZmCisgKi8KKyN1bmRlZglDT05GSUdfSURFXzh4eF9ESVJFQ1QJCS8qIG5vIHBjbWNpYSBpbnRlcmZhY2UgcmVxdWlyZWQgKi8KKyN1bmRlZglDT05GSUdfSURFX0xFRAkJCS8qIG5vIGxlZCBmb3IgaWRlIHN1cHBvcnRlZCAqLworI3VuZGVmCUNPTkZJR19JREVfUkVTRVQJCS8qIG5vIHJlc2V0IGZvciBpZGUgc3VwcG9ydGVkICovCisKKyNkZWZpbmUgQ0ZHX0lERV9NQVhCVVMJMQkJLyogbWF4LiAxIElERSBidXNzZXMgKi8KKyNkZWZpbmUgQ0ZHX0lERV9NQVhERVZJQ0UJCShDRkdfSURFX01BWEJVUyoxKSAvKiBtYXguIDEgZHJpdmVzIHBlciBJREUgYnVzICovCisKKyNkZWZpbmUgQ0ZHX0FUQV9CQVNFX0FERFIJCTB4MjAyMDAwMDAKKyNkZWZpbmUgQ0ZHX0FUQV9JREUwX09GRlNFVAkJMHgwMDAwCisKKyNkZWZpbmUgQ0ZHX0FUQV9EQVRBX09GRlNFVAkJMHgwMDIwCS8qIE9mZnNldCBmb3IgZGF0YSBJL08gKi8KKyNkZWZpbmUgQ0ZHX0FUQV9SRUdfT0ZGU0VUCQkweDAwMjAJLyogT2Zmc2V0IGZvciBub3JtYWwgcmVnaXN0ZXIgYWNjZXNzZXMgKi8KKyNkZWZpbmUgQ0ZHX0FUQV9BTFRfT0ZGU0VUCQkweDAwMDcJLyogT2Zmc2V0IGZvciBhbHRlcm5hdGUgcmVnaXN0ZXJzICovCisKKyNkZWZpbmUgQ0ZHX0FUQV9TVFJJREUJCQkyCisjZW5kaWYKKworLyoKKyAqIFNEUkFNIHNldHRpbmdzCisgKgorICovCisKKyNkZWZpbmUgQ09ORklHX01FTV9TSVpFCQkJMTI4CQkvKiAxMjgsIDY0LCAzMiwgMTYgKi8KKyNkZWZpbmUgQ09ORklHX01FTV9BRERfV0RUSAkJMTEJICAgICAgIC8qIDgsIDksIDEwLCAxMQkgICovCisjZGVmaW5lIENPTkZJR19NRU1fTVQ0OExDNjRNNEEyRkJfN0UJMQorCisjZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCQkweDAwMTAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24gKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkJMHgwN0VGRkZGRgkvKiAxIC4uLiAxMjcgTUIgaW4gRFJBTSAqLworI2RlZmluZSBDRkdfTE9BRF9BRERSCQkJMHgwMTAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworCisjZGVmaW5lIENGR19TRFJBTV9CQVNFCQkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfTUFYX1JBTV9TSVpFCQkweDA4MDAwMDAwCisKKyNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQkJKDI1NiA8PCAxMCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IJKi8KKyNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQkJKENGR19NQVhfUkFNX1NJWkUgLSBDRkdfTU9OSVRPUl9MRU4pCisKKyNpZiAoIENPTkZJR19DTEtJTl9IQUxGID09IDAgKQorI2RlZmluZSBDT05GSUdfVkNPX0haCQkJKCBDT05GSUdfQ0xLSU5fSFogKiBDT05GSUdfVkNPX01VTFQgKQorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1ZDT19IWgkJCSgoIENPTkZJR19DTEtJTl9IWiAqIENPTkZJR19WQ09fTVVMVCApIC8gMiApCisjZW5kaWYKKworI2lmIChDT05GSUdfUExMX0JZUEFTUyA9PSAwKQorI2RlZmluZSBDT05GSUdfQ0NMS19IWgkJCSggQ09ORklHX1ZDT19IWiAvIENPTkZJR19DQ0xLX0RJViApCisjZGVmaW5lIENPTkZJR19TQ0xLX0haCQkJKCBDT05GSUdfVkNPX0haIC8gQ09ORklHX1NDTEtfRElWICkKKyNlbHNlCisjZGVmaW5lIENPTkZJR19DQ0xLX0haCQkJQ09ORklHX0NMS0lOX0haCisjZGVmaW5lIENPTkZJR19TQ0xLX0haCQkJQ09ORklHX0NMS0lOX0haCisjZW5kaWYKKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZSBDRkdfSFoJCQkJMTAwMAkJLyogMW1zIHRpbWUgdGljayAqLworCisjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkJKDEyOCA8PCAxMCkJLyogUmVzZXJ2ZSAxMjgga0IgZm9yIG1hbGxvYygpCSovCisjZGVmaW5lIENGR19NQUxMT0NfQkFTRQkJCShDRkdfTU9OSVRPUl9CQVNFIC0gQ0ZHX01BTExPQ19MRU4pCisjZGVmaW5lIENGR19HQkxfREFUQV9TSVpFCQkweDQwMDAKKyNkZWZpbmUgQ0ZHX0dCTF9EQVRBX0FERFIJCShDRkdfTUFMTE9DX0JBU0UgLSBDRkdfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NUQUNLQkFTRQkJKENGR19HQkxfREFUQV9BRERSICAtIDQpCisKKyNkZWZpbmUgQ0ZHX0xBUkdFX0lNQUdFX0xFTgkweDQwMDAwMDAJLyogTGFyZ2UgSW1hZ2UgTGVuZ3RoLCBzZXQgdG8gNjQgTWVnICovCisKKyNkZWZpbmUgQ09ORklHX1NIT1dfQk9PVF9QUk9HUkVTUwkxCS8qIFNob3cgYm9vdCBwcm9ncmVzcyBvbiBMRURzICovCisKKy8qCisgKiBTdGFjayBzaXplcworICovCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkUJCSgxMjgqMTAyNCkJLyogcmVndWxhciBzdGFjayAqLworCisvKgorICogRkxBU0ggb3JnYW5pemF0aW9uIGFuZCBlbnZpcm9ubWVudCBkZWZpbml0aW9ucworICovCisjZGVmaW5lIENGR19CT09UTUFQU1oJCQkoOCA8PCAyMCkJLyogSW5pdGlhbCBNZW1vcnkgbWFwIGZvciBMaW51eCAqLworCisvKiAweEZGLCAweEJCQzNCQmMzLCAweDk5QjM5OTgzICovCisvKiNkZWZpbmUgQU1HQ1RMVkFMCQkoQU1CRU5fUDAgfCBBTUJFTl9QMSB8IEFNQkVOX1AyIHwgQU1DS0VOKQorI2RlZmluZSBBTUJDVEwwVkFMCQkoQjFXQVRfMTEgfCBCMVJBVF8xMSB8IEIxSFRfMyB8IEIxU1RfNCB8IEIxVFRfNCB8IEIxUkRZUE9MIHwJXAorCQkJCUIxUkRZRU4gfCBCMFdBVF8xMSB8IEIwUkFUXzExIHwgQjBIVF8zIHwgQjBTVF80IHwgQjBUVF80IHwgQjBSRFlQT0wgfCBCMFJEWUVOKQorI2RlZmluZSBBTUJDVEwxVkFMCQkoQjNXQVRfOSB8IEIzUkFUXzkgfCBCM0hUXzIgfCBCM1NUXzMgfCBCM1RUXzQgfCBCM1JEWVBPTCB8CVwKKwkJCQlCM1JEWUVOIHwgQjJXQVRfOSB8IEIyUkFUXzkgfCBCMkhUXzIgfCBCMlNUXzQgfCBCMlRUXzQgfCBCMlJEWVBPTCB8IEIyUkRZRU4pCisqLworI2RlZmluZSBBTUdDVExWQUwJCTB4RkYKKyNkZWZpbmUgQU1CQ1RMMFZBTAkJMHhCQkMzQkJDMworI2RlZmluZSBBTUJDVEwxVkFMCQkweDk5QjM5OTgzCisjZGVmaW5lIENGX0FNQkNUTDFWQUwJCTB4OTlCM2ZmYzIKKworI2lmZGVmIENPTkZJR19WRFNQCisjZGVmaW5lIEVUX0VYRUNfVkRTUAkJMHg4CisjZGVmaW5lIFNIVF9TVFJUQUJfVkRTUAkJMHgxCisjZGVmaW5lIEVMRlNIRFJTSVpFX1ZEU1AJMHgyQworI2RlZmluZSBWRFNQX0VOVFJZX0FERFIJCTB4RkZBMDAwMDAKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zdHh4dGMuaCBiL2luY2x1ZGUvY29uZmlncy9zdHh4dGMuaAppbmRleCAzZmZlNmIyLi5iZTZjMzZjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc3R4eHRjLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3N0eHh0Yy5oCkBAIC01ODQsNSArNTg0LDcgQEAKIAogI2RlZmluZSBPRl9DUFUJCQkiUG93ZXJQQyxNUEM4NzBAMCIKICNkZWZpbmUgT0ZfVEJDTEsJCShNUEM4WFhfSFogLyAxNikKKyNkZWZpbmUgQ09ORklHX09GX0hBU19CRF9UCTEKKyNkZWZpbmUgQ09ORklHX09GX0hBU19VQk9PVF9FTlYJMQogCiAjZW5kaWYJLyogX19DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3N2bV9zYzh4eC5oIGIvaW5jbHVkZS9jb25maWdzL3N2bV9zYzh4eC5oCmluZGV4IDcxMThmM2YuLjkyZWU4Y2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zdm1fc2M4eHguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc3ZtX3NjOHh4LmgKQEAgLTE0MSw2ICsxNDEsNyBAQAogCiAvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCiAjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CisjZGVmaW5lIENGR19OQU5EX0xFR0FDWQogCiAvKgogICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3V0eDgyNDUuaCBiL2luY2x1ZGUvY29uZmlncy91dHg4MjQ1LmgKaW5kZXggZDMxMmI2NS4uZTVkNDM5NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3V0eDgyNDUuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdXR4ODI0NS5oCkBAIC05MSw3ICs5MSw2IEBACiAJCQkJCQkJCXwgQ0ZHX0NNRF9FTlYgfCBDRkdfQ01EX0NPTlNPTEUgXAogCQkJCQkJCQl8IENGR19DTURfTE9BRFMgfCBDRkdfQ01EX0xPQURCIFwKIAkJCQkJCQkJfCBDRkdfQ01EX0lNSSB8IENGR19DTURfQ0FDSEUgXAotCQkJCQkJCQl8IENGR19DTURfUlVOIHwgQ0ZHX0NNRF9FQ0hPIFwKIAkJCQkJCQkJfCBDRkdfQ01EX1JFR0lORk8gfCBDRkdfQ01EX05FVFwKIAkJCQkJCQkJfCBDRkdfQ01EX0RIQ1AgfCBDRkdfQ01EX0kyQyBcCiAJCQkJCQkJCXwgQ0ZHX0NNRF9EQVRFKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3p5bG9uaXRlLmggYi9pbmNsdWRlL2NvbmZpZ3Mvenlsb25pdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjMyZDUwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jb25maWdzL3p5bG9uaXRlLmgKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIEt5bGUgSGFycmlzLCBOZXh1cyBUZWNobm9sb2dpZXMsIEluYy4ga2hhcnJpc0BuZXh1cy10ZWNoLm5ldAorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogU3lzZ28gUmVhbC1UaW1lIFNvbHV0aW9ucywgR21iSCA8d3d3LmVsaW5vcy5jb20+CisgKiBNYXJpdXMgR3JvZWdlciA8bWdyb2VnZXJAc3lzZ28uZGU+CisgKgorICogQ29uZmlndWF0aW9uIHNldHRpbmdzIGZvciB0aGUgWnlsb25pdGUgYm9hcmQuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworLyoKKyAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCisgKiAoZWFzeSB0byBjaGFuZ2UpCisgKi8KKyNkZWZpbmUgQ09ORklHX0NQVV9NT05BSEFOUwkxCS8qIEludGVsIE1vbmFoYW4gQ1BVICAgICovCisjZGVmaW5lIENPTkZJR19aWUxPTklURQkJMQkvKiBaeWxvbml0ZSBib2FyZCAgICAgICAqLworCisvKiAjZGVmaW5lIENPTkZJR19MQ0QJCTEgKi8KKyNpZmRlZiBDT05GSUdfTENECisjZGVmaW5lIENPTkZJR19TSEFSUF9MTThWMzEKKyNlbmRpZgorLyogI2RlZmluZSBDT05GSUdfTU1DCQkxICovCisjZGVmaW5lIEJPQVJEX0xBVEVfSU5JVAkJMQorCisjdW5kZWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QKKyN1bmRlZiBDT05GSUdfVVNFX0lSUQkJCS8qIHdlIGRvbid0IG5lZWQgSVJRL0ZJUSBzdHVmZiAqLworCisvKgorICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCisgKi8KKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JICAgIChDRkdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKKyNkZWZpbmUgQ0ZHX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLworCisvKgorICogSGFyZHdhcmUgZHJpdmVycworICovCisKKyN1bmRlZiBUVVJOX09OX0VUSEVSTkVUCisjaWZkZWYgVFVSTl9PTl9FVEhFUk5FVAorIyBkZWZpbmUgQ09ORklHX0RSSVZFUl9TTUM5MTExMSAxCisjIGRlZmluZSBDT05GSUdfU01DOTExMTFfQkFTRSAgIDB4MTQwMDAzMDAKKyMgZGVmaW5lIENPTkZJR19TTUM5MTExMV9FWFRfUEhZCisjIGRlZmluZSBDT05GSUdfU01DX1VTRV8zMl9CSVQKKyMgdW5kZWYgQ09ORklHX1NNQ19VU0VfSU9GVU5DUyAgICAgICAgICAvKiBqdXN0IGZvciB1c2Ugd2l0aCB0aGUga2VybmVsICovCisjZW5kaWYKKworLyoKKyAqIHNlbGVjdCBzZXJpYWwgY29uc29sZSBjb25maWd1cmF0aW9uCisgKi8KKyNkZWZpbmUgQ09ORklHX0ZGVUFSVAkgICAgICAgMQorCisvKiBhbGxvdyB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCisjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCisKKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKKworLyogI2RlZmluZSBDT05GSUdfQ09NTUFORFMgICAgICAgKENPTkZJR19DTURfREZMIHwgQ0ZHX0NNRF9NTUMgfCBDRkdfQ01EX0ZBVCkgKi8KKyNpZmRlZiBUVVJOX09OX0VUSEVSTkVUCisjIGRlZmluZSBDT05GSUdfQ09NTUFORFMgICAgICAgIChDT05GSUdfQ01EX0RGTCB8IENGR19DTURfUElORykKKyNlbHNlCisjIGRlZmluZSBDT05GSUdfQ09NTUFORFMJKENPTkZJR19DTURfREZMICYgfkNGR19DTURfTkVUKQorI2VuZGlmCisKKworLyogdGhpcyBtdXN0IGJlIGluY2x1ZGVkIEFGVEVSIHRoZSBkZWZpbml0aW9uIG9mIENPTkZJR19DT01NQU5EUyAoaWYgYW55KSAqLworI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgorCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJLTEKKyNkZWZpbmUgQ09ORklHX0VUSEFERFIJCTA4OjAwOjNlOjI2OjBhOjViCisjZGVmaW5lIENPTkZJR19ORVRNQVNLCQkyNTUuMjU1LjAuMAorI2RlZmluZSBDT05GSUdfSVBBRERSCQkxOTIuMTY4LjAuMjEKKyNkZWZpbmUgQ09ORklHX1NFUlZFUklQCQkxOTIuMTY4LjAuMjUwCisjZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkiYm9vdG0gODAwMDAiCisjZGVmaW5lIENPTkZJR19CT09UQVJHUwkJInJvb3Q9L2Rldi9tdGRibG9jazIgcm9vdGZzdHlwZT1jcmFtZnMgY29uc29sZT10dHlTMCwxMTUyMDAiCisjZGVmaW5lIENPTkZJR19DTURMSU5FX1RBRworI2RlZmluZSBDT05GSUdfVElNRVNUQU1QCisKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQorI2RlZmluZSBDT05GSUdfS0dEQl9CQVVEUkFURQkyMzA0MDAJCS8qIHNwZWVkIHRvIHJ1biBrZ2RiIHNlcmlhbCBwb3J0ICovCisjZGVmaW5lIENPTkZJR19LR0RCX1NFUl9JTkRFWAkyCQkvKiB3aGljaCBzZXJpYWwgcG9ydCB0byB1c2UgKi8KKyNlbmRpZgorCisvKgorICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucworICovCisjZGVmaW5lIENGR19IVVNIX1BBUlNFUgkJMQorI2RlZmluZSBDRkdfUFJPTVBUX0hVU0hfUFMyCSI+ICIKKworI2RlZmluZSBDRkdfTE9OR0hFTFAJCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJCSovCisjaWZkZWYgQ0ZHX0hVU0hfUEFSU0VSCisjZGVmaW5lIENGR19QUk9NUFQJCSIkICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KKyNlbHNlCisjZGVmaW5lIENGR19QUk9NUFQJCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCisjZW5kaWYKKyNkZWZpbmUgQ0ZHX0NCU0laRQkJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLworI2RlZmluZSBDRkdfUEJTSVpFIChDRkdfQ0JTSVpFK3NpemVvZihDRkdfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ0ZHX01BWEFSR1MJCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLworI2RlZmluZSBDRkdfQkFSR1NJWkUJCUNGR19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLworI2RlZmluZSBDRkdfREVWSUNFX05VTExERVYJMQorCisjZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4OWMwMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkqLworI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4OWM0MDAwMDAJLyogNCAuLi4gOCBNQiBpbiBEUkFNCSovCisKKyN1bmRlZglDRkdfQ0xLU19JTl9IWgkJLyogZXZlcnl0aGluZywgaW5jbCBib2FyZCBpbmZvLCBpbiBIeiAqLworCisjZGVmaW5lIENGR19MT0FEX0FERFIJKENGR19EUkFNX0JBU0UgKyAweDgwMDApIC8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisKKyNkZWZpbmUgQ0ZHX0haCQkJMzY4NjQwMAkJLyogaW5jcmVtZW50ZXIgZnJlcTogMy42ODY0IE1IeiAqLworI2RlZmluZSBDRkdfQ1BVU1BFRUQJCTB4MTYxCQkvKiBzZXQgY29yZSBjbG9jayB0byA0MDAvMjAwLzEwMCBNSHogKi8KKworCQkJCQkJLyogdmFsaWQgYmF1ZHJhdGVzICovCisjZGVmaW5lIENGR19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9CisKKy8qICNkZWZpbmUgQ0ZHX01NQ19CQVNFCQkweEYwMDAwMDAwICovCisKKy8qCisgKiBTdGFjayBzaXplcworICoKKyAqIFRoZSBzdGFjayBzaXplcyBhcmUgc2V0IHVwIGluIHN0YXJ0LlMgdXNpbmcgdGhlIHNldHRpbmdzIGJlbG93CisgKi8KKyNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkoMTI4KjEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KKyNpZmRlZiBDT05GSUdfVVNFX0lSUQorI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFX0lSUQkoNCoxMDI0KQkvKiBJUlEgc3RhY2sgKi8KKyNkZWZpbmUgQ09ORklHX1NUQUNLU0laRV9GSVEJKDQqMTAyNCkJLyogRklRIHN0YWNrICovCisjZW5kaWYKKworLyoKKyAqIFBoeXNpY2FsIE1lbW9yeSBNYXAKKyAqLworI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwk0CSAgIC8qIHdlIGhhdmUgMiBiYW5rcyBvZiBEUkFNICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMQkJMHhhMDAwMDAwMCAvKiBTRFJBTSBCYW5rICMxICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFCTB4MDQwMDAwMDAgLyogNjQgTUIgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8yCQkweGE0MDAwMDAwIC8qIFNEUkFNIEJhbmsgIzIgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8yX1NJWkUJMHgwMDAwMDAwMCAvKiAwIE1CICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMwkJMHhhODAwMDAwMCAvKiBTRFJBTSBCYW5rICMzICovCisjZGVmaW5lIFBIWVNfU0RSQU1fM19TSVpFCTB4MDAwMDAwMDAgLyogMCBNQiAqLworI2RlZmluZSBQSFlTX1NEUkFNXzQJCTB4YWMwMDAwMDAgLyogU0RSQU0gQmFuayAjNCAqLworI2RlZmluZSBQSFlTX1NEUkFNXzRfU0laRQkweDAwMDAwMDAwIC8qIDAgTUIgKi8KKworI2RlZmluZSBQSFlTX0ZMQVNIXzEJCTB4MDAwMDAwMDAgLyogRmxhc2ggQmFuayAjMSAqLworI2RlZmluZSBQSFlTX0ZMQVNIXzIJCTB4MDQwMDAwMDAgLyogRmxhc2ggQmFuayAjMiAqLworI2RlZmluZSBQSFlTX0ZMQVNIX1NJWkUJCTB4MDIwMDAwMDAgLyogMzIgTUIgKi8KKyNkZWZpbmUgUEhZU19GTEFTSF9CQU5LX1NJWkUJMHgwMjAwMDAwMCAvKiAzMiBNQiBCYW5rcyAqLworI2RlZmluZSBQSFlTX0ZMQVNIX1NFQ1RfU0laRQkweDAwMDQwMDAwIC8qIDI1NiBLQiBzZWN0b3JzICh4MikgKi8KKworI2RlZmluZSBDRkdfRFJBTV9CQVNFCQkweGEwMDAwMDAwCisjZGVmaW5lIENGR19EUkFNX1NJWkUJCTB4MDQwMDAwMDAKKworI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkJUEhZU19GTEFTSF8xCisKKyNkZWZpbmUgRlBHQV9SRUdTX0JBU0VfUEhZU0lDQUwgMHgwODAwMDAwMAorCisvKgorICogR1BJTyBzZXR0aW5ncworICovCisjZGVmaW5lIENGR19HUFNSMF9WQUwJCTB4MDAwMDgwMDAKKyNkZWZpbmUgQ0ZHX0dQU1IxX1ZBTAkJMHgwMEZDMDM4MgorI2RlZmluZSBDRkdfR1BTUjJfVkFMCQkweDAwMDFGRkZGCisjZGVmaW5lIENGR19HUENSMF9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dQQ1IxX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfR1BDUjJfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19HUERSMF9WQUwJCTB4MDA2MEE4MDAKKyNkZWZpbmUgQ0ZHX0dQRFIxX1ZBTAkJMHgwMEZGMDM4MgorI2RlZmluZSBDRkdfR1BEUjJfVkFMCQkweDAwMDFDMDAwCisjZGVmaW5lIENGR19HQUZSMF9MX1ZBTAkJMHg5ODQwMDAwMAorI2RlZmluZSBDRkdfR0FGUjBfVV9WQUwJCTB4MDAwMDI5NTAKKyNkZWZpbmUgQ0ZHX0dBRlIxX0xfVkFMCQkweDAwMEE5NTU4CisjZGVmaW5lIENGR19HQUZSMV9VX1ZBTAkJMHgwMDA1QUFBQQorI2RlZmluZSBDRkdfR0FGUjJfTF9WQUwJCTB4QTAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dBRlIyX1VfVkFMCQkweDAwMDAwMDAyCisKKyNkZWZpbmUgQ0ZHX1BTU1JfVkFMCQkweDIwCisKKy8qCisgKiBNZW1vcnkgc2V0dGluZ3MKKyAqLworI2RlZmluZSBDRkdfTVNDMF9WQUwJCTB4MjNGMjIzRjIKKyNkZWZpbmUgQ0ZHX01TQzFfVkFMCQkweDNGRjFBNDQxCisjZGVmaW5lIENGR19NU0MyX1ZBTAkJMHg3RkY5N0ZGMQorI2RlZmluZSBDRkdfTURDTkZHX1ZBTAkJMHgwMDAwMUFDOQorI2RlZmluZSBDRkdfTURSRUZSX1ZBTAkJMHgwMDAxODAxOAorI2RlZmluZSBDRkdfTURNUlNfVkFMCQkweDAwMDAwMDAwCisKKy8qCisgKiBQQ01DSUEgYW5kIENGIEludGVyZmFjZXMKKyAqLworI2RlZmluZSBDRkdfTUVDUl9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX01DTUVNMF9WQUwJCTB4MDAwMTA1MDQKKyNkZWZpbmUgQ0ZHX01DTUVNMV9WQUwJCTB4MDAwMTA1MDQKKyNkZWZpbmUgQ0ZHX01DQVRUMF9WQUwJCTB4MDAwMTA1MDQKKyNkZWZpbmUgQ0ZHX01DQVRUMV9WQUwJCTB4MDAwMTA1MDQKKyNkZWZpbmUgQ0ZHX01DSU8wX1ZBTAkJMHgwMDAwNDcxNQorI2RlZmluZSBDRkdfTUNJTzFfVkFMCQkweDAwMDA0NzE1CisKKyNkZWZpbmUgX0xFRAkJCTB4MDgwMDAwMTAKKyNkZWZpbmUgTEVEX0JMQU5LCQkweDA4MDAwMDQwCisKKy8qCisgKiBGTEFTSCBhbmQgZW52aXJvbm1lbnQgb3JnYW5pemF0aW9uCisgKi8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwkyCS8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCQkqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJMTI4ICAvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAgICAgKi8KKworLyogdGltZW91dCB2YWx1ZXMgYXJlIGluIHRpY2tzICovCisjZGVmaW5lIENGR19GTEFTSF9FUkFTRV9UT1VUCSgyNSpDRkdfSFopIC8qIFRpbWVvdXQgZm9yIEZsYXNoIEVyYXNlICovCisjZGVmaW5lIENGR19GTEFTSF9XUklURV9UT1VUCSgyNSpDRkdfSFopIC8qIFRpbWVvdXQgZm9yIEZsYXNoIFdyaXRlICovCisKKy8qIE5PVEU6IG1hbnkgZGVmYXVsdCBwYXJ0aXRpb25pbmcgc2NoZW1lcyBhc3N1bWUgdGhlIGtlcm5lbCBzdGFydHMgYXQgdGhlCisgKiBzZWNvbmQgc2VjdG9yLCBub3QgYW4gZW52aXJvbm1lbnQuICBZb3UgaGF2ZSBiZWVuIHdhcm5lZCEKKyAqLworI2RlZmluZQlDRkdfTU9OSVRPUl9MRU4JCVBIWVNfRkxBU0hfU0VDVF9TSVpFCisKKyNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9GTEFTSCAgICAgMQorI2RlZmluZSBDRkdfRU5WX0FERFIJCShQSFlTX0ZMQVNIXzEgKyBQSFlTX0ZMQVNIX1NFQ1RfU0laRSkKKyNkZWZpbmUgQ0ZHX0VOVl9TRUNUX1NJWkUJUEhZU19GTEFTSF9TRUNUX1NJWkUKKyNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkoUEhZU19GTEFTSF9TRUNUX1NJWkUgLyAxNikKKworCisvKgorICogRlBHQSBPZmZzZXRzCisgKi8KKyNkZWZpbmUgV0hPQU1JX09GRlNFVAkJMHgwMAorI2RlZmluZSBIRVhMRURfT0ZGU0VUCQkweDEwCisjZGVmaW5lIEJMQU5LTEVEX09GRlNFVAkJMHg0MAorI2RlZmluZSBESVNDUkVURUxFRF9PRkZTRVQJMHg0MAorI2RlZmluZSBDTkZHX1NXSVRDSEVTX09GRlNFVAkweDUwCisjZGVmaW5lIFVTRVJfU1dJVENIRVNfT0ZGU0VUCTB4NjAKKyNkZWZpbmUgTUlTQ19XUl9PRkZTRVQJCTB4ODAKKyNkZWZpbmUgTUlTQ19SRF9PRkZTRVQJCTB4OTAKKyNkZWZpbmUgSU5UX01BU0tfT0ZGU0VUCQkweEMwCisjZGVmaW5lIElOVF9DTEVBUl9PRkZTRVQJMHhEMAorI2RlZmluZSBHUF9PRkZTRVQJCTB4MTAwCisKKyNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZsYXNoLmggYi9pbmNsdWRlL2ZsYXNoLmgKaW5kZXggMDY5YWE2My4uNGM2OGM2OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mbGFzaC5oCisrKyBiL2luY2x1ZGUvZmxhc2guaApAQCAtMjQyLDYgKzI0Miw3IEBACiAjZGVmaW5lIFNUTV9JRF8yOVczMjBEVCAweDIyQ0EyMkNBCS8qIE0yOVczMjBEVCBJRCAoMzIgTSwgdG9wIGJvb3Qgc2VjdG9yKSAqLwogI2RlZmluZSBTVE1fSURfMjlXMzIwREIgMHgyMkNCMjJDQgkvKiBNMjlXMzIwREIgSUQgKDMyIE0sIGJvdHRvbSBib290IHNlY3QpCSovCiAjZGVmaW5lIFNUTV9JRF8yOVcwNDBCCTB4MDBFMzAwRTMJLyogTTI5VzA0MEIgSUQgKDRNID0gNTEySyB4IDgpCSovCisjZGVmaW5lIEZMQVNIX1BTRDQyNTZHViAweDAwRTkJCS8qIFBTRDQyNTYgRmxhc2ggYW5kIENQTEQgY29tYmluYXRpb24JKi8KIAogI2RlZmluZSBJTlRFTF9JRF8yOEYwMTZTICAgIDB4NjZhMDY2YTAJLyogMjhGMDE2U1tWU10gSUQgKDE2TSA9IDUxMmsgeCAxNikJKi8KICNkZWZpbmUgSU5URUxfSURfMjhGODAwQjNUICAweDg4OTI4ODkyCS8qICA4TSA9IDUxMksgeCAxNiB0b3AgYm9vdCBzZWN0b3IJKi8KQEAgLTI3NCw2ICsyNzUsMTIgQEAKICNkZWZpbmUgSU5URUxfSURfMjhGNjRLMyAgICAweDg4MDE4ODAxCS8qICA2NE0gPSAgMzJLIHggMjU1ICsgMzJrIHggNCAqLwogI2RlZmluZSBJTlRFTF9JRF8yOEYxMjhLMyAgIDB4ODgwMjg4MDIJLyogMTI4TSA9ICA2NEsgeCAyNTUgKyAzMmsgeCA0ICovCiAjZGVmaW5lIElOVEVMX0lEXzI4RjI1NkszICAgMHg4ODAzODgwMwkvKiAyNTZNID0gMTI4SyB4IDI1NSArIDMyayB4IDQgKi8KKyNkZWZpbmUgSU5URUxfSURfMjhGNjRQMzBUICAweDg4MTc4ODE3CS8qICA2NE0gPSAgMzJLIHggMjU1ICsgMzJrIHggNCAqLworI2RlZmluZSBJTlRFTF9JRF8yOEY2NFAzMEIgIDB4ODgxQTg4MUEJLyogIDY0TSA9ICAzMksgeCAyNTUgKyAzMmsgeCA0ICovCisjZGVmaW5lIElOVEVMX0lEXzI4RjEyOFAzMFQgMHg4ODE4ODgxOAkvKiAxMjhNID0gIDY0SyB4IDI1NSArIDMyayB4IDQgKi8KKyNkZWZpbmUgSU5URUxfSURfMjhGMTI4UDMwQiAweDg4MUI4ODFCCS8qIDEyOE0gPSAgNjRLIHggMjU1ICsgMzJrIHggNCAqLworI2RlZmluZSBJTlRFTF9JRF8yOEYyNTZQMzBUIDB4ODgxOTg4MTkJLyogMjU2TSA9IDEyOEsgeCAyNTUgKyAzMmsgeCA0ICovCisjZGVmaW5lIElOVEVMX0lEXzI4RjI1NlAzMEIgMHg4ODFDODgxQwkvKiAyNTZNID0gMTI4SyB4IDI1NSArIDMyayB4IDQgKi8KIAogI2RlZmluZSBJTlRFTF9JRF8yOEYxNjBTMyAgIDB4MDBEMDAwRDAJLyogIDE2TSA9IDUxMksgeCAgMzIgKDY0a0IgeCAzMikJKi8KICNkZWZpbmUgSU5URUxfSURfMjhGMzIwUzMgICAweDAwRDQwMEQ0CS8qICAzMk0gPSA1MTJLIHggIDY0ICg2NGtCIHggNjQpCSovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2Z0X2J1aWxkLmggYi9pbmNsdWRlL2Z0X2J1aWxkLmgKaW5kZXggOTEwNGIxYS4uNDdjYTU3NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mdF9idWlsZC5oCisrKyBiL2luY2x1ZGUvZnRfYnVpbGQuaApAQCAtNTcsMTAgKzU3LDEyIEBACiB2b2lkIGZ0X2JlZ2luKHN0cnVjdCBmdF9jeHQgKmN4dCwgdm9pZCAqYmxvYiwgaW50IG1heF9zaXplKTsKIHZvaWQgZnRfYWRkX3Jzdm1hcChzdHJ1Y3QgZnRfY3h0ICpjeHQsIHU2NCBwaHlzYWRkciwgdTY0IHNpemUpOwogCi12b2lkIGZ0X3NldHVwKHZvaWQgKmJsb2IsIGludCBzaXplLCBiZF90ICogYmQpOwordm9pZCBmdF9zZXR1cCh2b2lkICpibG9iLCBpbnQgc2l6ZSwgYmRfdCAqIGJkLCB1bG9uZyBpbml0cmRfc3RhcnQsIHVsb25nIGluaXRyZF9lbmQpOwogCiB2b2lkIGZ0X2R1bXBfYmxvYihjb25zdCB2b2lkICpicGhwKTsKIHZvaWQgZnRfbWVyZ2VfYmxvYihzdHJ1Y3QgZnRfY3h0ICpjeHQsIHZvaWQgKmJsb2IpOwogdm9pZCAqZnRfZ2V0X3Byb3Aodm9pZCAqYnBocCwgY29uc3QgY2hhciAqcHJvcG5hbWUsIGludCAqc3pwKTsKIAordm9pZCBmdF9ib2FyZF9zZXR1cCh2b2lkICpibG9iLCBiZF90ICpiZCk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9pbWFnZS5oIGIvaW5jbHVkZS9pbWFnZS5oCmluZGV4IGFmMzdiY2EuLjEzOWRmMGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaW1hZ2UuaAorKysgYi9pbmNsdWRlL2ltYWdlLmgKQEAgLTc1LDYgKzc1LDcgQEAKICNkZWZpbmUgSUhfQ1BVX05JT1MJCTEzCS8qIE5pb3MtMzIJKi8KICNkZWZpbmUgSUhfQ1BVX01JQ1JPQkxBWkUJMTQJLyogTWljcm9CbGF6ZSAgICovCiAjZGVmaW5lIElIX0NQVV9OSU9TMgkJMTUJLyogTmlvcy1JSQkqLworI2RlZmluZSBJSF9DUFVfQkxBQ0tGSU4JCTE2CS8qIEJsYWNrZmluCSovCiAKIC8qCiAgKiBJbWFnZSBUeXBlcwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvY29tcGF0LmggYi9pbmNsdWRlL2xpbnV4L210ZC9jb21wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjBjZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvY29tcGF0LmgKQEAgLTAsMCArMSw0NCBAQAorI2lmbmRlZiBfTElOVVhfQ09NUEFUX0hfCisjZGVmaW5lIF9MSU5VWF9DT01QQVRfSF8KKworI2RlZmluZSBfX3VzZXIKKyNkZWZpbmUgX19pb21lbQorCisjZGVmaW5lIG5kZWxheSh4KQl1ZGVsYXkoMSkKKworI2RlZmluZSBwcmludGsJcHJpbnRmCisKKyNkZWZpbmUgS0VSTl9FTUVSRworI2RlZmluZSBLRVJOX0FMRVJUCisjZGVmaW5lIEtFUk5fQ1JJVAorI2RlZmluZSBLRVJOX0VSUgorI2RlZmluZSBLRVJOX1dBUk5JTkcKKyNkZWZpbmUgS0VSTl9OT1RJQ0UKKyNkZWZpbmUgS0VSTl9JTkZPCisjZGVmaW5lIEtFUk5fREVCVUcKKworI2RlZmluZSBrbWFsbG9jKHNpemUsIGZsYWdzKQltYWxsb2Moc2l6ZSkKKyNkZWZpbmUga2ZyZWUocHRyKQkJZnJlZShwdHIpCisKKy8qCisgKiAuLmFuZCBpZiB5b3UgY2FuJ3QgdGFrZSB0aGUgc3RyaWN0CisgKiB0eXBlcywgeW91IGNhbiBzcGVjaWZ5IG9uZSB5b3Vyc2VsZi4KKyAqCisgKiBPciBub3QgdXNlIG1pbi9tYXggYXQgYWxsLCBvZiBjb3Vyc2UuCisgKi8KKyNkZWZpbmUgbWluX3QodHlwZSx4LHkpIFwKKwkoeyB0eXBlIF9feCA9ICh4KTsgdHlwZSBfX3kgPSAoeSk7IF9feCA8IF9feSA/IF9feDogX195OyB9KQorI2RlZmluZSBtYXhfdCh0eXBlLHgseSkgXAorCSh7IHR5cGUgX194ID0gKHgpOyB0eXBlIF9feSA9ICh5KTsgX194ID4gX195ID8gX194OiBfX3k7IH0pCisKKyNkZWZpbmUgQlVHKCkgZG8geyBcCisJcHJpbnRmKCJVLUJvb3QgQlVHIGF0ICVzOiVkIVxuIiwgX19GSUxFX18sIF9fTElORV9fKTsgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBCVUdfT04oY29uZGl0aW9uKSBkbyB7IGlmIChjb25kaXRpb24pIEJVRygpOyB9IHdoaWxlKDApCisKKyNkZWZpbmUgbGlrZWx5KHgpCV9fYnVpbHRpbl9leHBlY3QoISEoeCksIDEpCisjZGVmaW5lIHVubGlrZWx5KHgpCV9fYnVpbHRpbl9leHBlY3QoISEoeCksIDApCisKKyNkZWZpbmUgUEFHRV9TSVpFCTQwOTYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvbXRkLWFiaS5oIGIvaW5jbHVkZS9saW51eC9tdGQvbXRkLWFiaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMWQ0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L210ZC9tdGQtYWJpLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqICRJZDogbXRkLWFiaS5oLHYgMS43IDIwMDQvMTEvMjMgMTU6Mzc6MzIgZ2xlaXhuZXIgRXhwICQKKyAqCisgKiBQb3J0aW9ucyBvZiBNVEQgQUJJIGRlZmluaXRpb24gd2hpY2ggYXJlIHNoYXJlZCBieSBrZXJuZWwgYW5kIHVzZXIgc3BhY2UKKyAqLworCisjaWZuZGVmIF9fTVREX0FCSV9IX18KKyNkZWZpbmUgX19NVERfQUJJX0hfXworCitzdHJ1Y3QgZXJhc2VfaW5mb191c2VyIHsKKwl1aW50MzJfdCBzdGFydDsKKwl1aW50MzJfdCBsZW5ndGg7Cit9OworCitzdHJ1Y3QgbXRkX29vYl9idWYgeworCXVpbnQzMl90IHN0YXJ0OworCXVpbnQzMl90IGxlbmd0aDsKKwl1bnNpZ25lZCBjaGFyICpwdHI7Cit9OworCisjZGVmaW5lIE1URF9BQlNFTlQJCTAKKyNkZWZpbmUgTVREX1JBTQkJCTEKKyNkZWZpbmUgTVREX1JPTQkJCTIKKyNkZWZpbmUgTVREX05PUkZMQVNICQkzCisjZGVmaW5lIE1URF9OQU5ERkxBU0gJCTQKKyNkZWZpbmUgTVREX1BFUk9NCQk1CisjZGVmaW5lIE1URF9PVEhFUgkJMTQKKyNkZWZpbmUgTVREX1VOS05PV04JCTE1CisKKyNkZWZpbmUgTVREX0NMRUFSX0JJVFMJCTEgICAgICAgLyogQml0cyBjYW4gYmUgY2xlYXJlZCAoZmxhc2gpICovCisjZGVmaW5lIE1URF9TRVRfQklUUwkJMiAgICAgICAvKiBCaXRzIGNhbiBiZSBzZXQgKi8KKyNkZWZpbmUgTVREX0VSQVNFQUJMRQkJNCAgICAgICAvKiBIYXMgYW4gZXJhc2UgZnVuY3Rpb24gKi8KKyNkZWZpbmUgTVREX1dSSVRFQl9XUklURUFCTEUJOCAgICAgICAvKiBEaXJlY3QgSU8gaXMgcG9zc2libGUgKi8KKyNkZWZpbmUgTVREX1ZPTEFUSUxFCQkxNiAgICAgIC8qIFNldCBmb3IgUkFNcyAqLworI2RlZmluZSBNVERfWElQCQkJMzIJLyogZVhlY3V0ZS1Jbi1QbGFjZSBwb3NzaWJsZSAqLworI2RlZmluZSBNVERfT09CCQkJNjQJLyogT3V0LW9mLWJhbmQgZGF0YSAoTkFORCBmbGFzaCkgKi8KKyNkZWZpbmUgTVREX0VDQwkJCTEyOAkvKiBEZXZpY2UgY2FwYWJsZSBvZiBhdXRvbWF0aWMgRUNDICovCisjZGVmaW5lIE1URF9OT19WSVJUQkxPQ0tTCTI1NgkvKiBWaXJ0dWFsIGJsb2NrcyBub3QgYWxsb3dlZCAqLworCisvKiBTb21lIGNvbW1vbiBkZXZpY2VzIC8gY29tYmluYXRpb25zIG9mIGNhcGFiaWxpdGllcyAqLworI2RlZmluZSBNVERfQ0FQX1JPTQkJMAorI2RlZmluZSBNVERfQ0FQX1JBTQkJKE1URF9DTEVBUl9CSVRTfE1URF9TRVRfQklUU3xNVERfV1JJVEVCX1dSSVRFQUJMRSkKKyNkZWZpbmUgTVREX0NBUF9OT1JGTEFTSCAgICAgICAgKE1URF9DTEVBUl9CSVRTfE1URF9FUkFTRUFCTEUpCisjZGVmaW5lIE1URF9DQVBfTkFOREZMQVNIICAgICAgIChNVERfQ0xFQVJfQklUU3xNVERfRVJBU0VBQkxFfE1URF9PT0IpCisjZGVmaW5lIE1URF9XUklURUFCTEUJCShNVERfQ0xFQVJfQklUU3xNVERfU0VUX0JJVFMpCisKKworLyogVHlwZXMgb2YgYXV0b21hdGljIEVDQy9DaGVja3N1bSBhdmFpbGFibGUgKi8KKyNkZWZpbmUgTVREX0VDQ19OT05FCQkwIAkvKiBObyBhdXRvbWF0aWMgRUNDIGF2YWlsYWJsZSAqLworI2RlZmluZSBNVERfRUNDX1JTX0Rpc2tPbkNoaXAJMQkvKiBBdXRvbWF0aWMgRUNDIG9uIERpc2tPbkNoaXAgKi8KKyNkZWZpbmUgTVREX0VDQ19TVwkJMgkvKiBTVyBFQ0MgZm9yIFRvc2hpYmEgJiBTYW1zdW5nIGRldmljZXMgKi8KKworLyogRUNDIGJ5dGUgcGxhY2VtZW50ICovCisjZGVmaW5lIE1URF9OQU5ERUNDX09GRgkJMAkvKiBTd2l0Y2ggb2ZmIEVDQyAoTm90IHJlY29tbWVuZGVkKSAqLworI2RlZmluZSBNVERfTkFOREVDQ19QTEFDRQkxCS8qIFVzZSB0aGUgZ2l2ZW4gcGxhY2VtZW50IGluIHRoZSBzdHJ1Y3R1cmUgKFlBRkZTMSBsZWdhY3kgbW9kZSkgKi8KKyNkZWZpbmUgTVREX05BTkRFQ0NfQVVUT1BMQUNFCTIJLyogVXNlIHRoZSBkZWZhdWx0IHBsYWNlbWVudCBzY2hlbWUgKi8KKyNkZWZpbmUgTVREX05BTkRFQ0NfUExBQ0VPTkxZCTMJLyogVXNlIHRoZSBnaXZlbiBwbGFjZW1lbnQgaW4gdGhlIHN0cnVjdHVyZSAoRG8gbm90IHN0b3JlIGVjYyByZXN1bHQgb24gcmVhZCkgKi8KKyNkZWZpbmUgTVREX05BTkRFQ0NfQVVUT1BMX1VTUiAJNAkvKiBVc2UgdGhlIGdpdmVuIGF1dG9wbGFjZW1lbnQgc2NoZW1lIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBkZWZhdWx0ICovCisKK3N0cnVjdCBtdGRfaW5mb191c2VyIHsKKwl1aW50OF90IHR5cGU7CisJdWludDMyX3QgZmxhZ3M7CisJdWludDMyX3Qgc2l6ZTsJIC8qIFRvdGFsIHNpemUgb2YgdGhlIE1URCAqLworCXVpbnQzMl90IGVyYXNlc2l6ZTsKKwl1aW50MzJfdCBvb2JibG9jazsgIC8qIFNpemUgb2YgT09CIGJsb2NrcyAoZS5nLiA1MTIpICovCisJdWludDMyX3Qgb29ic2l6ZTsgICAvKiBBbW91bnQgb2YgT09CIGRhdGEgcGVyIGJsb2NrIChlLmcuIDE2KSAqLworCXVpbnQzMl90IGVjY3R5cGU7CisJdWludDMyX3QgZWNjc2l6ZTsKK307CisKK3N0cnVjdCByZWdpb25faW5mb191c2VyIHsKKwl1aW50MzJfdCBvZmZzZXQ7CQkvKiBBdCB3aGljaCB0aGlzIHJlZ2lvbiBzdGFydHMsCisJCQkJCSAqIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgTVREICovCisJdWludDMyX3QgZXJhc2VzaXplOwkJLyogRm9yIHRoaXMgcmVnaW9uICovCisJdWludDMyX3QgbnVtYmxvY2tzOwkJLyogTnVtYmVyIG9mIGJsb2NrcyBpbiB0aGlzIHJlZ2lvbiAqLworCXVpbnQzMl90IHJlZ2lvbmluZGV4OworfTsKKworI2RlZmluZSBNRU1HRVRJTkZPICAgICAgICAgICAgICBfSU9SKCdNJywgMSwgc3RydWN0IG10ZF9pbmZvX3VzZXIpCisjZGVmaW5lIE1FTUVSQVNFICAgICAgICAgICAgICAgIF9JT1coJ00nLCAyLCBzdHJ1Y3QgZXJhc2VfaW5mb191c2VyKQorI2RlZmluZSBNRU1XUklURU9PQiAgICAgICAgICAgICBfSU9XUignTScsIDMsIHN0cnVjdCBtdGRfb29iX2J1ZikKKyNkZWZpbmUgTUVNUkVBRE9PQiAgICAgICAgICAgICAgX0lPV1IoJ00nLCA0LCBzdHJ1Y3QgbXRkX29vYl9idWYpCisjZGVmaW5lIE1FTUxPQ0sgICAgICAgICAgICAgICAgIF9JT1coJ00nLCA1LCBzdHJ1Y3QgZXJhc2VfaW5mb191c2VyKQorI2RlZmluZSBNRU1VTkxPQ0sgICAgICAgICAgICAgICBfSU9XKCdNJywgNiwgc3RydWN0IGVyYXNlX2luZm9fdXNlcikKKyNkZWZpbmUgTUVNR0VUUkVHSU9OQ09VTlQJX0lPUignTScsIDcsIGludCkKKyNkZWZpbmUgTUVNR0VUUkVHSU9OSU5GTwlfSU9XUignTScsIDgsIHN0cnVjdCByZWdpb25faW5mb191c2VyKQorI2RlZmluZSBNRU1TRVRPT0JTRUwJCV9JT1coJ00nLCA5LCBzdHJ1Y3QgbmFuZF9vb2JpbmZvKQorI2RlZmluZSBNRU1HRVRPT0JTRUwJCV9JT1IoJ00nLCAxMCwgc3RydWN0IG5hbmRfb29iaW5mbykKKyNkZWZpbmUgTUVNR0VUQkFEQkxPQ0sJCV9JT1coJ00nLCAxMSwgbG9mZl90KQorI2RlZmluZSBNRU1TRVRCQURCTE9DSwkJX0lPVygnTScsIDEyLCBsb2ZmX3QpCisKK3N0cnVjdCBuYW5kX29vYmluZm8geworCXVpbnQzMl90IHVzZWVjYzsKKwl1aW50MzJfdCBlY2NieXRlczsKKwl1aW50MzJfdCBvb2JmcmVlWzhdWzJdOworCXVpbnQzMl90IGVjY3Bvc1szMl07Cit9OworCisjZW5kaWYgLyogX19NVERfQUJJX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvbXRkLmggYi9pbmNsdWRlL2xpbnV4L210ZC9tdGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2U5MDgwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvbXRkLmgKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiAkSWQ6IG10ZC5oLHYgMS41NiAyMDA0LzA4LzA5IDE4OjQ2OjA0IGRtYXJsaW4gRXhwICQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMyBEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+IGV0IGFsLgorICoKKyAqIFJlbGVhc2VkIHVuZGVyIEdQTAorICovCisKKyNpZm5kZWYgX19NVERfTVREX0hfXworI2RlZmluZSBfX01URF9NVERfSF9fCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbXRkLWFiaS5oPgorCisjZGVmaW5lIE1BWF9NVERfREVWSUNFUyAxNgorCisjZGVmaW5lIE1URF9FUkFTRV9QRU5ESU5HICAgICAgCTB4MDEKKyNkZWZpbmUgTVREX0VSQVNJTkcJCTB4MDIKKyNkZWZpbmUgTVREX0VSQVNFX1NVU1BFTkQJMHgwNAorI2RlZmluZSBNVERfRVJBU0VfRE9ORSAgICAgICAgICAweDA4CisjZGVmaW5lIE1URF9FUkFTRV9GQUlMRUQgICAgICAgIDB4MTAKKworLyogSWYgdGhlIGVyYXNlIGZhaWxzLCBmYWlsX2FkZHIgbWlnaHQgaW5kaWNhdGUgZXhhY3RseSB3aGljaCBibG9jayBmYWlsZWQuICBJZgorICAgZmFpbF9hZGRyID0gMHhmZmZmZmZmZiwgdGhlIGZhaWx1cmUgd2FzIG5vdCBhdCB0aGUgZGV2aWNlIGxldmVsIG9yIHdhcyBub3QKKyAgIHNwZWNpZmljIHRvIGFueSBwYXJ0aWN1bGFyIGJsb2NrLiAqLworc3RydWN0IGVyYXNlX2luZm8geworCXN0cnVjdCBtdGRfaW5mbyAqbXRkOworCXVfaW50MzJfdCBhZGRyOworCXVfaW50MzJfdCBsZW47CisJdV9pbnQzMl90IGZhaWxfYWRkcjsKKwl1X2xvbmcgdGltZTsKKwl1X2xvbmcgcmV0cmllczsKKwl1X2ludCBkZXY7CisJdV9pbnQgY2VsbDsKKwl2b2lkICgqY2FsbGJhY2spIChzdHJ1Y3QgZXJhc2VfaW5mbyAqc2VsZik7CisJdV9sb25nIHByaXY7CisJdV9jaGFyIHN0YXRlOworCXN0cnVjdCBlcmFzZV9pbmZvICpuZXh0OworfTsKKworc3RydWN0IG10ZF9lcmFzZV9yZWdpb25faW5mbyB7CisJdV9pbnQzMl90IG9mZnNldDsJCQkvKiBBdCB3aGljaCB0aGlzIHJlZ2lvbiBzdGFydHMsIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgTVREICovCisJdV9pbnQzMl90IGVyYXNlc2l6ZTsJCS8qIEZvciB0aGlzIHJlZ2lvbiAqLworCXVfaW50MzJfdCBudW1ibG9ja3M7CQkvKiBOdW1iZXIgb2YgYmxvY2tzIG9mIGVyYXNlc2l6ZSBpbiB0aGlzIHJlZ2lvbiAqLworfTsKKworc3RydWN0IG10ZF9pbmZvIHsKKwl1X2NoYXIgdHlwZTsKKwl1X2ludDMyX3QgZmxhZ3M7CisJdV9pbnQzMl90IHNpemU7CSAvKiBUb3RhbCBzaXplIG9mIHRoZSBNVEQgKi8KKworCS8qICJNYWpvciIgZXJhc2Ugc2l6ZSBmb3IgdGhlIGRldmljZS4gTmHvdmUgdXNlcnMgbWF5IHRha2UgdGhpcworCSAqIHRvIGJlIHRoZSBvbmx5IGVyYXNlIHNpemUgYXZhaWxhYmxlLCBvciBtYXkgdXNlIHRoZSBtb3JlIGRldGFpbGVkCisJICogaW5mb3JtYXRpb24gYmVsb3cgaWYgdGhleSBkZXNpcmUKKwkgKi8KKwl1X2ludDMyX3QgZXJhc2VzaXplOworCisJdV9pbnQzMl90IG9vYmJsb2NrOyAgLyogU2l6ZSBvZiBPT0IgYmxvY2tzIChlLmcuIDUxMikgKi8KKwl1X2ludDMyX3Qgb29ic2l6ZTsgICAvKiBBbW91bnQgb2YgT09CIGRhdGEgcGVyIGJsb2NrIChlLmcuIDE2KSAqLworCXVfaW50MzJfdCBvb2JhdmFpbDsgIC8qIE51bWJlciBvZiBieXRlcyBpbiBPT0IgYXJlYSBhdmFpbGFibGUgZm9yIGZzICAqLworCXVfaW50MzJfdCBlY2N0eXBlOworCXVfaW50MzJfdCBlY2NzaXplOworCisKKwkvKiBLZXJuZWwtb25seSBzdHVmZiBzdGFydHMgaGVyZS4gKi8KKwljaGFyICpuYW1lOworCWludCBpbmRleDsKKworCS8qIG9vYmluZm8gaXMgYSBuYW5kX29vYmluZm8gc3RydWN0dXJlLCB3aGljaCBjYW4gYmUgc2V0IGJ5IGlvdGNsIChNRU1TRVRPT0JJTkZPKSAqLworCXN0cnVjdCBuYW5kX29vYmluZm8gb29iaW5mbzsKKworCS8qIERhdGEgZm9yIHZhcmlhYmxlIGVyYXNlIHJlZ2lvbnMuIElmIG51bWVyYXNlcmVnaW9ucyBpcyB6ZXJvLAorCSAqIGl0IG1lYW5zIHRoYXQgdGhlIHdob2xlIGRldmljZSBoYXMgZXJhc2VzaXplIGFzIGdpdmVuIGFib3ZlLgorCSAqLworCWludCBudW1lcmFzZXJlZ2lvbnM7CisJc3RydWN0IG10ZF9lcmFzZV9yZWdpb25faW5mbyAqZXJhc2VyZWdpb25zOworCisJLyogVGhpcyByZWFsbHkgc2hvdWxkbid0IGJlIGhlcmUuIEl0IGNhbiBnbyBhd2F5IGluIDIuNSAqLworCXVfaW50MzJfdCBiYW5rX3NpemU7CisKKwlpbnQgKCplcmFzZSkgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgZXJhc2VfaW5mbyAqaW5zdHIpOworCisJLyogVGhpcyBzdHVmZiBmb3IgZVhlY3V0ZS1Jbi1QbGFjZSAqLworCWludCAoKnBvaW50KSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgdV9jaGFyICoqbXRkYnVmKTsKKworCS8qIFdlIHByb2JhYmx5IHNob3VsZG4ndCBhbGxvdyBYSVAgaWYgdGhlIHVucG9pbnQgaXNuJ3QgYSBOVUxMICovCisJdm9pZCAoKnVucG9pbnQpIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyICogYWRkciwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4pOworCisKKwlpbnQgKCpyZWFkKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgdV9jaGFyICpidWYpOworCWludCAoKndyaXRlKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCB0bywgc2l6ZV90IGxlbiwgc2l6ZV90ICpyZXRsZW4sIGNvbnN0IHVfY2hhciAqYnVmKTsKKworCWludCAoKnJlYWRfZWNjKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgdV9jaGFyICpidWYsIHVfY2hhciAqZWNjYnVmLCBzdHJ1Y3QgbmFuZF9vb2JpbmZvICpvb2JzZWwpOworCWludCAoKndyaXRlX2VjYykgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgdG8sIHNpemVfdCBsZW4sIHNpemVfdCAqcmV0bGVuLCBjb25zdCB1X2NoYXIgKmJ1ZiwgdV9jaGFyICplY2NidWYsIHN0cnVjdCBuYW5kX29vYmluZm8gKm9vYnNlbCk7CisKKwlpbnQgKCpyZWFkX29vYikgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgZnJvbSwgc2l6ZV90IGxlbiwgc2l6ZV90ICpyZXRsZW4sIHVfY2hhciAqYnVmKTsKKwlpbnQgKCp3cml0ZV9vb2IpIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IHRvLCBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgY29uc3QgdV9jaGFyICpidWYpOworCisJLyoKKwkgKiBNZXRob2RzIHRvIGFjY2VzcyB0aGUgcHJvdGVjdGlvbiByZWdpc3RlciBhcmVhLCBwcmVzZW50IGluIHNvbWUKKwkgKiBmbGFzaCBkZXZpY2VzLiBUaGUgdXNlciBkYXRhIGlzIG9uZSB0aW1lIHByb2dyYW1tYWJsZSBidXQgdGhlCisJICogZmFjdG9yeSBkYXRhIGlzIHJlYWQgb25seS4KKwkgKi8KKwlpbnQgKCpyZWFkX3VzZXJfcHJvdF9yZWcpIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4sIHNpemVfdCAqcmV0bGVuLCB1X2NoYXIgKmJ1Zik7CisKKwlpbnQgKCpyZWFkX2ZhY3RfcHJvdF9yZWcpIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4sIHNpemVfdCAqcmV0bGVuLCB1X2NoYXIgKmJ1Zik7CisKKwkvKiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgKi8KKwlpbnQgKCp3cml0ZV91c2VyX3Byb3RfcmVnKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgdV9jaGFyICpidWYpOworI2lmIDAKKwkvKiBrdmVjLWJhc2VkIHJlYWQvd3JpdGUgbWV0aG9kcy4gV2UgbmVlZCB0aGVzZSBlc3BlY2lhbGx5IGZvciBOQU5EIGZsYXNoLAorCSAgIHdpdGggaXRzIGxpbWl0ZWQgbnVtYmVyIG9mIHdyaXRlIGN5Y2xlcyBwZXIgZXJhc2UuCisJICAgTkI6IFRoZSAnY291bnQnIHBhcmFtZXRlciBpcyB0aGUgbnVtYmVyIG9mIF92ZWN0b3JzXywgZWFjaCBvZgorCSAgIHdoaWNoIGNvbnRhaW5zIGFuIChvZnMsIGxlbikgdHVwbGUuCisJKi8KKwlpbnQgKCpyZWFkdikgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3Qga3ZlYyAqdmVjcywgdW5zaWduZWQgbG9uZyBjb3VudCwgbG9mZl90IGZyb20sIHNpemVfdCAqcmV0bGVuKTsKKwlpbnQgKCpyZWFkdl9lY2MpIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IGt2ZWMgKnZlY3MsIHVuc2lnbmVkIGxvbmcgY291bnQsIGxvZmZfdCBmcm9tLAorCQlzaXplX3QgKnJldGxlbiwgdV9jaGFyICplY2NidWYsIHN0cnVjdCBuYW5kX29vYmluZm8gKm9vYnNlbCk7CisJaW50ICgqd3JpdGV2KSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHN0cnVjdCBrdmVjICp2ZWNzLCB1bnNpZ25lZCBsb25nIGNvdW50LCBsb2ZmX3QgdG8sIHNpemVfdCAqcmV0bGVuKTsKKwlpbnQgKCp3cml0ZXZfZWNjKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHN0cnVjdCBrdmVjICp2ZWNzLCB1bnNpZ25lZCBsb25nIGNvdW50LCBsb2ZmX3QgdG8sCisJCXNpemVfdCAqcmV0bGVuLCB1X2NoYXIgKmVjY2J1Ziwgc3RydWN0IG5hbmRfb29iaW5mbyAqb29ic2VsKTsKKyNlbmRpZgorCS8qIFN5bmMgKi8KKwl2b2lkICgqc3luYykgKHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKKyNpZiAwCisJLyogQ2hpcC1zdXBwb3J0ZWQgZGV2aWNlIGxvY2tpbmcgKi8KKwlpbnQgKCpsb2NrKSAoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZnMsIHNpemVfdCBsZW4pOworCWludCAoKnVubG9jaykgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3Qgb2ZzLCBzaXplX3QgbGVuKTsKKworCS8qIFBvd2VyIE1hbmFnZW1lbnQgZnVuY3Rpb25zICovCisJaW50ICgqc3VzcGVuZCkgKHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKKwl2b2lkICgqcmVzdW1lKSAoc3RydWN0IG10ZF9pbmZvICptdGQpOworI2VuZGlmCisJLyogQmFkIGJsb2NrIG1hbmFnZW1lbnQgZnVuY3Rpb25zICovCisJaW50ICgqYmxvY2tfaXNiYWQpIChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mcyk7CisJaW50ICgqYmxvY2tfbWFya2JhZCkgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3Qgb2ZzKTsKKworCXZvaWQgKnByaXY7CisKKwlzdHJ1Y3QgbW9kdWxlICpvd25lcjsKKwlpbnQgdXNlY291bnQ7Cit9OworCisKKwkvKiBLZXJuZWwtc2lkZSBpb2N0bCBkZWZpbml0aW9ucyAqLworCitleHRlcm4gaW50IGFkZF9tdGRfZGV2aWNlKHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKK2V4dGVybiBpbnQgZGVsX210ZF9kZXZpY2UgKHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKKworZXh0ZXJuIHN0cnVjdCBtdGRfaW5mbyAqZ2V0X210ZF9kZXZpY2Uoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBudW0pOworCitleHRlcm4gdm9pZCBwdXRfbXRkX2RldmljZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCk7CisKKyNpZiAwCitzdHJ1Y3QgbXRkX25vdGlmaWVyIHsKKwl2b2lkICgqYWRkKShzdHJ1Y3QgbXRkX2luZm8gKm10ZCk7CisJdm9pZCAoKnJlbW92ZSkoc3RydWN0IG10ZF9pbmZvICptdGQpOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKK307CisKKworZXh0ZXJuIHZvaWQgcmVnaXN0ZXJfbXRkX3VzZXIgKHN0cnVjdCBtdGRfbm90aWZpZXIgKm5ldyk7CitleHRlcm4gaW50IHVucmVnaXN0ZXJfbXRkX3VzZXIgKHN0cnVjdCBtdGRfbm90aWZpZXIgKm9sZCk7CisKK2ludCBkZWZhdWx0X210ZF93cml0ZXYoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHN0cnVjdCBrdmVjICp2ZWNzLAorCQkgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwgbG9mZl90IHRvLCBzaXplX3QgKnJldGxlbik7CisKK2ludCBkZWZhdWx0X210ZF9yZWFkdihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IGt2ZWMgKnZlY3MsCisJCSAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIGxvZmZfdCBmcm9tLCBzaXplX3QgKnJldGxlbik7CisjZW5kaWYKKworI2RlZmluZSBNVERfRVJBU0UobXRkLCBhcmdzLi4uKSAoKihtdGQtPmVyYXNlKSkobXRkLCBhcmdzKQorI2RlZmluZSBNVERfUE9JTlQobXRkLCBhLGIsYyxkKSAoKihtdGQtPnBvaW50KSkobXRkLCBhLGIsYywgKHVfY2hhciAqKikoZCkpCisjZGVmaW5lIE1URF9VTlBPSU5UKG10ZCwgYXJnKSAoKihtdGQtPnVucG9pbnQpKShtdGQsICh1X2NoYXIgKilhcmcpCisjZGVmaW5lIE1URF9SRUFEKG10ZCwgYXJncy4uLikgKCoobXRkLT5yZWFkKSkobXRkLCBhcmdzKQorI2RlZmluZSBNVERfV1JJVEUobXRkLCBhcmdzLi4uKSAoKihtdGQtPndyaXRlKSkobXRkLCBhcmdzKQorI2RlZmluZSBNVERfUkVBRFYobXRkLCBhcmdzLi4uKSAoKihtdGQtPnJlYWR2KSkobXRkLCBhcmdzKQorI2RlZmluZSBNVERfV1JJVEVWKG10ZCwgYXJncy4uLikgKCoobXRkLT53cml0ZXYpKShtdGQsIGFyZ3MpCisjZGVmaW5lIE1URF9SRUFERUNDKG10ZCwgYXJncy4uLikgKCoobXRkLT5yZWFkX2VjYykpKG10ZCwgYXJncykKKyNkZWZpbmUgTVREX1dSSVRFRUNDKG10ZCwgYXJncy4uLikgKCoobXRkLT53cml0ZV9lY2MpKShtdGQsIGFyZ3MpCisjZGVmaW5lIE1URF9SRUFET09CKG10ZCwgYXJncy4uLikgKCoobXRkLT5yZWFkX29vYikpKG10ZCwgYXJncykKKyNkZWZpbmUgTVREX1dSSVRFT09CKG10ZCwgYXJncy4uLikgKCoobXRkLT53cml0ZV9vb2IpKShtdGQsIGFyZ3MpCisjZGVmaW5lIE1URF9TWU5DKG10ZCkgZG8geyBpZiAobXRkLT5zeW5jKSAoKihtdGQtPnN5bmMpKShtdGQpOyAgfSB3aGlsZSAoMCkKKworCisjaWZkZWYgQ09ORklHX01URF9QQVJUSVRJT05TCit2b2lkIG10ZF9lcmFzZV9jYWxsYmFjayhzdHJ1Y3QgZXJhc2VfaW5mbyAqaW5zdHIpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBtdGRfZXJhc2VfY2FsbGJhY2soc3RydWN0IGVyYXNlX2luZm8gKmluc3RyKQoreworCWlmIChpbnN0ci0+Y2FsbGJhY2spCisJCWluc3RyLT5jYWxsYmFjayhpbnN0cik7Cit9CisjZW5kaWYKKworLyoKKyAqIERlYnVnZ2luZyBtYWNybyBhbmQgZGVmaW5lcworICovCisjZGVmaW5lIE1URF9ERUJVR19MRVZFTDAJKDApCS8qIFF1aWV0ICAgKi8KKyNkZWZpbmUgTVREX0RFQlVHX0xFVkVMMQkoMSkJLyogQXVkaWJsZSAqLworI2RlZmluZSBNVERfREVCVUdfTEVWRUwyCSgyKQkvKiBMb3VkICAgICovCisjZGVmaW5lIE1URF9ERUJVR19MRVZFTDMJKDMpCS8qIE5vaXN5ICAgKi8KKworI2lmZGVmIENPTkZJR19NVERfREVCVUcKKyNkZWZpbmUgREVCVUcobiwgYXJncy4uLikJCQkJXAorIAlkbyB7CQkJCQkJXAorCQlpZiAobiA8PSBDT05GSUdfTVREX0RFQlVHX1ZFUkJPU0UpCVwKKwkJCXByaW50ayhLRVJOX0lORk8gYXJncyk7CQlcCisJfSB3aGlsZSgwKQorI2Vsc2UgLyogQ09ORklHX01URF9ERUJVRyAqLworI2RlZmluZSBERUJVRyhuLCBhcmdzLi4uKSBkbyB7IH0gd2hpbGUoMCkKKworI2VuZGlmIC8qIENPTkZJR19NVERfREVCVUcgKi8KKworI2VuZGlmIC8qIF9fTVREX01URF9IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL25hbmQuaCBiL2luY2x1ZGUvbGludXgvbXRkL25hbmQuaAppbmRleCA1MjM2OTA0Li5hNTIyNzE4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvbmFuZC5oCkBAIC0yLDEwICsyLDEwIEBACiAgKiAgbGludXgvaW5jbHVkZS9saW51eC9tdGQvbmFuZC5oCiAgKgogICogIENvcHlyaWdodCAoYykgMjAwMCBEYXZpZCBXb29kaG91c2UgPGR3bXcyQG12aGkuY29tPgotICogICAgICAgICAgICAgICAgICAgICBTdGV2ZW4gSi4gSGlsbCA8c2poaWxsQGNvdHcuY29tPgotICoJCSAgICAgICBUaG9tYXMgR2xlaXhuZXIgPGdsZWl4bmVyQGF1dHJvbml4LmRlPgorICogICAgICAgICAgICAgICAgICAgICBTdGV2ZW4gSi4gSGlsbCA8c2poaWxsQHJlYWxpdHlkaWx1dGVkLmNvbT4KKyAqCQkgICAgICAgVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CiAgKgotICogJElkOiBuYW5kLmgsdiAxLjcgMjAwMy8wNy8yNCAyMzozMDo0NiBhMDM4NDg2NCBFeHAgJAorICogJElkOiBuYW5kLmgsdiAxLjY4IDIwMDQvMTEvMTIgMTA6NDA6MzcgZ2xlaXhuZXIgRXhwICQKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKQEAgLTMyLDEwICszMiw2NSBAQAogICoJCQljb21tYW5kIGRlbGF5IHRpbWVzIGZvciBkaWZmZXJlbnQgY2hpcHMKICAqICAgMDQtMjgtMjAwMiBURwlPT0IgY29uZmlnIGRlZmluZXMgbW92ZWQgZnJvbSBuYW5kLmMgdG8gYXZvaWQgZHVwbGljYXRlCiAgKgkJCWRlZmluZXMgaW4gamZmczIvd2J1Zi5jCisgKiAgIDA4LTA3LTIwMDIgVEcJZm9yY2VkIGJhZCBibG9jayBsb2NhdGlvbiB0byBieXRlIDUgb2YgT09CLCBldmVuIGlmCisgKgkJCUNPTkZJR19NVERfTkFORF9FQ0NfSkZGUzIgaXMgbm90IHNldAorICogICAwOC0xMC0yMDAyIFRHCWV4dGVuc2lvbnMgdG8gbmFuZF9jaGlwIHN0cnVjdHVyZSB0byBzdXBwb3J0IEhXLUVDQworICoKKyAqICAgMDgtMjktMjAwMiB0Z2x4IAluYW5kX2NoaXAgc3RydWN0dXJlOiBkYXRhX3BvaSBmb3Igc2VsZWN0aW5nCisgKgkJCWludGVybmFsIC8gZnMtZHJpdmVyIGJ1ZmZlcgorICoJCQlzdXBwb3J0IGZvciA2Ynl0ZS81MTJieXRlIGhhcmR3YXJlIEVDQworICoJCQlyZWFkX2VjYywgd3JpdGVfZWNjIGV4dGVuZGVkIGZvciBkaWZmZXJlbnQgb29iLWxheW91dAorICoJCQlvb2IgbGF5b3V0IHNlbGVjdGlvbnM6IE5BTkRfTk9ORV9PT0IsIE5BTkRfSkZGUzJfT09CLAorICoJCQlOQU5EX1lBRkZTX09PQgorICogIDExLTI1LTIwMDIgdGdseAlBZGRlZCBNYW51ZmFjdHVyZXIgY29kZSBGVUpJVFNVLCBOQVRJT05BTAorICoJCQlTcGxpdCBtYW51ZmFjdHVyZXIgYW5kIGRldmljZSBJRCBzdHJ1Y3R1cmVzCisgKgorICogIDAyLTA4LTIwMDQgdGdseCAJYWRkZWQgb3B0aW9uIGZpZWxkIHRvIG5hbmQgc3RydWN0dXJlIGZvciBjaGlwIGFub21hbGl0aWVzCisgKiAgMDUtMjUtMjAwNCB0Z2x4IAlhZGRlZCBiYWQgYmxvY2sgdGFibGUgc3VwcG9ydCwgU1QtTUlDUk8gbWFudWZhY3R1cmVyIGlkCisgKgkJCXVwZGF0ZSBvZiBuYW5kX2NoaXAgc3RydWN0dXJlIGRlc2NyaXB0aW9uCiAgKi8KICNpZm5kZWYgX19MSU5VWF9NVERfTkFORF9ICiAjZGVmaW5lIF9fTElOVVhfTVREX05BTkRfSAogCisjaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KKworc3RydWN0IG10ZF9pbmZvOworLyogU2NhbiBhbmQgaWRlbnRpZnkgYSBOQU5EIGRldmljZSAqLworZXh0ZXJuIGludCBuYW5kX3NjYW4gKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgbWF4X2NoaXBzKTsKKy8qIEZyZWUgcmVzb3VyY2VzIGhlbGQgYnkgdGhlIE5BTkQgZGV2aWNlICovCitleHRlcm4gdm9pZCBuYW5kX3JlbGVhc2UgKHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKKworLyogUmVhZCByYXcgZGF0YSBmcm9tIHRoZSBkZXZpY2Ugd2l0aG91dCBFQ0MgKi8KK2V4dGVybiBpbnQgbmFuZF9yZWFkX3JhdyAoc3RydWN0IG10ZF9pbmZvICptdGQsIHVpbnQ4X3QgKmJ1ZiwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4sIHNpemVfdCBvb2JsZW4pOworCisKKy8qIFRoaXMgY29uc3RhbnQgZGVjbGFyZXMgdGhlIG1heC4gb29ic2l6ZSAvIHBhZ2UsIHdoaWNoCisgKiBpcyBzdXBwb3J0ZWQgbm93LiBJZiB5b3UgYWRkIGEgY2hpcCB3aXRoIGJpZ2dlciBvb2JzaXplL3BhZ2UKKyAqIGFkanVzdCB0aGlzIGFjY29yZGluZ2x5LgorICovCisjZGVmaW5lIE5BTkRfTUFYX09PQlNJWkUJNjQKKworLyoKKyAqIENvbnN0YW50cyBmb3IgaGFyZHdhcmUgc3BlY2lmaWMgQ0xFL0FMRS9OQ0UgZnVuY3Rpb24KKyovCisvKiBTZWxlY3QgdGhlIGNoaXAgYnkgc2V0dGluZyBuQ0UgdG8gbG93ICovCisjZGVmaW5lIE5BTkRfQ1RMX1NFVE5DRSAJMQorLyogRGVzZWxlY3QgdGhlIGNoaXAgYnkgc2V0dGluZyBuQ0UgdG8gaGlnaCAqLworI2RlZmluZSBOQU5EX0NUTF9DTFJOQ0UJCTIKKy8qIFNlbGVjdCB0aGUgY29tbWFuZCBsYXRjaCBieSBzZXR0aW5nIENMRSB0byBoaWdoICovCisjZGVmaW5lIE5BTkRfQ1RMX1NFVENMRQkJMworLyogRGVzZWxlY3QgdGhlIGNvbW1hbmQgbGF0Y2ggYnkgc2V0dGluZyBDTEUgdG8gbG93ICovCisjZGVmaW5lIE5BTkRfQ1RMX0NMUkNMRQkJNAorLyogU2VsZWN0IHRoZSBhZGRyZXNzIGxhdGNoIGJ5IHNldHRpbmcgQUxFIHRvIGhpZ2ggKi8KKyNkZWZpbmUgTkFORF9DVExfU0VUQUxFCQk1CisvKiBEZXNlbGVjdCB0aGUgYWRkcmVzcyBsYXRjaCBieSBzZXR0aW5nIEFMRSB0byBsb3cgKi8KKyNkZWZpbmUgTkFORF9DVExfQ0xSQUxFCQk2CisvKiBTZXQgd3JpdGUgcHJvdGVjdGlvbiBieSBzZXR0aW5nIFdQIHRvIGhpZ2guIE5vdCB1c2VkISAqLworI2RlZmluZSBOQU5EX0NUTF9TRVRXUAkJNworLyogQ2xlYXIgd3JpdGUgcHJvdGVjdGlvbiBieSBzZXR0aW5nIFdQIHRvIGxvdy4gTm90IHVzZWQhICovCisjZGVmaW5lIE5BTkRfQ1RMX0NMUldQCQk4CisKIC8qCiAgKiBTdGFuZGFyZCBOQU5EIGZsYXNoIGNvbW1hbmRzCiAgKi8KQEAgLTQ1LDEyICsxMDAsMTA0IEBACiAjZGVmaW5lIE5BTkRfQ01EX1JFQURPT0IJMHg1MAogI2RlZmluZSBOQU5EX0NNRF9FUkFTRTEJCTB4NjAKICNkZWZpbmUgTkFORF9DTURfU1RBVFVTCQkweDcwCisjZGVmaW5lIE5BTkRfQ01EX1NUQVRVU19NVUxUSQkweDcxCiAjZGVmaW5lIE5BTkRfQ01EX1NFUUlOCQkweDgwCiAjZGVmaW5lIE5BTkRfQ01EX1JFQURJRAkJMHg5MAogI2RlZmluZSBOQU5EX0NNRF9FUkFTRTIJCTB4ZDAKICNkZWZpbmUgTkFORF9DTURfUkVTRVQJCTB4ZmYKIAorLyogRXh0ZW5kZWQgY29tbWFuZHMgZm9yIGxhcmdlIHBhZ2UgZGV2aWNlcyAqLworI2RlZmluZSBOQU5EX0NNRF9SRUFEU1RBUlQJMHgzMAorI2RlZmluZSBOQU5EX0NNRF9DQUNIRURQUk9HCTB4MTUKKworLyogU3RhdHVzIGJpdHMgKi8KKyNkZWZpbmUgTkFORF9TVEFUVVNfRkFJTAkweDAxCisjZGVmaW5lIE5BTkRfU1RBVFVTX0ZBSUxfTjEJMHgwMgorI2RlZmluZSBOQU5EX1NUQVRVU19UUlVFX1JFQURZCTB4MjAKKyNkZWZpbmUgTkFORF9TVEFUVVNfUkVBRFkJMHg0MAorI2RlZmluZSBOQU5EX1NUQVRVU19XUAkJMHg4MAorCiAvKgorICogQ29uc3RhbnRzIGZvciBFQ0NfTU9ERVMKKyAqLworCisvKiBObyBFQ0MuIFVzYWdlIGlzIG5vdCByZWNvbW1lbmRlZCAhICovCisjZGVmaW5lIE5BTkRfRUNDX05PTkUJCTAKKy8qIFNvZnR3YXJlIEVDQyAzIGJ5dGUgRUNDIHBlciAyNTYgQnl0ZSBkYXRhICovCisjZGVmaW5lIE5BTkRfRUNDX1NPRlQJCTEKKy8qIEhhcmR3YXJlIEVDQyAzIGJ5dGUgRUNDIHBlciAyNTYgQnl0ZSBkYXRhICovCisjZGVmaW5lIE5BTkRfRUNDX0hXM18yNTYJMgorLyogSGFyZHdhcmUgRUNDIDMgYnl0ZSBFQ0MgcGVyIDUxMiBCeXRlIGRhdGEgKi8KKyNkZWZpbmUgTkFORF9FQ0NfSFczXzUxMgkzCisvKiBIYXJkd2FyZSBFQ0MgMyBieXRlIEVDQyBwZXIgNTEyIEJ5dGUgZGF0YSAqLworI2RlZmluZSBOQU5EX0VDQ19IVzZfNTEyCTQKKy8qIEhhcmR3YXJlIEVDQyA4IGJ5dGUgRUNDIHBlciA1MTIgQnl0ZSBkYXRhICovCisjZGVmaW5lIE5BTkRfRUNDX0hXOF81MTIJNgorLyogSGFyZHdhcmUgRUNDIDEyIGJ5dGUgRUNDIHBlciAyMDQ4IEJ5dGUgZGF0YSAqLworI2RlZmluZSBOQU5EX0VDQ19IVzEyXzIwNDgJNworCisvKgorICogQ29uc3RhbnRzIGZvciBIYXJkd2FyZSBFQ0MKKyovCisvKiBSZXNldCBIYXJkd2FyZSBFQ0MgZm9yIHJlYWQgKi8KKyNkZWZpbmUgTkFORF9FQ0NfUkVBRAkJMAorLyogUmVzZXQgSGFyZHdhcmUgRUNDIGZvciB3cml0ZSAqLworI2RlZmluZSBOQU5EX0VDQ19XUklURQkJMQorLyogRW5hYmxlIEhhcmR3YXJlIEVDQyBiZWZvcmUgc3luZHJvbSBpcyByZWFkIGJhY2sgZnJvbSBmbGFzaCAqLworI2RlZmluZSBOQU5EX0VDQ19SRUFEU1lOCTIKKworLyogT3B0aW9uIGNvbnN0YW50cyBmb3IgYml6YXJyZSBkaXNmdW5jdGlvbmFsaXR5IGFuZCByZWFsCisqICBmZWF0dXJlcworKi8KKy8qIENoaXAgY2FuIG5vdCBhdXRvIGluY3JlbWVudCBwYWdlcyAqLworI2RlZmluZSBOQU5EX05PX0FVVE9JTkNSCTB4MDAwMDAwMDEKKy8qIEJ1c3dpdGRoIGlzIDE2IGJpdCAqLworI2RlZmluZSBOQU5EX0JVU1dJRFRIXzE2CTB4MDAwMDAwMDIKKy8qIERldmljZSBzdXBwb3J0cyBwYXJ0aWFsIHByb2dyYW1taW5nIHdpdGhvdXQgcGFkZGluZyAqLworI2RlZmluZSBOQU5EX05PX1BBRERJTkcJCTB4MDAwMDAwMDQKKy8qIENoaXAgaGFzIGNhY2hlIHByb2dyYW0gZnVuY3Rpb24gKi8KKyNkZWZpbmUgTkFORF9DQUNIRVBSRwkJMHgwMDAwMDAwOAorLyogQ2hpcCBoYXMgY29weSBiYWNrIGZ1bmN0aW9uICovCisjZGVmaW5lIE5BTkRfQ09QWUJBQ0sJCTB4MDAwMDAwMTAKKy8qIEFORCBDaGlwIHdoaWNoIGhhcyA0IGJhbmtzIGFuZCBhIGNvbmZ1c2luZyBwYWdlIC8gYmxvY2sKKyAqIGFzc2lnbm1lbnQuIFNlZSBSZW5lc2FzIGRhdGFzaGVldCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiAqLworI2RlZmluZSBOQU5EX0lTX0FORAkJMHgwMDAwMDAyMAorLyogQ2hpcCBoYXMgYSBhcnJheSBvZiA0IHBhZ2VzIHdoaWNoIGNhbiBiZSByZWFkIHdpdGhvdXQKKyAqIGFkZGl0aW9uYWwgcmVhZHkgL2J1c3kgd2FpdHMgKi8KKyNkZWZpbmUgTkFORF80UEFHRV9BUlJBWQkweDAwMDAwMDQwCisKKy8qIE9wdGlvbnMgdmFsaWQgZm9yIFNhbXN1bmcgbGFyZ2UgcGFnZSBkZXZpY2VzICovCisjZGVmaW5lIE5BTkRfU0FNU1VOR19MUF9PUFRJT05TIFwKKwkoTkFORF9OT19QQURESU5HIHwgTkFORF9DQUNIRVBSRyB8IE5BTkRfQ09QWUJBQ0spCisKKy8qIE1hY3JvcyB0byBpZGVudGlmeSB0aGUgYWJvdmUgKi8KKyNkZWZpbmUgTkFORF9DQU5BVVRPSU5DUihjaGlwKSAoIShjaGlwLT5vcHRpb25zICYgTkFORF9OT19BVVRPSU5DUikpCisjZGVmaW5lIE5BTkRfTVVTVF9QQUQoY2hpcCkgKCEoY2hpcC0+b3B0aW9ucyAmIE5BTkRfTk9fUEFERElORykpCisjZGVmaW5lIE5BTkRfSEFTX0NBQ0hFUFJPRyhjaGlwKSAoKGNoaXAtPm9wdGlvbnMgJiBOQU5EX0NBQ0hFUFJHKSkKKyNkZWZpbmUgTkFORF9IQVNfQ09QWUJBQ0soY2hpcCkgKChjaGlwLT5vcHRpb25zICYgTkFORF9DT1BZQkFDSykpCisKKy8qIE1hc2sgdG8gemVybyBvdXQgdGhlIGNoaXAgb3B0aW9ucywgd2hpY2ggY29tZSBmcm9tIHRoZSBpZCB0YWJsZSAqLworI2RlZmluZSBOQU5EX0NISVBPUFRJT05TX01TSwkoMHgwMDAwZmZmZiAmIH5OQU5EX05PX0FVVE9JTkNSKQorCisvKiBOb24gY2hpcCByZWxhdGVkIG9wdGlvbnMgKi8KKy8qIFVzZSBhIGZsYXNoIGJhc2VkIGJhZCBibG9jayB0YWJsZS4gVGhpcyBvcHRpb24gaXMgcGFzc2VkIHRvIHRoZQorICogZGVmYXVsdCBiYWQgYmxvY2sgdGFibGUgZnVuY3Rpb24uICovCisjZGVmaW5lIE5BTkRfVVNFX0ZMQVNIX0JCVAkweDAwMDEwMDAwCisvKiBUaGUgaHcgZWNjIGdlbmVyYXRvciBwcm92aWRlcyBhIHN5bmRyb21lIGluc3RlYWQgYSBlY2MgdmFsdWUgb24gcmVhZAorICogVGhpcyBjYW4gb25seSB3b3JrIGlmIHdlIGhhdmUgdGhlIGVjYyBieXRlcyBkaXJlY3RseSBiZWhpbmQgdGhlCisgKiBkYXRhIGJ5dGVzLiBBcHBsaWVzIGZvciBET0MgYW5kIEFHLUFORCBSZW5lc2FzIEhXIFJlZWQgU29sb21vbiBnZW5lcmF0b3JzICovCisjZGVmaW5lIE5BTkRfSFdFQ0NfU1lORFJPTUUJMHgwMDAyMDAwMAorCisKKy8qIE9wdGlvbnMgc2V0IGJ5IG5hbmQgc2NhbiAqLworLyogTmFuZCBzY2FuIGhhcyBhbGxvY2F0ZWQgb29iX2J1ZiAqLworI2RlZmluZSBOQU5EX09PQkJVRl9BTExPQwkweDQwMDAwMDAwCisvKiBOYW5kIHNjYW4gaGFzIGFsbG9jYXRlZCBkYXRhX2J1ZiAqLworI2RlZmluZSBOQU5EX0RBVEFCVUZfQUxMT0MJMHg4MDAwMDAwMAorCisKKy8qCisgKiBuYW5kX3N0YXRlX3QgLSBjaGlwIHN0YXRlcwogICogRW51bWVyYXRpb24gZm9yIE5BTkQgZmxhc2ggY2hpcCBzdGF0ZQogICovCiB0eXBlZGVmIGVudW0gewpAQCAtNTgsNzEgKzIwNSwxMzggQEAKIAlGTF9SRUFESU5HLAogCUZMX1dSSVRJTkcsCiAJRkxfRVJBU0lORywKLQlGTF9TWU5DSU5HCisJRkxfU1lOQ0lORywKKwlGTF9DQUNIRURQUkcsCiB9IG5hbmRfc3RhdGVfdDsKIAorLyogS2VlcCBnY2MgaGFwcHkgKi8KK3N0cnVjdCBuYW5kX2NoaXA7CiAKLS8qCi0gKiBOQU5EIFByaXZhdGUgRmxhc2ggQ2hpcCBEYXRhCi0gKgotICogU3RydWN0dXJlIG92ZXJ2aWV3OgotICoKLSAqICBJT19BRERSIC0gYWRkcmVzcyB0byBhY2Nlc3MgdGhlIDggSS9PIGxpbmVzIG9mIHRoZSBmbGFzaCBkZXZpY2UKLSAqCi0gKiAgaHdjb250cm9sIC0gaGFyZHdhcmVzcGVjaWZpYyBmdW5jdGlvbiBmb3IgYWNjZXNpbmcgY29udHJvbC1saW5lcwotICoKLSAqICBkZXZfcmVhZHkgLSBoYXJkd2FyZXNwZWNpZmljIGZ1bmN0aW9uIGZvciBhY2Nlc2luZyBkZXZpY2UgcmVhZHkvYnVzeSBsaW5lCi0gKgotICogIGNoaXBfbG9jayAtIHNwaW5sb2NrIHVzZWQgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhpcyBzdHJ1Y3R1cmUKLSAqCi0gKiAgd3EgLSB3YWl0IHF1ZXVlIHRvIHNsZWVwIG9uIGlmIGEgTkFORCBvcGVyYXRpb24gaXMgaW4gcHJvZ3Jlc3MKLSAqCi0gKiAgc3RhdGUgLSBnaXZlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBOQU5EIGRldmljZQotICoKLSAqICBwYWdlX3NoaWZ0IC0gbnVtYmVyIG9mIGFkZHJlc3MgYml0cyBpbiBhIHBhZ2UgKGNvbHVtbiBhZGRyZXNzIGJpdHMpCi0gKgotICogIGRhdGFfYnVmIC0gZGF0YSBidWZmZXIgcGFzc2VkIHRvL2Zyb20gTVREIHVzZXIgbW9kdWxlcwotICoKLSAqICBkYXRhX2NhY2hlIC0gZGF0YSBjYWNoZSBmb3IgcmVkdW5kYW50IHBhZ2UgYWNjZXNzIGFuZCBzaGFkb3cgZm9yCi0gKgkJIEVDQyBmYWlsdXJlCi0gKgotICogIGVjY19jb2RlX2J1ZiAtIHVzZWQgb25seSBmb3IgaG9sZGluZyBjYWxjdWxhdGVkIG9yIHJlYWQgRUNDcyBmb3IKLSAqICAgICAgICAgICAgICAgICBhIHBhZ2UgcmVhZCBvciB3cml0dGVuIHdoZW4gRUNDIGlzIGluIHVzZQotICoKLSAqICByZXNlcnZlZCAtIHBhZGRpbmcgdG8gbWFrZSBzdHJ1Y3R1cmUgZmFsbCBvbiB3b3JkIGJvdW5kYXJ5IGlmCi0gKiAgICAgICAgICAgICB3aGVuIEVDQyBpcyBpbiB1c2UKKyNpZiAwCisvKioKKyAqIHN0cnVjdCBuYW5kX2h3X2NvbnRyb2wgLSBDb250cm9sIHN0cnVjdHVyZSBmb3IgaGFyZHdhcmUgY29udHJvbGxlciAoZS5nIEVDQyBnZW5lcmF0b3IpIHNoYXJlZCBhbW9uZyBpbmRlcGVuZGVuZCBkZXZpY2VzCisgKiBAbG9jazogICAgICAgICAgICAgICBwcm90ZWN0aW9uIGxvY2sKKyAqIEBhY3RpdmU6CQl0aGUgbXRkIGRldmljZSB3aGljaCBob2xkcyB0aGUgY29udHJvbGxlciBjdXJyZW50bHkKICAqLwotc3RydWN0IE5hbmQgewotCWNoYXIgZmxvb3IsIGNoaXA7Ci0JdW5zaWduZWQgbG9uZyBjdXJhZHI7Ci0JdW5zaWduZWQgY2hhciBjdXJtb2RlOwotCS8qIEFsc28gc29tZSBlcmFzZS93cml0ZS9waXBlbGluZSBpbmZvIHdoZW4gd2UgZ2V0IHRoYXQgZmFyICovCitzdHJ1Y3QgbmFuZF9od19jb250cm9sIHsKKwlzcGlubG9ja190CSBsb2NrOworCXN0cnVjdCBuYW5kX2NoaXAgKmFjdGl2ZTsKIH07CisjZW5kaWYKKworLyoqCisgKiBzdHJ1Y3QgbmFuZF9jaGlwIC0gTkFORCBQcml2YXRlIEZsYXNoIENoaXAgRGF0YQorICogQElPX0FERFJfUjoJCVtCT0FSRFNQRUNJRklDXSBhZGRyZXNzIHRvIHJlYWQgdGhlIDggSS9PIGxpbmVzIG9mIHRoZSBmbGFzaCBkZXZpY2UKKyAqIEBJT19BRERSX1c6CQlbQk9BUkRTUEVDSUZJQ10gYWRkcmVzcyB0byB3cml0ZSB0aGUgOCBJL08gbGluZXMgb2YgdGhlIGZsYXNoIGRldmljZQorICogQHJlYWRfYnl0ZToJCVtSRVBMQUNFQUJMRV0gcmVhZCBvbmUgYnl0ZSBmcm9tIHRoZSBjaGlwCisgKiBAd3JpdGVfYnl0ZToJCVtSRVBMQUNFQUJMRV0gd3JpdGUgb25lIGJ5dGUgdG8gdGhlIGNoaXAKKyAqIEByZWFkX3dvcmQ6CQlbUkVQTEFDRUFCTEVdIHJlYWQgb25lIHdvcmQgZnJvbSB0aGUgY2hpcAorICogQHdyaXRlX3dvcmQ6CQlbUkVQTEFDRUFCTEVdIHdyaXRlIG9uZSB3b3JkIHRvIHRoZSBjaGlwCisgKiBAd3JpdGVfYnVmOgkJW1JFUExBQ0VBQkxFXSB3cml0ZSBkYXRhIGZyb20gdGhlIGJ1ZmZlciB0byB0aGUgY2hpcAorICogQHJlYWRfYnVmOgkJW1JFUExBQ0VBQkxFXSByZWFkIGRhdGEgZnJvbSB0aGUgY2hpcCBpbnRvIHRoZSBidWZmZXIKKyAqIEB2ZXJpZnlfYnVmOgkJW1JFUExBQ0VBQkxFXSB2ZXJpZnkgYnVmZmVyIGNvbnRlbnRzIGFnYWluc3QgdGhlIGNoaXAgZGF0YQorICogQHNlbGVjdF9jaGlwOglbUkVQTEFDRUFCTEVdIHNlbGVjdCBjaGlwIG5yCisgKiBAYmxvY2tfYmFkOgkJW1JFUExBQ0VBQkxFXSBjaGVjaywgaWYgdGhlIGJsb2NrIGlzIGJhZAorICogQGJsb2NrX21hcmtiYWQ6CVtSRVBMQUNFQUJMRV0gbWFyayB0aGUgYmxvY2sgYmFkCisgKiBAaHdjb250cm9sOgkJW0JPQVJEU1BFQ0lGSUNdIGhhcmR3YXJlc3BlY2lmaWMgZnVuY3Rpb24gZm9yIGFjY2VzaW5nIGNvbnRyb2wtbGluZXMKKyAqIEBkZXZfcmVhZHk6CQlbQk9BUkRTUEVDSUZJQ10gaGFyZHdhcmVzcGVjaWZpYyBmdW5jdGlvbiBmb3IgYWNjZXNpbmcgZGV2aWNlIHJlYWR5L2J1c3kgbGluZQorICoJCQlJZiBzZXQgdG8gTlVMTCBubyBhY2Nlc3MgdG8gcmVhZHkvYnVzeSBpcyBhdmFpbGFibGUgYW5kIHRoZSByZWFkeS9idXN5IGluZm9ybWF0aW9uCisgKgkJCWlzIHJlYWQgZnJvbSB0aGUgY2hpcCBzdGF0dXMgcmVnaXN0ZXIKKyAqIEBjbWRmdW5jOgkJW1JFUExBQ0VBQkxFXSBoYXJkd2FyZXNwZWNpZmljIGZ1bmN0aW9uIGZvciB3cml0aW5nIGNvbW1hbmRzIHRvIHRoZSBjaGlwCisgKiBAd2FpdGZ1bmM6CQlbUkVQTEFDRUFCTEVdIGhhcmR3YXJlc3BlY2lmaWMgZnVuY3Rpb24gZm9yIHdhaXQgb24gcmVhZHkKKyAqIEBjYWxjdWxhdGVfZWNjOiAJW1JFUExBQ0VBQkxFXSBmdW5jdGlvbiBmb3IgZWNjIGNhbGN1bGF0aW9uIG9yIHJlYWRiYWNrIGZyb20gZWNjIGhhcmR3YXJlCisgKiBAY29ycmVjdF9kYXRhOglbUkVQTEFDRUFCTEVdIGZ1bmN0aW9uIGZvciBlY2MgY29ycmVjdGlvbiwgbWF0Y2hpbmcgdG8gZWNjIGdlbmVyYXRvciAoc3cvaHcpCisgKiBAZW5hYmxlX2h3ZWNjOglbQk9BUkRTUEVDSUZJQ10gZnVuY3Rpb24gdG8gZW5hYmxlIChyZXNldCkgaGFyZHdhcmUgZWNjIGdlbmVyYXRvci4gTXVzdCBvbmx5CisgKgkJCWJlIHByb3ZpZGVkIGlmIGEgaGFyZHdhcmUgRUNDIGlzIGF2YWlsYWJsZQorICogQGVyYXNlX2NtZDoJCVtJTlRFUk5dIGVyYXNlIGNvbW1hbmQgd3JpdGUgZnVuY3Rpb24sIHNlbGVjdGFibGUgZHVlIHRvIEFORCBzdXBwb3J0CisgKiBAc2Nhbl9iYnQ6CQlbUkVQTEFDRUFCTEVdIGZ1bmN0aW9uIHRvIHNjYW4gYmFkIGJsb2NrIHRhYmxlCisgKiBAZWNjbW9kZToJCVtCT0FSRFNQRUNJRklDXSBtb2RlIG9mIGVjYywgc2VlIGRlZmluZXMKKyAqIEBlY2NzaXplOiAJCVtJTlRFUk5dIGRhdGFieXRlcyB1c2VkIHBlciBlY2MtY2FsY3VsYXRpb24KKyAqIEBlY2NieXRlczogCQlbSU5URVJOXSBudW1iZXIgb2YgZWNjIGJ5dGVzIHBlciBlY2MtY2FsY3VsYXRpb24gc3RlcAorICogQGVjY3N0ZXBzOgkJW0lOVEVSTl0gbnVtYmVyIG9mIGVjYyBjYWxjdWxhdGlvbiBzdGVwcyBwZXIgcGFnZQorICogQGNoaXBfZGVsYXk6CQlbQk9BUkRTUEVDSUZJQ10gY2hpcCBkZXBlbmRlbnQgZGVsYXkgZm9yIHRyYW5zZmVyaW5nIGRhdGEgZnJvbSBhcnJheSB0byByZWFkIHJlZ3MgKHRSKQorICogQGNoaXBfbG9jazoJCVtJTlRFUk5dIHNwaW5sb2NrIHVzZWQgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhpcyBzdHJ1Y3R1cmUgYW5kIHRoZSBjaGlwCisgKiBAd3E6CQkJW0lOVEVSTl0gd2FpdCBxdWV1ZSB0byBzbGVlcCBvbiBpZiBhIE5BTkQgb3BlcmF0aW9uIGlzIGluIHByb2dyZXNzCisgKiBAc3RhdGU6IAkJW0lOVEVSTl0gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIE5BTkQgZGV2aWNlCisgKiBAcGFnZV9zaGlmdDoJCVtJTlRFUk5dIG51bWJlciBvZiBhZGRyZXNzIGJpdHMgaW4gYSBwYWdlIChjb2x1bW4gYWRkcmVzcyBiaXRzKQorICogQHBoeXNfZXJhc2Vfc2hpZnQ6CVtJTlRFUk5dIG51bWJlciBvZiBhZGRyZXNzIGJpdHMgaW4gYSBwaHlzaWNhbCBlcmFzZWJsb2NrCisgKiBAYmJ0X2VyYXNlX3NoaWZ0OglbSU5URVJOXSBudW1iZXIgb2YgYWRkcmVzcyBiaXRzIGluIGEgYmJ0IGVudHJ5CisgKiBAY2hpcF9zaGlmdDoJCVtJTlRFUk5dIG51bWJlciBvZiBhZGRyZXNzIGJpdHMgaW4gb25lIGNoaXAKKyAqIEBkYXRhX2J1ZjoJCVtJTlRFUk5dIGludGVybmFsIGJ1ZmZlciBmb3Igb25lIHBhZ2UgKyBvb2IKKyAqIEBvb2JfYnVmOgkJW0lOVEVSTl0gb29iIGJ1ZmZlciBmb3Igb25lIGVyYXNlYmxvY2sKKyAqIEBvb2JkaXJ0eToJCVtJTlRFUk5dIGluZGljYXRlcyB0aGF0IG9vYl9idWYgbXVzdCBiZSByZWluaXRpYWxpemVkCisgKiBAZGF0YV9wb2k6CQlbSU5URVJOXSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIKKyAqIEBvcHRpb25zOgkJW0JPQVJEU1BFQ0lGSUNdIHZhcmlvdXMgY2hpcCBvcHRpb25zLiBUaGV5IGNhbiBwYXJ0bHkgYmUgc2V0IHRvIGluZm9ybSBuYW5kX3NjYW4gYWJvdXQKKyAqCQkJc3BlY2lhbCBmdW5jdGlvbmFsaXR5LiBTZWUgdGhlIGRlZmluZXMgZm9yIGZ1cnRoZXIgZXhwbGFuYXRpb24KKyAqIEBiYWRibG9ja3BvczoJW0lOVEVSTl0gcG9zaXRpb24gb2YgdGhlIGJhZCBibG9jayBtYXJrZXIgaW4gdGhlIG9vYiBhcmVhCisgKiBAbnVtY2hpcHM6CQlbSU5URVJOXSBudW1iZXIgb2YgcGh5c2ljYWwgY2hpcHMKKyAqIEBjaGlwc2l6ZToJCVtJTlRFUk5dIHRoZSBzaXplIG9mIG9uZSBjaGlwIGZvciBtdWx0aWNoaXAgYXJyYXlzCisgKiBAcGFnZW1hc2s6CQlbSU5URVJOXSBwYWdlIG51bWJlciBtYXNrID0gbnVtYmVyIG9mIChwYWdlcyAvIGNoaXApIC0gMQorICogQHBhZ2VidWY6CQlbSU5URVJOXSBob2xkcyB0aGUgcGFnZW51bWJlciB3aGljaCBpcyBjdXJyZW50bHkgaW4gZGF0YV9idWYKKyAqIEBhdXRvb29iOgkJW1JFUExBQ0VBQkxFXSB0aGUgZGVmYXVsdCAoYXV0bylwbGFjZW1lbnQgc2NoZW1lCisgKiBAYmJ0OgkJW0lOVEVSTl0gYmFkIGJsb2NrIHRhYmxlIHBvaW50ZXIKKyAqIEBiYnRfdGQ6CQlbUkVQTEFDRUFCTEVdIGJhZCBibG9jayB0YWJsZSBkZXNjcmlwdG9yIGZvciBmbGFzaCBsb29rdXAKKyAqIEBiYnRfbWQ6CQlbUkVQTEFDRUFCTEVdIGJhZCBibG9jayB0YWJsZSBtaXJyb3IgZGVzY3JpcHRvcgorICogQGJhZGJsb2NrX3BhdHRlcm46CVtSRVBMQUNFQUJMRV0gYmFkIGJsb2NrIHNjYW4gcGF0dGVybiB1c2VkIGZvciBpbml0aWFsIGJhZCBibG9jayBzY2FuCisgKiBAY29udHJvbGxlcjoJCVtPUFRJT05BTF0gYSBwb2ludGVyIHRvIGEgaGFyZHdhcmUgY29udHJvbGxlciBzdHJ1Y3R1cmUgd2hpY2ggaXMgc2hhcmVkIGFtb25nIG11bHRpcGxlIGluZGVwZW5kZW5kIGRldmljZXMKKyAqIEBwcml2OgkJW09QVElPTkFMXSBwb2ludGVyIHRvIHByaXZhdGUgY2hpcCBkYXRlCisgKi8KIAogc3RydWN0IG5hbmRfY2hpcCB7CisJdm9pZCAgX19pb21lbQkqSU9fQUREUl9SOworCXZvaWQgIF9faW9tZW0gCSpJT19BRERSX1c7CisKKwl1X2NoYXIJCSgqcmVhZF9ieXRlKShzdHJ1Y3QgbXRkX2luZm8gKm10ZCk7CisJdm9pZAkJKCp3cml0ZV9ieXRlKShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyIGJ5dGUpOworCXUxNgkJKCpyZWFkX3dvcmQpKHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKKwl2b2lkCQkoKndyaXRlX3dvcmQpKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1MTYgd29yZCk7CisKKwl2b2lkCQkoKndyaXRlX2J1Zikoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHVfY2hhciAqYnVmLCBpbnQgbGVuKTsKKwl2b2lkCQkoKnJlYWRfYnVmKShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyICpidWYsIGludCBsZW4pOworCWludAkJKCp2ZXJpZnlfYnVmKShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgY29uc3QgdV9jaGFyICpidWYsIGludCBsZW4pOworCXZvaWQJCSgqc2VsZWN0X2NoaXApKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY2hpcCk7CisJaW50CQkoKmJsb2NrX2JhZCkoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZnMsIGludCBnZXRjaGlwKTsKKwlpbnQJCSgqYmxvY2tfbWFya2JhZCkoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBvZnMpOworCXZvaWQgCQkoKmh3Y29udHJvbCkoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBjbWQpOworCWludCAgCQkoKmRldl9yZWFkeSkoc3RydWN0IG10ZF9pbmZvICptdGQpOworCXZvaWQgCQkoKmNtZGZ1bmMpKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCB1bnNpZ25lZCBjb21tYW5kLCBpbnQgY29sdW1uLCBpbnQgcGFnZV9hZGRyKTsKKwlpbnQgCQkoKndhaXRmdW5jKShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqdGhpcywgaW50IHN0YXRlKTsKKwlpbnQJCSgqY2FsY3VsYXRlX2VjYykoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHVfY2hhciAqZGF0LCB1X2NoYXIgKmVjY19jb2RlKTsKKwlpbnQgCQkoKmNvcnJlY3RfZGF0YSkoc3RydWN0IG10ZF9pbmZvICptdGQsIHVfY2hhciAqZGF0LCB1X2NoYXIgKnJlYWRfZWNjLCB1X2NoYXIgKmNhbGNfZWNjKTsKKwl2b2lkCQkoKmVuYWJsZV9od2VjYykoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBtb2RlKTsKKwl2b2lkCQkoKmVyYXNlX2NtZCkoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBwYWdlKTsKKwlpbnQJCSgqc2Nhbl9iYnQpKHN0cnVjdCBtdGRfaW5mbyAqbXRkKTsKKwlpbnQJCWVjY21vZGU7CisJaW50CQllY2NzaXplOworCWludAkJZWNjYnl0ZXM7CisJaW50CQllY2NzdGVwczsKKwlpbnQgCQljaGlwX2RlbGF5OworI2lmIDAKKwlzcGlubG9ja190CWNoaXBfbG9jazsKKwl3YWl0X3F1ZXVlX2hlYWRfdCB3cTsKKwluYW5kX3N0YXRlX3QgCXN0YXRlOworI2VuZGlmCiAJaW50IAkJcGFnZV9zaGlmdDsKKwlpbnQJCXBoeXNfZXJhc2Vfc2hpZnQ7CisJaW50CQliYnRfZXJhc2Vfc2hpZnQ7CisJaW50CQljaGlwX3NoaWZ0OwogCXVfY2hhciAJCSpkYXRhX2J1ZjsKLQl1X2NoYXIgCQkqZGF0YV9jYWNoZTsKLQlpbnQJCWNhY2hlX3BhZ2U7Ci0JdV9jaGFyIAkJZWNjX2NvZGVfYnVmWzZdOwotCXVfY2hhciAJCXJlc2VydmVkWzJdOwotCWNoYXIgQ2hpcElEOyAvKiBUeXBlIG9mIERpc2tPbkNoaXAgKi8KLQlzdHJ1Y3QgTmFuZCAqY2hpcHM7Ci0JaW50IGNoaXBzaGlmdDsKLQljaGFyKiBjaGlwc19uYW1lOwotCXVuc2lnbmVkIGxvbmcgZXJhc2VzaXplOwotCXVuc2lnbmVkIGxvbmcgbWZyOyAvKiBGbGFzaCBJRHMgLSBvbmx5IG9uZSB0eXBlIG9mIGZsYXNoIHBlciBkZXZpY2UgKi8KLQl1bnNpZ25lZCBsb25nIGlkOwotCWNoYXIqIG5hbWU7Ci0JaW50IG51bWNoaXBzOwotCWNoYXIgcGFnZTI1NjsKLQljaGFyIHBhZ2VhZHJsZW47Ci0JdW5zaWduZWQgbG9uZyBJT19BRERSOyAgLyogYWRkcmVzcyB0byBhY2Nlc3MgdGhlIDggSS9PIGxpbmVzIHRvIHRoZSBmbGFzaCBkZXZpY2UgKi8KLQl1bnNpZ25lZCBsb25nIHRvdGxlbjsKLQl1aW50IG9vYmJsb2NrOyAgLyogU2l6ZSBvZiBPT0IgYmxvY2tzIChlLmcuIDUxMikgKi8KLQl1aW50IG9vYnNpemU7ICAgLyogQW1vdW50IG9mIE9PQiBkYXRhIHBlciBibG9jayAoZS5nLiAxNikgKi8KLQl1aW50IGVjY3NpemU7Ci0JaW50IGJ1czE2OworCXVfY2hhcgkJKm9vYl9idWY7CisJaW50CQlvb2JkaXJ0eTsKKwl1X2NoYXIJCSpkYXRhX3BvaTsKKwl1bnNpZ25lZCBpbnQJb3B0aW9uczsKKwlpbnQJCWJhZGJsb2NrcG9zOworCWludAkJbnVtY2hpcHM7CisJdW5zaWduZWQgbG9uZwljaGlwc2l6ZTsKKwlpbnQJCXBhZ2VtYXNrOworCWludAkJcGFnZWJ1ZjsKKwlzdHJ1Y3QgbmFuZF9vb2JpbmZvCSphdXRvb29iOworCXVpbnQ4X3QJCSpiYnQ7CisJc3RydWN0IG5hbmRfYmJ0X2Rlc2NyCSpiYnRfdGQ7CisJc3RydWN0IG5hbmRfYmJ0X2Rlc2NyCSpiYnRfbWQ7CisJc3RydWN0IG5hbmRfYmJ0X2Rlc2NyCSpiYWRibG9ja19wYXR0ZXJuOworCXN0cnVjdCBuYW5kX2h3X2NvbnRyb2wgICpjb250cm9sbGVyOworCXZvaWQJCSpwcml2OwogfTsKIAogLyoKQEAgLTEzMCw3MSArMzQ0LDEyNSBAQAogICovCiAjZGVmaW5lIE5BTkRfTUZSX1RPU0hJQkEJMHg5OAogI2RlZmluZSBOQU5EX01GUl9TQU1TVU5HCTB4ZWMKKyNkZWZpbmUgTkFORF9NRlJfRlVKSVRTVQkweDA0CisjZGVmaW5lIE5BTkRfTUZSX05BVElPTkFMCTB4OGYKKyNkZWZpbmUgTkFORF9NRlJfUkVORVNBUwkweDA3CisjZGVmaW5lIE5BTkRfTUZSX1NUTUlDUk8JMHgyMAogCi0vKgotICogTkFORCBGbGFzaCBEZXZpY2UgSUQgU3RydWN0dXJlCi0gKgotICogU3RydWN0dXJlIG92ZXJ2aWV3OgorLyoqCisgKiBzdHJ1Y3QgbmFuZF9mbGFzaF9kZXYgLSBOQU5EIEZsYXNoIERldmljZSBJRCBTdHJ1Y3R1cmUKICAqCi0gKiAgbmFtZSAtIENvbXBsZXRlIG5hbWUgb2YgZGV2aWNlCi0gKgotICogIG1hbnVmYWN0dXJlX2lkIC0gbWFudWZhY3R1cmVyIElEIGNvZGUgb2YgZGV2aWNlLgotICoKLSAqICBtb2RlbF9pZCAtIG1vZGVsIElEIGNvZGUgb2YgZGV2aWNlLgotICoKLSAqICBjaGlwc2hpZnQgLSB0b3RhbCBudW1iZXIgb2YgYWRkcmVzcyBiaXRzIGZvciB0aGUgZGV2aWNlIHdoaWNoCi0gKiAgICAgICAgICAgICAgaXMgdXNlZCB0byBjYWxjdWxhdGUgYWRkcmVzcyBvZmZzZXRzIGFuZCB0aGUgdG90YWwKLSAqICAgICAgICAgICAgICBudW1iZXIgb2YgYnl0ZXMgdGhlIGRldmljZSBpcyBjYXBhYmxlIG9mLgotICoKLSAqICBwYWdlMjU2IC0gZGVub3RlcyBpZiBmbGFzaCBkZXZpY2UgaGFzIDI1NiBieXRlIHBhZ2VzIG9yIG5vdC4KLSAqCi0gKiAgcGFnZWFkcmxlbiAtIG51bWJlciBvZiBieXRlcyBtaW51cyBvbmUgbmVlZGVkIHRvIGhvbGQgdGhlCi0gKiAgICAgICAgICAgICAgIGNvbXBsZXRlIGFkZHJlc3MgaW50byB0aGUgZmxhc2ggYXJyYXkuIEtlZXAgaW4KLSAqICAgICAgICAgICAgICAgbWluZCB0aGF0IHdoZW4gYSByZWFkIG9yIHdyaXRlIGlzIGRvbmUgdG8gYQotICogICAgICAgICAgICAgICBzcGVjaWZpYyBhZGRyZXNzLCB0aGUgYWRkcmVzcyBpcyBpbnB1dCBzZXJpYWxseQotICogICAgICAgICAgICAgICA4IGJpdHMgYXQgYSB0aW1lLiBUaGlzIHN0cnVjdHVyZSBtZW1iZXIgaXMgdXNlZAotICogICAgICAgICAgICAgICBieSB0aGUgcmVhZC93cml0ZSByb3V0aW5lcyBhcyBhIGxvb3AgaW5kZXggZm9yCi0gKiAgICAgICAgICAgICAgIHNoaWZ0aW5nIHRoZSBhZGRyZXNzIG91dCA4IGJpdHMgYXQgYSB0aW1lLgotICoKLSAqICBlcmFzZXNpemUgLSBzaXplIG9mIGFuIGVyYXNlIGJsb2NrIGluIHRoZSBmbGFzaCBkZXZpY2UuCisgKiBAbmFtZTogIAlJZGVudGlmeSB0aGUgZGV2aWNlIHR5cGUKKyAqIEBpZDogICAJZGV2aWNlIElEIGNvZGUKKyAqIEBwYWdlc2l6ZTogIAlQYWdlc2l6ZSBpbiBieXRlcy4gRWl0aGVyIDI1NiBvciA1MTIgb3IgMAorICoJCUlmIHRoZSBwYWdlc2l6ZSBpcyAwLCB0aGVuIHRoZSByZWFsIHBhZ2VzaXplCisgKgkJYW5kIHRoZSBlcmFzZWl6ZSBhcmUgZGV0ZXJtaW5lZCBmcm9tIHRoZQorICoJCWV4dGVuZGVkIGlkIGJ5dGVzIGluIHRoZSBjaGlwCisgKiBAZXJhc2VzaXplOiAJU2l6ZSBvZiBhbiBlcmFzZSBibG9jayBpbiB0aGUgZmxhc2ggZGV2aWNlLgorICogQGNoaXBzaXplOiAgCVRvdGFsIGNoaXBzaXplIGluIE1lZ2EgQnl0ZXMKKyAqIEBvcHRpb25zOglCaXRmaWVsZCB0byBzdG9yZSBjaGlwIHJlbGV2YW50IG9wdGlvbnMKICAqLwogc3RydWN0IG5hbmRfZmxhc2hfZGV2IHsKLQljaGFyICogbmFtZTsKLQlpbnQgbWFudWZhY3R1cmVfaWQ7Ci0JaW50IG1vZGVsX2lkOwotCWludCBjaGlwc2hpZnQ7Ci0JY2hhciBwYWdlMjU2OwotCWNoYXIgcGFnZWFkcmxlbjsKKwljaGFyICpuYW1lOworCWludCBpZDsKKwl1bnNpZ25lZCBsb25nIHBhZ2VzaXplOworCXVuc2lnbmVkIGxvbmcgY2hpcHNpemU7CiAJdW5zaWduZWQgbG9uZyBlcmFzZXNpemU7Ci0JaW50IGJ1czE2OworCXVuc2lnbmVkIGxvbmcgb3B0aW9uczsKIH07CiAKLS8qCi0qIENvbnN0YW50cyBmb3Igb29iIGNvbmZpZ3VyYXRpb24KKy8qKgorICogc3RydWN0IG5hbmRfbWFudWZhY3R1cmVycyAtIE5BTkQgRmxhc2ggTWFudWZhY3R1cmVyIElEIFN0cnVjdHVyZQorICogQG5hbWU6CU1hbnVmYWN0dXJlciBuYW1lCisgKiBAaWQ6IAltYW51ZmFjdHVyZXIgSUQgY29kZSBvZiBkZXZpY2UuCiAqLwotI2RlZmluZSBOQU5EX05PT0JfRUNDUE9TMAkJMAotI2RlZmluZSBOQU5EX05PT0JfRUNDUE9TMQkJMQotI2RlZmluZSBOQU5EX05PT0JfRUNDUE9TMgkJMgotI2RlZmluZSBOQU5EX05PT0JfRUNDUE9TMwkJMwotI2RlZmluZSBOQU5EX05PT0JfRUNDUE9TNAkJNgotI2RlZmluZSBOQU5EX05PT0JfRUNDUE9TNQkJNwotI2RlZmluZSBOQU5EX05PT0JfQkFEQlBPUwkJLTEKLSNkZWZpbmUgTkFORF9OT09CX0VDQ1ZQT1MJCS0xCitzdHJ1Y3QgbmFuZF9tYW51ZmFjdHVyZXJzIHsKKwlpbnQgaWQ7CisJY2hhciAqIG5hbWU7Cit9OwogCi0jZGVmaW5lIE5BTkRfSkZGUzJfT09CX0VDQ1BPUzAJCTAKLSNkZWZpbmUgTkFORF9KRkZTMl9PT0JfRUNDUE9TMQkJMQotI2RlZmluZSBOQU5EX0pGRlMyX09PQl9FQ0NQT1MyCQkyCi0jZGVmaW5lIE5BTkRfSkZGUzJfT09CX0VDQ1BPUzMJCTMKLSNkZWZpbmUgTkFORF9KRkZTMl9PT0JfRUNDUE9TNAkJNgotI2RlZmluZSBOQU5EX0pGRlMyX09PQl9FQ0NQT1M1CQk3Ci0jZGVmaW5lIE5BTkRfSkZGUzJfT09CX0JBREJQT1MJCTUKLSNkZWZpbmUgTkFORF9KRkZTMl9PT0JfRUNDVlBPUwkJNAorZXh0ZXJuIHN0cnVjdCBuYW5kX2ZsYXNoX2RldiBuYW5kX2ZsYXNoX2lkc1tdOworZXh0ZXJuIHN0cnVjdCBuYW5kX21hbnVmYWN0dXJlcnMgbmFuZF9tYW51Zl9pZHNbXTsKIAotI2RlZmluZSBOQU5EX0pGRlMyX09PQjhfRlNEQVBPUwkJNgotI2RlZmluZSBOQU5EX0pGRlMyX09PQjE2X0ZTREFQT1MJOAotI2RlZmluZSBOQU5EX0pGRlMyX09PQjhfRlNEQUxFTgkJMgotI2RlZmluZSBOQU5EX0pGRlMyX09PQjE2X0ZTREFMRU4JOAorLyoqCisgKiBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgLSBiYWQgYmxvY2sgdGFibGUgZGVzY3JpcHRvcgorICogQG9wdGlvbnM6CW9wdGlvbnMgZm9yIHRoaXMgZGVzY3JpcHRvcgorICogQHBhZ2VzOgl0aGUgcGFnZShzKSB3aGVyZSB3ZSBmaW5kIHRoZSBiYnQsIHVzZWQgd2l0aCBvcHRpb24gQkJUX0FCU1BBR0UKKyAqCQl3aGVuIGJidCBpcyBzZWFyY2hlZCwgdGhlbiB3ZSBzdG9yZSB0aGUgZm91bmQgYmJ0cyBwYWdlcyBoZXJlLgorICoJCUl0cyBhbiBhcnJheSBhbmQgc3VwcG9ydHMgdXAgdG8gOCBjaGlwcyBub3cKKyAqIEBvZmZzOglvZmZzZXQgb2YgdGhlIHBhdHRlcm4gaW4gdGhlIG9vYiBhcmVhIG9mIHRoZSBwYWdlCisgKiBAdmVyb2ZmczoJb2Zmc2V0IG9mIHRoZSBiYnQgdmVyc2lvbiBjb3VudGVyIGluIHRoZSBvb2IgYXJlIG9mIHRoZSBwYWdlCisgKiBAdmVyc2lvbjoJdmVyc2lvbiByZWFkIGZyb20gdGhlIGJidCBwYWdlIGR1cmluZyBzY2FuCisgKiBAbGVuOglsZW5ndGggb2YgdGhlIHBhdHRlcm4sIGlmIDAgbm8gcGF0dGVybiBjaGVjayBpcyBwZXJmb3JtZWQKKyAqIEBtYXhibG9ja3M6CW1heGltdW0gbnVtYmVyIG9mIGJsb2NrcyB0byBzZWFyY2ggZm9yIGEgYmJ0LiBUaGlzIG51bWJlciBvZgorICoJCWJsb2NrcyBpcyByZXNlcnZlZCBhdCB0aGUgZW5kIG9mIHRoZSBkZXZpY2Ugd2hlcmUgdGhlIHRhYmxlcyBhcmUKKyAqCQl3cml0dGVuLgorICogQHJlc2VydmVkX2Jsb2NrX2NvZGU6IGlmIG5vbi0wLCB0aGlzIHBhdHRlcm4gZGVub3RlcyBhIHJlc2VydmVkIChyYXRoZXIgdGhhbgorICogICAgICAgICAgICAgIGJhZCkgYmxvY2sgaW4gdGhlIHN0b3JlZCBiYnQKKyAqIEBwYXR0ZXJuOglwYXR0ZXJuIHRvIGlkZW50aWZ5IGJhZCBibG9jayB0YWJsZSBvciBmYWN0b3J5IG1hcmtlZCBnb29kIC8KKyAqCQliYWQgYmxvY2tzLCBjYW4gYmUgTlVMTCwgaWYgbGVuID0gMAorICoKKyAqIERlc2NyaXB0b3IgZm9yIHRoZSBiYWQgYmxvY2sgdGFibGUgbWFya2VyIGFuZCB0aGUgZGVzY3JpcHRvciBmb3IgdGhlCisgKiBwYXR0ZXJuIHdoaWNoIGlkZW50aWZpZXMgZ29vZCBhbmQgYmFkIGJsb2Nrcy4gVGhlIGFzc3VtcHRpb24gaXMgbWFkZQorICogdGhhdCB0aGUgcGF0dGVybiBhbmQgdGhlIHZlcnNpb24gY291bnQgYXJlIGFsd2F5cyBsb2NhdGVkIGluIHRoZSBvb2IgYXJlYQorICogb2YgdGhlIGZpcnN0IGJsb2NrLgorICovCitzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgeworCWludAlvcHRpb25zOworCWludAlwYWdlc1tOQU5EX01BWF9DSElQU107CisJaW50CW9mZnM7CisJaW50CXZlcm9mZnM7CisJdWludDhfdAl2ZXJzaW9uW05BTkRfTUFYX0NISVBTXTsKKwlpbnQJbGVuOworCWludCAJbWF4YmxvY2tzOworCWludAlyZXNlcnZlZF9ibG9ja19jb2RlOworCXVpbnQ4X3QJKnBhdHRlcm47Cit9OworCisvKiBPcHRpb25zIGZvciB0aGUgYmFkIGJsb2NrIHRhYmxlIGRlc2NyaXB0b3JzICovCisKKy8qIFRoZSBudW1iZXIgb2YgYml0cyB1c2VkIHBlciBibG9jayBpbiB0aGUgYmJ0IG9uIHRoZSBkZXZpY2UgKi8KKyNkZWZpbmUgTkFORF9CQlRfTlJCSVRTX01TSwkweDAwMDAwMDBGCisjZGVmaW5lIE5BTkRfQkJUXzFCSVQJCTB4MDAwMDAwMDEKKyNkZWZpbmUgTkFORF9CQlRfMkJJVAkJMHgwMDAwMDAwMgorI2RlZmluZSBOQU5EX0JCVF80QklUCQkweDAwMDAwMDA0CisjZGVmaW5lIE5BTkRfQkJUXzhCSVQJCTB4MDAwMDAwMDgKKy8qIFRoZSBiYWQgYmxvY2sgdGFibGUgaXMgaW4gdGhlIGxhc3QgZ29vZCBibG9jayBvZiB0aGUgZGV2aWNlICovCisjZGVmaW5lCU5BTkRfQkJUX0xBU1RCTE9DSwkweDAwMDAwMDEwCisvKiBUaGUgYmJ0IGlzIGF0IHRoZSBnaXZlbiBwYWdlLCBlbHNlIHdlIG11c3Qgc2NhbiBmb3IgdGhlIGJidCAqLworI2RlZmluZSBOQU5EX0JCVF9BQlNQQUdFCTB4MDAwMDAwMjAKKy8qIFRoZSBiYnQgaXMgYXQgdGhlIGdpdmVuIHBhZ2UsIGVsc2Ugd2UgbXVzdCBzY2FuIGZvciB0aGUgYmJ0ICovCisjZGVmaW5lIE5BTkRfQkJUX1NFQVJDSAkJMHgwMDAwMDA0MAorLyogYmJ0IGlzIHN0b3JlZCBwZXIgY2hpcCBvbiBtdWx0aWNoaXAgZGV2aWNlcyAqLworI2RlZmluZSBOQU5EX0JCVF9QRVJDSElQCTB4MDAwMDAwODAKKy8qIGJidCBoYXMgYSB2ZXJzaW9uIGNvdW50ZXIgYXQgb2Zmc2V0IHZlcm9mZnMgKi8KKyNkZWZpbmUgTkFORF9CQlRfVkVSU0lPTgkweDAwMDAwMTAwCisvKiBDcmVhdGUgYSBiYnQgaWYgbm9uZSBheGlzdHMgKi8KKyNkZWZpbmUgTkFORF9CQlRfQ1JFQVRFCQkweDAwMDAwMjAwCisvKiBTZWFyY2ggZ29vZCAvIGJhZCBwYXR0ZXJuIHRocm91Z2ggYWxsIHBhZ2VzIG9mIGEgYmxvY2sgKi8KKyNkZWZpbmUgTkFORF9CQlRfU0NBTkFMTFBBR0VTCTB4MDAwMDA0MDAKKy8qIFNjYW4gYmxvY2sgZW1wdHkgZHVyaW5nIGdvb2QgLyBiYWQgYmxvY2sgc2NhbiAqLworI2RlZmluZSBOQU5EX0JCVF9TQ0FORU1QVFkJMHgwMDAwMDgwMAorLyogV3JpdGUgYmJ0IGlmIG5lY2NlY2FyeSAqLworI2RlZmluZSBOQU5EX0JCVF9XUklURQkJMHgwMDAwMTAwMAorLyogUmVhZCBhbmQgd3JpdGUgYmFjayBibG9jayBjb250ZW50cyB3aGVuIHdyaXRpbmcgYmJ0ICovCisjZGVmaW5lIE5BTkRfQkJUX1NBVkVDT05URU5UCTB4MDAwMDIwMDAKKy8qIFNlYXJjaCBnb29kIC8gYmFkIHBhdHRlcm4gb24gdGhlIGZpcnN0IGFuZCB0aGUgc2Vjb25kIHBhZ2UgKi8KKyNkZWZpbmUgTkFORF9CQlRfU0NBTjJORFBBR0UJMHgwMDAwNDAwMAorCisvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYmxvY2tzIHRvIHNjYW4gZm9yIGEgYmJ0ICovCisjZGVmaW5lIE5BTkRfQkJUX1NDQU5fTUFYQkxPQ0tTCTQKIAotdW5zaWduZWQgbG9uZyBuYW5kX3Byb2JlKHVuc2lnbmVkIGxvbmcgcGh5c2Fkcik7CitleHRlcm4gaW50IG5hbmRfc2Nhbl9iYnQgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgbmFuZF9iYnRfZGVzY3IgKmJkKTsKK2V4dGVybiBpbnQgbmFuZF91cGRhdGVfYmJ0IChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mZnMpOworZXh0ZXJuIGludCBuYW5kX2RlZmF1bHRfYmJ0IChzdHJ1Y3QgbXRkX2luZm8gKm10ZCk7CitleHRlcm4gaW50IG5hbmRfaXNiYWRfYmJ0IChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IG9mZnMsIGludCBhbGxvd2JidCk7CitleHRlcm4gaW50IG5hbmRfZXJhc2VfbmFuZCAoc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBlcmFzZV9pbmZvICppbnN0ciwgaW50IGFsbG93YmJ0KTsKKworLyoKKyogQ29uc3RhbnRzIGZvciBvb2IgY29uZmlndXJhdGlvbgorKi8KKyNkZWZpbmUgTkFORF9TTUFMTF9CQURCTE9DS19QT1MJCTUKKyNkZWZpbmUgTkFORF9MQVJHRV9CQURCTE9DS19QT1MJCTAKIAogI2VuZGlmIC8qIF9fTElOVVhfTVREX05BTkRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvbmFuZF9lY2MuaCBiL2luY2x1ZGUvbGludXgvbXRkL25hbmRfZWNjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJjNWJjMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgvbXRkL25hbmRfZWNjLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqICBkcml2ZXJzL210ZC9uYW5kX2VjYy5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMCBTdGV2ZW4gSi4gSGlsbCAoc2poaWxsQHJlYWxpdHlkaWx1dGVkLmNvbSkKKyAqCisgKiAkSWQ6IG5hbmRfZWNjLmgsdiAxLjQgMjAwNC8wNi8xNyAwMjozNTowMiBkYnJvd24gRXhwICQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgZmlsZSBpcyB0aGUgaGVhZGVyIGZvciB0aGUgRUNDIGFsZ29yaXRobS4KKyAqLworCisjaWZuZGVmIF9fTVREX05BTkRfRUNDX0hfXworI2RlZmluZSBfX01URF9OQU5EX0VDQ19IX18KKworc3RydWN0IG10ZF9pbmZvOworCisvKgorICogQ2FsY3VsYXRlIDMgYnl0ZSBFQ0MgY29kZSBmb3IgMjU2IGJ5dGUgYmxvY2sKKyAqLworaW50IG5hbmRfY2FsY3VsYXRlX2VjYyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgY29uc3QgdV9jaGFyICpkYXQsIHVfY2hhciAqZWNjX2NvZGUpOworCisvKgorICogRGV0ZWN0IGFuZCBjb3JyZWN0IGEgMSBiaXQgZXJyb3IgZm9yIDI1NiBieXRlIGJsb2NrCisgKi8KK2ludCBuYW5kX2NvcnJlY3RfZGF0YShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdV9jaGFyICpkYXQsIHVfY2hhciAqcmVhZF9lY2MsIHVfY2hhciAqY2FsY19lY2MpOworCisjZW5kaWYgLyogX19NVERfTkFORF9FQ0NfSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L210ZC9uYW5kX2lkcy5oIGIvaW5jbHVkZS9saW51eC9tdGQvbmFuZF9pZHMuaAppbmRleCBhM2QwMzYzLi5kOWViOTExIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9uYW5kX2lkcy5oCisrKyBiL2luY2x1ZGUvbGludXgvbXRkL25hbmRfaWRzLmgKQEAgLTI4LDYgKzI4LDEwIEBACiAjaWZuZGVmIF9fTElOVVhfTVREX05BTkRfSURTX0gKICNkZWZpbmUgX19MSU5VWF9NVERfTkFORF9JRFNfSAogCisjaWZuZGVmIENGR19OQU5EX0xFR0FDWQorI2Vycm9yIFRoaXMgbW9kdWxlIGlzIGZvciB0aGUgbGVnYWN5IE5BTkQgc3VwcG9ydAorI2VuZGlmCisKIHN0YXRpYyBzdHJ1Y3QgbmFuZF9mbGFzaF9kZXYgbmFuZF9mbGFzaF9pZHNbXSA9IHsKIAl7IlRvc2hpYmEgVEM1ODE2QkRDIiwgICAgIE5BTkRfTUZSX1RPU0hJQkEsIDB4NjQsIDIxLCAxLCAyLCAweDEwMDAsIDB9LAogCXsiVG9zaGliYSBUQzU4MzJEQyIsICAgICAgTkFORF9NRlJfVE9TSElCQSwgMHg2YiwgMjIsIDAsIDIsIDB4MjAwMCwgMH0sCkBAIC00OSw2ICs1Myw3IEBACiAJeyJTYW1zdW5nIEtNMjlXMTYwMDAiLCAgICBOQU5EX01GUl9TQU1TVU5HLCAweGVhLCAyMSwgMSwgMiwgMHgxMDAwLCAwfSwKIAl7IlNhbXN1bmcgSzlGNTYxNlEwQyIsICAgIE5BTkRfTUZSX1NBTVNVTkcsIDB4NDUsIDI1LCAwLCAyLCAweDQwMDAsIDF9LAogCXsiU2Ftc3VuZyBLOUsxMjE2UTBDIiwgICAgTkFORF9NRlJfU0FNU1VORywgMHg0NiwgMjYsIDAsIDMsIDB4NDAwMCwgMX0sCisJeyJTYW1zdW5nIEs5RjFHMDhVME0iLCAgICBOQU5EX01GUl9TQU1TVU5HLCAweGYxLCAyNywgMCwgMiwgMCwgMH0sCiAJe05VTEwsfQogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvbmFuZF9sZWdhY3kuaCBiL2luY2x1ZGUvbGludXgvbXRkL25hbmRfbGVnYWN5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg3NjllNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgvbXRkL25hbmRfbGVnYWN5LmgKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiAgbGludXgvaW5jbHVkZS9saW51eC9tdGQvbmFuZC5oCisgKgorICogIENvcHlyaWdodCAoYykgMjAwMCBEYXZpZCBXb29kaG91c2UgPGR3bXcyQG12aGkuY29tPgorICogICAgICAgICAgICAgICAgICAgICBTdGV2ZW4gSi4gSGlsbCA8c2poaWxsQGNvdHcuY29tPgorICoJCSAgICAgICBUaG9tYXMgR2xlaXhuZXIgPGdsZWl4bmVyQGF1dHJvbml4LmRlPgorICoKKyAqICRJZDogbmFuZC5oLHYgMS43IDIwMDMvMDcvMjQgMjM6MzA6NDYgYTAzODQ4NjQgRXhwICQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBJbmZvOgorICogICBDb250YWlucyBzdGFuZGFyZCBkZWZpbmVzIGFuZCBJRHMgZm9yIE5BTkQgZmxhc2ggZGV2aWNlcworICoKKyAqICBDaGFuZ2Vsb2c6CisgKiAgIDAxLTMxLTIwMDAgRE1XICAgICBDcmVhdGVkCisgKiAgIDA5LTE4LTIwMDAgU0pIICAgICBNb3ZlZCBzdHJ1Y3R1cmUgb3V0IG9mIHRoZSBEaXNrLU9uLUNoaXAgZHJpdmVycworICoJCQlzbyBpdCBjYW4gYmUgdXNlZCBieSBvdGhlciBOQU5EIGZsYXNoIGRldmljZQorICoJCQlkcml2ZXJzLiBJIGFsc28gY2hhbmdlZCB0aGUgY29weXJpZ2h0IHNpbmNlIG5vbmUKKyAqCQkJb2YgdGhlIG9yaWdpbmFsIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3BlY2lmaWMKKyAqCQkJdG8gRG9DIGRldmljZXMuIERhdmlkIGNhbiB3aGFjayBtZSB3aXRoIGEgYmFzZWJhbGwKKyAqCQkJYmF0IGxhdGVyIGlmIEkgZGlkIHNvbWV0aGluZyBuYXVnaHR5LgorICogICAxMC0xMS0yMDAwIFNKSCAgICAgQWRkZWQgcHJpdmF0ZSBOQU5EIGZsYXNoIHN0cnVjdHVyZSBmb3IgZHJpdmVyCisgKiAgIDEwLTI0LTIwMDAgU0pIICAgICBBZGRlZCBwcm90b3R5cGUgZm9yICduYW5kX3NjYW4nIGZ1bmN0aW9uCisgKiAgIDEwLTI5LTIwMDEgVEcJY2hhbmdlZCBuYW5kX2NoaXAgc3RydWN0dXJlIHRvIHN1cHBvcnQKKyAqCQkJaGFyZHdhcmVzcGVjaWZpYyBmdW5jdGlvbiBmb3IgYWNjZXNzaW5nIGNvbnRyb2wgbGluZXMKKyAqICAgMDItMjEtMjAwMiBURwlhZGRlZCBzdXBwb3J0IGZvciBkaWZmZXJlbnQgcmVhZC93cml0ZSBhZHJlc3MgYW5kCisgKgkJCXJlYWR5L2J1c3kgbGluZSBhY2Nlc3MgZnVuY3Rpb24KKyAqICAgMDItMjYtMjAwMiBURwlhZGRlZCBjaGlwX2RlbGF5IHRvIG5hbmRfY2hpcCBzdHJ1Y3R1cmUgdG8gb3B0aW1pemUKKyAqCQkJY29tbWFuZCBkZWxheSB0aW1lcyBmb3IgZGlmZmVyZW50IGNoaXBzCisgKiAgIDA0LTI4LTIwMDIgVEcJT09CIGNvbmZpZyBkZWZpbmVzIG1vdmVkIGZyb20gbmFuZC5jIHRvIGF2b2lkIGR1cGxpY2F0ZQorICoJCQlkZWZpbmVzIGluIGpmZnMyL3didWYuYworICovCisjaWZuZGVmIF9fTElOVVhfTVREX05BTkRfTEVHQUNZX0gKKyNkZWZpbmUgX19MSU5VWF9NVERfTkFORF9MRUdBQ1lfSAorCisjaWZuZGVmIENGR19OQU5EX0xFR0FDWQorI2Vycm9yIFRoaXMgbW9kdWxlIGlzIGZvciB0aGUgbGVnYWN5IE5BTkQgc3VwcG9ydAorI2VuZGlmCisKKy8qCisgKiBTdGFuZGFyZCBOQU5EIGZsYXNoIGNvbW1hbmRzCisgKi8KKyNkZWZpbmUgTkFORF9DTURfUkVBRDAJCTAKKyNkZWZpbmUgTkFORF9DTURfUkVBRDEJCTEKKyNkZWZpbmUgTkFORF9DTURfUEFHRVBST0cJMHgxMAorI2RlZmluZSBOQU5EX0NNRF9SRUFET09CCTB4NTAKKyNkZWZpbmUgTkFORF9DTURfRVJBU0UxCQkweDYwCisjZGVmaW5lIE5BTkRfQ01EX1NUQVRVUwkJMHg3MAorI2RlZmluZSBOQU5EX0NNRF9TRVFJTgkJMHg4MAorI2RlZmluZSBOQU5EX0NNRF9SRUFESUQJCTB4OTAKKyNkZWZpbmUgTkFORF9DTURfRVJBU0UyCQkweGQwCisjZGVmaW5lIE5BTkRfQ01EX1JFU0VUCQkweGZmCisKKy8qCisgKiBFbnVtZXJhdGlvbiBmb3IgTkFORCBmbGFzaCBjaGlwIHN0YXRlCisgKi8KK3R5cGVkZWYgZW51bSB7CisJRkxfUkVBRFksCisJRkxfUkVBRElORywKKwlGTF9XUklUSU5HLAorCUZMX0VSQVNJTkcsCisJRkxfU1lOQ0lORworfSBuYW5kX3N0YXRlX3Q7CisKKworLyoKKyAqIE5BTkQgUHJpdmF0ZSBGbGFzaCBDaGlwIERhdGEKKyAqCisgKiBTdHJ1Y3R1cmUgb3ZlcnZpZXc6CisgKgorICogIElPX0FERFIgLSBhZGRyZXNzIHRvIGFjY2VzcyB0aGUgOCBJL08gbGluZXMgb2YgdGhlIGZsYXNoIGRldmljZQorICoKKyAqICBod2NvbnRyb2wgLSBoYXJkd2FyZXNwZWNpZmljIGZ1bmN0aW9uIGZvciBhY2Nlc2luZyBjb250cm9sLWxpbmVzCisgKgorICogIGRldl9yZWFkeSAtIGhhcmR3YXJlc3BlY2lmaWMgZnVuY3Rpb24gZm9yIGFjY2VzaW5nIGRldmljZSByZWFkeS9idXN5IGxpbmUKKyAqCisgKiAgY2hpcF9sb2NrIC0gc3BpbmxvY2sgdXNlZCB0byBwcm90ZWN0IGFjY2VzcyB0byB0aGlzIHN0cnVjdHVyZQorICoKKyAqICB3cSAtIHdhaXQgcXVldWUgdG8gc2xlZXAgb24gaWYgYSBOQU5EIG9wZXJhdGlvbiBpcyBpbiBwcm9ncmVzcworICoKKyAqICBzdGF0ZSAtIGdpdmUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIE5BTkQgZGV2aWNlCisgKgorICogIHBhZ2Vfc2hpZnQgLSBudW1iZXIgb2YgYWRkcmVzcyBiaXRzIGluIGEgcGFnZSAoY29sdW1uIGFkZHJlc3MgYml0cykKKyAqCisgKiAgZGF0YV9idWYgLSBkYXRhIGJ1ZmZlciBwYXNzZWQgdG8vZnJvbSBNVEQgdXNlciBtb2R1bGVzCisgKgorICogIGRhdGFfY2FjaGUgLSBkYXRhIGNhY2hlIGZvciByZWR1bmRhbnQgcGFnZSBhY2Nlc3MgYW5kIHNoYWRvdyBmb3IKKyAqCQkgRUNDIGZhaWx1cmUKKyAqCisgKiAgZWNjX2NvZGVfYnVmIC0gdXNlZCBvbmx5IGZvciBob2xkaW5nIGNhbGN1bGF0ZWQgb3IgcmVhZCBFQ0NzIGZvcgorICogICAgICAgICAgICAgICAgIGEgcGFnZSByZWFkIG9yIHdyaXR0ZW4gd2hlbiBFQ0MgaXMgaW4gdXNlCisgKgorICogIHJlc2VydmVkIC0gcGFkZGluZyB0byBtYWtlIHN0cnVjdHVyZSBmYWxsIG9uIHdvcmQgYm91bmRhcnkgaWYKKyAqICAgICAgICAgICAgIHdoZW4gRUNDIGlzIGluIHVzZQorICovCitzdHJ1Y3QgTmFuZCB7CisJY2hhciBmbG9vciwgY2hpcDsKKwl1bnNpZ25lZCBsb25nIGN1cmFkcjsKKwl1bnNpZ25lZCBjaGFyIGN1cm1vZGU7CisJLyogQWxzbyBzb21lIGVyYXNlL3dyaXRlL3BpcGVsaW5lIGluZm8gd2hlbiB3ZSBnZXQgdGhhdCBmYXIgKi8KK307CisKK3N0cnVjdCBuYW5kX2NoaXAgeworCWludCAJCXBhZ2Vfc2hpZnQ7CisJdV9jaGFyIAkJKmRhdGFfYnVmOworCXVfY2hhciAJCSpkYXRhX2NhY2hlOworCWludAkJY2FjaGVfcGFnZTsKKwl1X2NoYXIgCQllY2NfY29kZV9idWZbNl07CisJdV9jaGFyIAkJcmVzZXJ2ZWRbMl07CisJY2hhciBDaGlwSUQ7IC8qIFR5cGUgb2YgRGlza09uQ2hpcCAqLworCXN0cnVjdCBOYW5kICpjaGlwczsKKwlpbnQgY2hpcHNoaWZ0OworCWNoYXIqIGNoaXBzX25hbWU7CisJdW5zaWduZWQgbG9uZyBlcmFzZXNpemU7CisJdW5zaWduZWQgbG9uZyBtZnI7IC8qIEZsYXNoIElEcyAtIG9ubHkgb25lIHR5cGUgb2YgZmxhc2ggcGVyIGRldmljZSAqLworCXVuc2lnbmVkIGxvbmcgaWQ7CisJY2hhciogbmFtZTsKKwlpbnQgbnVtY2hpcHM7CisJY2hhciBwYWdlMjU2OworCWNoYXIgcGFnZWFkcmxlbjsKKwl1bnNpZ25lZCBsb25nIElPX0FERFI7ICAvKiBhZGRyZXNzIHRvIGFjY2VzcyB0aGUgOCBJL08gbGluZXMgdG8gdGhlIGZsYXNoIGRldmljZSAqLworCXVuc2lnbmVkIGxvbmcgdG90bGVuOworCXVpbnQgb29iYmxvY2s7ICAvKiBTaXplIG9mIE9PQiBibG9ja3MgKGUuZy4gNTEyKSAqLworCXVpbnQgb29ic2l6ZTsgICAvKiBBbW91bnQgb2YgT09CIGRhdGEgcGVyIGJsb2NrIChlLmcuIDE2KSAqLworCXVpbnQgZWNjc2l6ZTsKKwlpbnQgYnVzMTY7Cit9OworCisvKgorICogTkFORCBGbGFzaCBNYW51ZmFjdHVyZXIgSUQgQ29kZXMKKyAqLworI2RlZmluZSBOQU5EX01GUl9UT1NISUJBCTB4OTgKKyNkZWZpbmUgTkFORF9NRlJfU0FNU1VORwkweGVjCisKKy8qCisgKiBOQU5EIEZsYXNoIERldmljZSBJRCBTdHJ1Y3R1cmUKKyAqCisgKiBTdHJ1Y3R1cmUgb3ZlcnZpZXc6CisgKgorICogIG5hbWUgLSBDb21wbGV0ZSBuYW1lIG9mIGRldmljZQorICoKKyAqICBtYW51ZmFjdHVyZV9pZCAtIG1hbnVmYWN0dXJlciBJRCBjb2RlIG9mIGRldmljZS4KKyAqCisgKiAgbW9kZWxfaWQgLSBtb2RlbCBJRCBjb2RlIG9mIGRldmljZS4KKyAqCisgKiAgY2hpcHNoaWZ0IC0gdG90YWwgbnVtYmVyIG9mIGFkZHJlc3MgYml0cyBmb3IgdGhlIGRldmljZSB3aGljaAorICogICAgICAgICAgICAgIGlzIHVzZWQgdG8gY2FsY3VsYXRlIGFkZHJlc3Mgb2Zmc2V0cyBhbmQgdGhlIHRvdGFsCisgKiAgICAgICAgICAgICAgbnVtYmVyIG9mIGJ5dGVzIHRoZSBkZXZpY2UgaXMgY2FwYWJsZSBvZi4KKyAqCisgKiAgcGFnZTI1NiAtIGRlbm90ZXMgaWYgZmxhc2ggZGV2aWNlIGhhcyAyNTYgYnl0ZSBwYWdlcyBvciBub3QuCisgKgorICogIHBhZ2VhZHJsZW4gLSBudW1iZXIgb2YgYnl0ZXMgbWludXMgb25lIG5lZWRlZCB0byBob2xkIHRoZQorICogICAgICAgICAgICAgICBjb21wbGV0ZSBhZGRyZXNzIGludG8gdGhlIGZsYXNoIGFycmF5LiBLZWVwIGluCisgKiAgICAgICAgICAgICAgIG1pbmQgdGhhdCB3aGVuIGEgcmVhZCBvciB3cml0ZSBpcyBkb25lIHRvIGEKKyAqICAgICAgICAgICAgICAgc3BlY2lmaWMgYWRkcmVzcywgdGhlIGFkZHJlc3MgaXMgaW5wdXQgc2VyaWFsbHkKKyAqICAgICAgICAgICAgICAgOCBiaXRzIGF0IGEgdGltZS4gVGhpcyBzdHJ1Y3R1cmUgbWVtYmVyIGlzIHVzZWQKKyAqICAgICAgICAgICAgICAgYnkgdGhlIHJlYWQvd3JpdGUgcm91dGluZXMgYXMgYSBsb29wIGluZGV4IGZvcgorICogICAgICAgICAgICAgICBzaGlmdGluZyB0aGUgYWRkcmVzcyBvdXQgOCBiaXRzIGF0IGEgdGltZS4KKyAqCisgKiAgZXJhc2VzaXplIC0gc2l6ZSBvZiBhbiBlcmFzZSBibG9jayBpbiB0aGUgZmxhc2ggZGV2aWNlLgorICovCitzdHJ1Y3QgbmFuZF9mbGFzaF9kZXYgeworCWNoYXIgKiBuYW1lOworCWludCBtYW51ZmFjdHVyZV9pZDsKKwlpbnQgbW9kZWxfaWQ7CisJaW50IGNoaXBzaGlmdDsKKwljaGFyIHBhZ2UyNTY7CisJY2hhciBwYWdlYWRybGVuOworCXVuc2lnbmVkIGxvbmcgZXJhc2VzaXplOworCWludCBidXMxNjsKK307CisKKy8qCisqIENvbnN0YW50cyBmb3Igb29iIGNvbmZpZ3VyYXRpb24KKyovCisjZGVmaW5lIE5BTkRfTk9PQl9FQ0NQT1MwCQkwCisjZGVmaW5lIE5BTkRfTk9PQl9FQ0NQT1MxCQkxCisjZGVmaW5lIE5BTkRfTk9PQl9FQ0NQT1MyCQkyCisjZGVmaW5lIE5BTkRfTk9PQl9FQ0NQT1MzCQkzCisjZGVmaW5lIE5BTkRfTk9PQl9FQ0NQT1M0CQk2CisjZGVmaW5lIE5BTkRfTk9PQl9FQ0NQT1M1CQk3CisjZGVmaW5lIE5BTkRfTk9PQl9CQURCUE9TCQktMQorI2RlZmluZSBOQU5EX05PT0JfRUNDVlBPUwkJLTEKKworI2RlZmluZSBOQU5EX0pGRlMyX09PQl9FQ0NQT1MwCQkwCisjZGVmaW5lIE5BTkRfSkZGUzJfT09CX0VDQ1BPUzEJCTEKKyNkZWZpbmUgTkFORF9KRkZTMl9PT0JfRUNDUE9TMgkJMgorI2RlZmluZSBOQU5EX0pGRlMyX09PQl9FQ0NQT1MzCQkzCisjZGVmaW5lIE5BTkRfSkZGUzJfT09CX0VDQ1BPUzQJCTYKKyNkZWZpbmUgTkFORF9KRkZTMl9PT0JfRUNDUE9TNQkJNworI2RlZmluZSBOQU5EX0pGRlMyX09PQl9CQURCUE9TCQk1CisjZGVmaW5lIE5BTkRfSkZGUzJfT09CX0VDQ1ZQT1MJCTQKKworI2RlZmluZSBOQU5EX0pGRlMyX09PQjhfRlNEQVBPUwkJNgorI2RlZmluZSBOQU5EX0pGRlMyX09PQjE2X0ZTREFQT1MJOAorI2RlZmluZSBOQU5EX0pGRlMyX09PQjhfRlNEQUxFTgkJMgorI2RlZmluZSBOQU5EX0pGRlMyX09PQjE2X0ZTREFMRU4JOAorCit1bnNpZ25lZCBsb25nIG5hbmRfcHJvYmUodW5zaWduZWQgbG9uZyBwaHlzYWRyKTsKKyNlbmRpZiAvKiBfX0xJTlVYX01URF9OQU5EX0xFR0FDWV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N0YXQuaCBiL2luY2x1ZGUvbGludXgvc3RhdC5oCmluZGV4IDJmN2EzYjMuLmY5NDIyY2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3RhdC5oCisrKyBiL2luY2x1ZGUvbGludXgvc3RhdC5oCkBAIC02Nyw3ICs2Nyw3IEBACiAKICNlbmRpZgkvKiBfX1BQQ19fICovCiAKLSNpZiBkZWZpbmVkIChfX0FSTV9fKSB8fCBkZWZpbmVkIChfX0kzODZfXykgfHwgZGVmaW5lZCAoX19NNjhLX18pCisjaWYgZGVmaW5lZCAoX19BUk1fXykgfHwgZGVmaW5lZCAoX19JMzg2X18pIHx8IGRlZmluZWQgKF9fTTY4S19fKSB8fCBkZWZpbmVkIChfX2JsYWNrZmluX18pCiAKIHN0cnVjdCBzdGF0IHsKIAl1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25hbmQuaCBiL2luY2x1ZGUvbmFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNTExNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25hbmQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA1CisgKiAyTiBUZWxla29tdW5pa2FjZSwgYS5zLiA8d3d3LjJuLmN6PgorICogTGFkaXNsYXYgTWljaGwgPG1pY2hsQDJuLmN6PgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX05BTkRfSF8KKyNkZWZpbmUgX05BTkRfSF8KKworI2luY2x1ZGUgPGxpbnV4L210ZC9jb21wYXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbXRkLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KKwordHlwZWRlZiBzdHJ1Y3QgbXRkX2luZm8gbmFuZF9pbmZvX3Q7CisKK2V4dGVybiBpbnQgbmFuZF9jdXJyX2RldmljZTsKK2V4dGVybiBuYW5kX2luZm9fdCBuYW5kX2luZm9bXTsKKworc3RhdGljIGlubGluZSBpbnQgbmFuZF9yZWFkKG5hbmRfaW5mb190ICppbmZvLCB1bG9uZyBvZnMsIHVsb25nICpsZW4sIHVfY2hhciAqYnVmKQoreworCXJldHVybiBpbmZvLT5yZWFkKGluZm8sIG9mcywgKmxlbiwgKHNpemVfdCAqKWxlbiwgYnVmKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgbmFuZF93cml0ZShuYW5kX2luZm9fdCAqaW5mbywgdWxvbmcgb2ZzLCB1bG9uZyAqbGVuLCB1X2NoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gaW5mby0+d3JpdGUoaW5mbywgb2ZzLCAqbGVuLCAoc2l6ZV90ICopbGVuLCBidWYpOworfQorCitzdGF0aWMgaW5saW5lIGludCBuYW5kX2Jsb2NrX2lzYmFkKG5hbmRfaW5mb190ICppbmZvLCB1bG9uZyBvZnMpCit7CisJcmV0dXJuIGluZm8tPmJsb2NrX2lzYmFkKGluZm8sIG9mcyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IG5hbmRfZXJhc2UobmFuZF9pbmZvX3QgKmluZm8sIHVsb25nIG9mZiwgdWxvbmcgc2l6ZSkKK3sKKwlzdHJ1Y3QgZXJhc2VfaW5mbyBpbnN0cjsKKworCWluc3RyLm10ZCA9IGluZm87CisJaW5zdHIuYWRkciA9IG9mZjsKKwlpbnN0ci5sZW4gPSBzaXplOworCWluc3RyLmNhbGxiYWNrID0gMDsKKworCXJldHVybiBpbmZvLT5lcmFzZShpbmZvLCAmaW5zdHIpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbnMxNjU1MC5oIGIvaW5jbHVkZS9uczE2NTUwLmgKaW5kZXggZTE3YTExZS4uZDk4N2E4YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uczE2NTUwLmgKKysrIGIvaW5jbHVkZS9uczE2NTUwLmgKQEAgLTQ1LDE1ICs0NSwxNSBAQAogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAjZWxpZiAoQ0ZHX05TMTY1NTBfUkVHX1NJWkUgPT0gNCkKIHN0cnVjdCBOUzE2NTUwIHsKLQl1bnNpZ25lZCBsb25nIHJicjsJCS8qIDAgKi8KLQl1bnNpZ25lZCBsb25nIGllcjsJCS8qIDEgKi8KLQl1bnNpZ25lZCBsb25nIGZjcjsJCS8qIDIgKi8KLQl1bnNpZ25lZCBsb25nIGxjcjsJCS8qIDMgKi8KLQl1bnNpZ25lZCBsb25nIG1jcjsJCS8qIDQgKi8KLQl1bnNpZ25lZCBsb25nIGxzcjsJCS8qIDUgKi8KLQl1bnNpZ25lZCBsb25nIG1zcjsJCS8qIDYgKi8KLQl1bnNpZ25lZCBsb25nIHNjcjsJCS8qIDcgKi8KLX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCXVuc2lnbmVkIGxvbmcgcmJyOwkJLyogMCByICAqLworCXVuc2lnbmVkIGxvbmcgaWVyOwkJLyogMSBydyAqLworCXVuc2lnbmVkIGxvbmcgZmNyOwkJLyogMiB3ICAqLworCXVuc2lnbmVkIGxvbmcgbGNyOwkJLyogMyBydyAqLworCXVuc2lnbmVkIGxvbmcgbWNyOwkJLyogNCBydyAqLworCXVuc2lnbmVkIGxvbmcgbHNyOwkJLyogNSByICAqLworCXVuc2lnbmVkIGxvbmcgbXNyOwkJLyogNiByICAqLworCXVuc2lnbmVkIGxvbmcgc2NyOwkJLyogNyBydyAqLworfTsgLyogTm8gbmVlZCB0byBwYWNrIGFuIGFscmVhZHkgYWxpZ25lZCBzdHJ1Y3QgKi8KICNlbGlmIChDRkdfTlMxNjU1MF9SRUdfU0laRSA9PSAtNCkKIHN0cnVjdCBOUzE2NTUwIHsKIAl1bnNpZ25lZCBjaGFyIHJicjsJCS8qIDAgKi8KQEAgLTEwMiw3ICsxMDIsNyBAQAogI2RlZmluZSBNQ1JfRE1BX0VOICAgICAgMHgwNAogI2RlZmluZSBNQ1JfVFhfREZSICAgICAgMHgwOAogCi0jZGVmaW5lIExDUl9XTFNfTVNLCTB4MDMJCS8qIGNoYXJhY3RlciBsZW5ndGggc2xlY3QgbWFzayAqLworI2RlZmluZSBMQ1JfV0xTX01TSwkweDAzCQkvKiBjaGFyYWN0ZXIgbGVuZ3RoIHNlbGVjdCBtYXNrICovCiAjZGVmaW5lIExDUl9XTFNfNQkweDAwCQkvKiA1IGJpdCBjaGFyYWN0ZXIgbGVuZ3RoICovCiAjZGVmaW5lIExDUl9XTFNfNgkweDAxCQkvKiA2IGJpdCBjaGFyYWN0ZXIgbGVuZ3RoICovCiAjZGVmaW5lIExDUl9XTFNfNwkweDAyCQkvKiA3IGJpdCBjaGFyYWN0ZXIgbGVuZ3RoICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3BjaS5oIGIvaW5jbHVkZS9wY2kuaAppbmRleCA4ZjE5OTk3Li4wZmMwMGU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3BjaS5oCisrKyBiL2luY2x1ZGUvcGNpLmgKQEAgLTMwOSw2ICszMDksNyBAQAogI2RlZmluZSBQQ0lfUkVHSU9OX01FTQkJMHgwMDAwMDAwMAkvKiBQQ0kgbWVtb3J5IHNwYWNlICovCiAjZGVmaW5lIFBDSV9SRUdJT05fSU8JCTB4MDAwMDAwMDEJLyogUENJIElPIHNwYWNlICovCiAjZGVmaW5lIFBDSV9SRUdJT05fVFlQRQkJMHgwMDAwMDAwMQorI2RlZmluZSBQQ0lfUkVHSU9OX1BSRUZFVENICTB4MDAwMDAwMDgJLyogcHJlZmV0Y2hhYmxlIFBDSSBtZW1vcnkgKi8KIAogI2RlZmluZSBQQ0lfUkVHSU9OX01FTU9SWQkweDAwMDAwMTAwCS8qIFN5c3RlbSBtZW1vcnkgKi8KICNkZWZpbmUgUENJX1JFR0lPTl9STwkJMHgwMDAwMDIwMAkvKiBSZWFkLW9ubHkgbWVtb3J5ICovCkBAIC0zNTEsOCArMzUyLDggQEAKIAl1bnNpZ25lZCBsb25nIHByaXZbM107CiB9OwogCi1leHRlcm4gdm9pZCBwY2lfY2ZnZnVuY19ub3RoaW5nKHN0cnVjdCBwY2lfY29udHJvbGxlciogaG9zZSwgcGNpX2Rldl90IGRldiwKLQkJCQlzdHJ1Y3QgcGNpX2NvbmZpZ190YWJsZSAqKTsKK2V4dGVybiB2b2lkIHBjaV9jZmdmdW5jX2RvX25vdGhpbmcoc3RydWN0IHBjaV9jb250cm9sbGVyKiBob3NlLCBwY2lfZGV2X3QgZGV2LAorCQkJCSAgIHN0cnVjdCBwY2lfY29uZmlnX3RhYmxlICopOwogZXh0ZXJuIHZvaWQgcGNpX2NmZ2Z1bmNfY29uZmlnX2RldmljZShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIqIGhvc2UsIHBjaV9kZXZfdCBkZXYsCiAJCQkJICAgICAgc3RydWN0IHBjaV9jb25maWdfdGFibGUgKik7CiAKQEAgLTM4Niw3ICszODcsNyBAQAogCWludCAoKndyaXRlX2R3b3JkKShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIqLCBwY2lfZGV2X3QsIGludCB3aGVyZSwgdTMyKTsKIAogCS8qIFVzZWQgYnkgYXV0byBjb25maWcgKi8KLQlzdHJ1Y3QgcGNpX3JlZ2lvbiAqcGNpX21lbSwgKnBjaV9pbzsKKwlzdHJ1Y3QgcGNpX3JlZ2lvbiAqcGNpX21lbSwgKnBjaV9pbywgKnBjaV9wcmVmZXRjaDsKIAogCS8qIFVzZWQgYnkgcHBjNDA1IGF1dG9jb25maWcqLwogCXN0cnVjdCBwY2lfcmVnaW9uICpwY2lfZmI7CkBAIC00NzIsNiArNDczLDcgQEAKIGV4dGVybiB2b2lkIHBjaWF1dG9fc2V0dXBfZGV2aWNlKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwKIAkJCQkgcGNpX2Rldl90IGRldiwgaW50IGJhcnNfbnVtLAogCQkJCSBzdHJ1Y3QgcGNpX3JlZ2lvbiAqbWVtLAorCQkJCSBzdHJ1Y3QgcGNpX3JlZ2lvbiAqcHJlZmV0Y2gsCiAJCQkJIHN0cnVjdCBwY2lfcmVnaW9uICppbyk7CiBpbnQgcGNpYXV0b19jb25maWdfZGV2aWNlKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgcGNpX2Rldl90IGRldik7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvcGNpX2lkcy5oIGIvaW5jbHVkZS9wY2lfaWRzLmgKaW5kZXggN2RlYzM3OC4uOGNjM2VjMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9wY2lfaWRzLmgKKysrIGIvaW5jbHVkZS9wY2lfaWRzLmgKQEAgLTUxMCw2ICs1MTAsNyBAQAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0NUXzY1NTU0CQkweDAwZTQKICNkZWZpbmUgUENJX0RFVklDRV9JRF9DVF82NTU1NQkJMHgwMGU1CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfQ1RfNjkwMDAJCTB4MDBjMAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0NUXzY5MDMwCQkweDBjMzAKIAogI2RlZmluZSBQQ0lfVkVORE9SX0lEX01JUk8JCTB4MTAzMQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX01JUk9fMzYwNTAJMHg1NjAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL3ZlcnNpb24uaCBiL2luY2x1ZGUvdmVyc2lvbi5oCmluZGV4IDRmOGI0OTguLmI1NmQyZTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdmVyc2lvbi5oCisrKyBiL2luY2x1ZGUvdmVyc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDAzCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNgogICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwpAQCAtMjQsNiArMjQsNiBAQAogI2lmbmRlZglfX1ZFUlNJT05fSF9fCiAjZGVmaW5lCV9fVkVSU0lPTl9IX18KIAotI2RlZmluZQlVX0JPT1RfVkVSU0lPTgkiVS1Cb290IDEuMS40IgorI2luY2x1ZGUgInZlcnNpb25fYXV0b2dlbmVyYXRlZC5oIgogCiAjZW5kaWYJLyogX19WRVJTSU9OX0hfXyAqLwpkaWZmIC0tZ2l0IGEvbGliX2FybS9hcm1saW51eC5jIGIvbGliX2FybS9hcm1saW51eC5jCmluZGV4IGNhNjMwYjMuLmRiYTJmZjcgMTAwNjQ0Ci0tLSBhL2xpYl9hcm0vYXJtbGludXguYworKysgYi9saWJfYXJtL2FybWxpbnV4LmMKQEAgLTEyNCw3ICsxMjQsNyBAQAogCQljaGVja3N1bSA9IG50b2hsIChoZHItPmloX2hjcmMpOwogCQloZHItPmloX2hjcmMgPSAwOwogCi0JCWlmIChjcmMzMiAoMCwgKGNoYXIgKikgZGF0YSwgbGVuKSAhPSBjaGVja3N1bSkgeworCQlpZiAoY3JjMzIgKDAsICh1bnNpZ25lZCBjaGFyICopIGRhdGEsIGxlbikgIT0gY2hlY2tzdW0pIHsKIAkJCXByaW50ZiAoIkJhZCBIZWFkZXIgQ2hlY2tzdW1cbiIpOwogCQkJU0hPV19CT09UX1BST0dSRVNTICgtMTEpOwogCQkJZG9fcmVzZXQgKGNtZHRwLCBmbGFnLCBhcmdjLCBhcmd2KTsKQEAgLTE0OCw3ICsxNDgsNyBAQAogCQkJdWxvbmcgY3N1bSA9IDA7CiAKIAkJCXByaW50ZiAoIiAgIFZlcmlmeWluZyBDaGVja3N1bSAuLi4gIik7Ci0JCQljc3VtID0gY3JjMzIgKDAsIChjaGFyICopIGRhdGEsIGxlbik7CisJCQljc3VtID0gY3JjMzIgKDAsICh1bnNpZ25lZCBjaGFyICopIGRhdGEsIGxlbik7CiAJCQlpZiAoY3N1bSAhPSBudG9obCAoaGRyLT5paF9kY3JjKSkgewogCQkJCXByaW50ZiAoIkJhZCBEYXRhIENSQ1xuIik7CiAJCQkJU0hPV19CT09UX1BST0dSRVNTICgtMTIpOwpkaWZmIC0tZ2l0IGEvbGliX2FybS9ib2FyZC5jIGIvbGliX2FybS9ib2FyZC5jCmluZGV4IGZhM2M5MmUuLjEwMjhiMDQgMTAwNjQ0Ci0tLSBhL2xpYl9hcm0vYm9hcmQuYworKysgYi9saWJfYXJtL2JvYXJkLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogKEMpIENvcHlyaWdodCAyMDAyCisgKiAoQykgQ29weXJpZ2h0IDIwMDItMjAwNgogICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKQEAgLTI1LDYgKzI1LDE5IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKKy8qCisgKiBUbyBtYXRjaCB0aGUgVS1Cb290IHVzZXIgaW50ZXJmYWNlIG9uIEFSTSBwbGF0Zm9ybXMgdG8gdGhlIFUtQm9vdAorICogc3RhbmRhcmQgKGFzIG9uIFBQQyBwbGF0Zm9ybXMpLCBzb21lIG1lc3NhZ2VzIHdpdGggZGVidWcgY2hhcmFjdGVyCisgKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBkZWZhdWx0IFUtQm9vdCBidWlsZC4KKyAqCisgKiBEZWZpbmUgREVCVUcgaGVyZSBpZiB5b3Ugd2FudCBhZGRpdGlvbmFsIGluZm8gYXMgc2hvd24gYmVsb3cKKyAqIHByaW50ZWQgdXBvbiBzdGFydHVwOgorICoKKyAqIFUtQm9vdCBjb2RlOiAwMEYwMDAwMCAtPiAwMEYzQzc3NCAgQlNTOiAtPiAwMEZDMzI3NAorICogSVJRIFN0YWNrOiAwMGViZmY3YworICogRklRIFN0YWNrOiAwMGViZWY3YworICovCisKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxjb21tYW5kLmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+CkBAIC0zOSw2ICs1Miw4IEBACiAjaW5jbHVkZSAiLi4vZHJpdmVycy9sYW45MWM5Ni5oIgogI2VuZGlmCiAKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCiAjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkFORCkKIHZvaWQgbmFuZF9pbml0ICh2b2lkKTsKICNlbmRpZgpAQCAtMTA2LDkgKzEyMSw3IEBACiAKIHN0YXRpYyBpbnQgaW5pdF9iYXVkcmF0ZSAodm9pZCkKIHsKLQlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKLQotCXVjaGFyIHRtcFs2NF07CS8qIGxvbmcgZW5vdWdoIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKi8KKwljaGFyIHRtcFs2NF07CS8qIGxvbmcgZW5vdWdoIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKi8KIAlpbnQgaSA9IGdldGVudl9yICgiYmF1ZHJhdGUiLCB0bXAsIHNpemVvZiAodG1wKSk7CiAJZ2QtPmJkLT5iaV9iYXVkcmF0ZSA9IGdkLT5iYXVkcmF0ZSA9IChpID4gMCkKIAkJCT8gKGludCkgc2ltcGxlX3N0cnRvdWwgKHRtcCwgTlVMTCwgMTApCkBAIC0xMjAsMTQgKzEzMywxNCBAQAogc3RhdGljIGludCBkaXNwbGF5X2Jhbm5lciAodm9pZCkKIHsKIAlwcmludGYgKCJcblxuJXNcblxuIiwgdmVyc2lvbl9zdHJpbmcpOwotCXByaW50ZiAoIlUtQm9vdCBjb2RlOiAlMDhsWCAtPiAlMDhsWCAgQlNTOiAtPiAlMDhsWFxuIiwKLQkJX2FybWJvb3Rfc3RhcnQsIF9ic3Nfc3RhcnQsIF9ic3NfZW5kKTsKKwlkZWJ1ZyAoIlUtQm9vdCBjb2RlOiAlMDhsWCAtPiAlMDhsWCAgQlNTOiAtPiAlMDhsWFxuIiwKKwkgICAgICAgX2FybWJvb3Rfc3RhcnQsIF9ic3Nfc3RhcnQsIF9ic3NfZW5kKTsKICNpZmRlZiBDT05GSUdfTU9ERU1fU1VQUE9SVAotCXB1dHMgKCJNb2RlbSBTdXBwb3J0IGVuYWJsZWRcbiIpOworCWRlYnVnICgiTW9kZW0gU3VwcG9ydCBlbmFibGVkXG4iKTsKICNlbmRpZgogI2lmZGVmIENPTkZJR19VU0VfSVJRCi0JcHJpbnRmICgiSVJRIFN0YWNrOiAlMDhseFxuIiwgSVJRX1NUQUNLX1NUQVJUKTsKLQlwcmludGYgKCJGSVEgU3RhY2s6ICUwOGx4XG4iLCBGSVFfU1RBQ0tfU1RBUlQpOworCWRlYnVnICgiSVJRIFN0YWNrOiAlMDhseFxuIiwgSVJRX1NUQUNLX1NUQVJUKTsKKwlkZWJ1ZyAoIkZJUSBTdGFjazogJTA4bHhcbiIsIEZJUV9TVEFDS19TVEFSVCk7CiAjZW5kaWYKIAogCXJldHVybiAoMCk7CkBAIC0xNDIsMjQgKzE1NSwzNSBAQAogICovCiBzdGF0aWMgaW50IGRpc3BsYXlfZHJhbV9jb25maWcgKHZvaWQpCiB7Ci0JREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CiAJaW50IGk7CiAKKyNpZmRlZiBERUJVRwogCXB1dHMgKCJSQU0gQ29uZmlndXJhdGlvbjpcbiIpOwogCiAJZm9yKGk9MDsgaTxDT05GSUdfTlJfRFJBTV9CQU5LUzsgaSsrKSB7CiAJCXByaW50ZiAoIkJhbmsgIyVkOiAlMDhseCAiLCBpLCBnZC0+YmQtPmJpX2RyYW1baV0uc3RhcnQpOwogCQlwcmludF9zaXplIChnZC0+YmQtPmJpX2RyYW1baV0uc2l6ZSwgIlxuIik7CiAJfQorI2Vsc2UKKwl1bG9uZyBzaXplID0gMDsKKworCWZvciAoaT0wOyBpPENPTkZJR19OUl9EUkFNX0JBTktTOyBpKyspIHsKKwkJc2l6ZSArPSBnZC0+YmQtPmJpX2RyYW1baV0uc2l6ZTsKKwl9CisJcHV0cygiRFJBTTogICIpOworCXByaW50X3NpemUoc2l6ZSwgIlxuIik7CisjZW5kaWYKIAogCXJldHVybiAoMCk7CiB9CiAKKyNpZm5kZWYgQ0ZHX05PX0ZMQVNICiBzdGF0aWMgdm9pZCBkaXNwbGF5X2ZsYXNoX2NvbmZpZyAodWxvbmcgc2l6ZSkKIHsKIAlwdXRzICgiRmxhc2g6ICIpOwogCXByaW50X3NpemUgKHNpemUsICJcbiIpOwogfQorI2VuZGlmIC8qIENGR19OT19GTEFTSCAqLwogCiAKIC8qCkBAIC0xODcsNiArMjExLDggQEAKICAqLwogdHlwZWRlZiBpbnQgKGluaXRfZm5jX3QpICh2b2lkKTsKIAoraW50IHByaW50X2NwdWluZm8gKHZvaWQpOyAvKiB0ZXN0LW9ubHkgKi8KKwogaW5pdF9mbmNfdCAqaW5pdF9zZXF1ZW5jZVtdID0gewogCWNwdV9pbml0LAkJLyogYmFzaWMgY3B1IGRlcGVuZGVudCBzZXR1cCAqLwogCWJvYXJkX2luaXQsCQkvKiBiYXNpYyBib2FyZCBkZXBlbmRlbnQgc2V0dXAgKi8KQEAgLTE5NiwyMSArMjIyLDI0IEBACiAJc2VyaWFsX2luaXQsCQkvKiBzZXJpYWwgY29tbXVuaWNhdGlvbnMgc2V0dXAgKi8KIAljb25zb2xlX2luaXRfZiwJCS8qIHN0YWdlIDEgaW5pdCBvZiBjb25zb2xlICovCiAJZGlzcGxheV9iYW5uZXIsCQkvKiBzYXkgdGhhdCB3ZSBhcmUgaGVyZSAqLworI2lmIGRlZmluZWQoQ09ORklHX0RJU1BMQVlfQ1BVSU5GTykKKwlwcmludF9jcHVpbmZvLAkJLyogZGlzcGxheSBjcHUgaW5mbyAoYW5kIHNwZWVkKSAqLworI2VuZGlmCisjaWYgZGVmaW5lZChDT05GSUdfRElTUExBWV9CT0FSRElORk8pCisJY2hlY2tib2FyZCwJCS8qIGRpc3BsYXkgYm9hcmQgaW5mbyAqLworI2VuZGlmCiAJZHJhbV9pbml0LAkJLyogY29uZmlndXJlIGF2YWlsYWJsZSBSQU0gYmFua3MgKi8KIAlkaXNwbGF5X2RyYW1fY29uZmlnLAotI2lmIGRlZmluZWQoQ09ORklHX1ZDTUE5KSB8fCBkZWZpbmVkIChDT05GSUdfQ01DX1BVMikKLQljaGVja2JvYXJkLAotI2VuZGlmCiAJTlVMTCwKIH07CiAKIHZvaWQgc3RhcnRfYXJtYm9vdCAodm9pZCkKIHsKLQlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKLQotCXVsb25nIHNpemU7CiAJaW5pdF9mbmNfdCAqKmluaXRfZm5jX3B0cjsKIAljaGFyICpzOworI2lmbmRlZiBDRkdfTk9fRkxBU0gKKwl1bG9uZyBzaXplOworI2VuZGlmCiAjaWYgZGVmaW5lZChDT05GSUdfVkZEKSB8fCBkZWZpbmVkKENPTkZJR19MQ0QpCiAJdW5zaWduZWQgbG9uZyBhZGRyOwogI2VuZGlmCkBAIC0yMzIsOSArMjYxLDExIEBACiAJCX0KIAl9CiAKKyNpZm5kZWYgQ0ZHX05PX0ZMQVNICiAJLyogY29uZmlndXJlIGF2YWlsYWJsZSBGTEFTSCBiYW5rcyAqLwogCXNpemUgPSBmbGFzaF9pbml0ICgpOwogCWRpc3BsYXlfZmxhc2hfY29uZmlnIChzaXplKTsKKyNlbmRpZiAvKiBDRkdfTk9fRkxBU0ggKi8KIAogI2lmZGVmIENPTkZJR19WRkQKICMJaWZuZGVmIFBBR0VfU0laRQpAQCAtMjkxLDcgKzMyMiw3IEBACiAJCWludCBpOwogCQl1bG9uZyByZWc7CiAJCWNoYXIgKnMsICplOwotCQl1Y2hhciB0bXBbNjRdOworCQljaGFyIHRtcFs2NF07CiAKIAkJaSA9IGdldGVudl9yICgiZXRoYWRkciIsIHRtcCwgc2l6ZW9mICh0bXApKTsKIAkJcyA9IChpID4gMCkgPyB0bXAgOiBOVUxMOwpAQCAtMzAxLDYgKzMzMiwxNyBAQAogCQkJaWYgKHMpCiAJCQkJcyA9ICgqZSkgPyBlICsgMSA6IGU7CiAJCX0KKworI2lmZGVmIENPTkZJR19IQVNfRVRIMQorCQlpID0gZ2V0ZW52X3IgKCJldGgxYWRkciIsIHRtcCwgc2l6ZW9mICh0bXApKTsKKwkJcyA9IChpID4gMCkgPyB0bXAgOiBOVUxMOworCisJCWZvciAocmVnID0gMDsgcmVnIDwgNjsgKytyZWcpIHsKKwkJCWdkLT5iZC0+YmlfZW5ldDFhZGRyW3JlZ10gPSBzID8gc2ltcGxlX3N0cnRvdWwgKHMsICZlLCAxNikgOiAwOworCQkJaWYgKHMpCisJCQkJcyA9ICgqZSkgPyBlICsgMSA6IGU7CisJCX0KKyNlbmRpZgogCX0KIAogCWRldmljZXNfaW5pdCAoKTsJLyogZ2V0IHRoZSBkZXZpY2VzIGxpc3QgZ29pbmcuICovCkBAIC0zNjYsNiArNDA4LDggQEAKIH0KIAogI2lmZGVmIENPTkZJR19NT0RFTV9TVVBQT1JUCitzdGF0aWMgaW5saW5lIHZvaWQgbWRtX3JlYWRsaW5lKGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpeik7CisKIC8qIGNhbGxlZCBmcm9tIG1haW4gbG9vcCAoY29tbW9uL21haW4uYykgKi8KIGV4dGVybiB2b2lkICBkYmcoY29uc3QgY2hhciAqZm10LCAuLi4pOwogaW50IG1kbV9pbml0ICh2b2lkKQpAQCAtMzc0LDcgKzQxOCw2IEBACiAJY2hhciAqaW5pdF9zdHI7CiAJaW50IGk7CiAJZXh0ZXJuIGNoYXIgY29uc29sZV9idWZmZXJbXTsKLQlzdGF0aWMgaW5saW5lIHZvaWQgbWRtX3JlYWRsaW5lKGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpeik7CiAJZXh0ZXJuIHZvaWQgZW5hYmxlX3B1dGModm9pZCk7CiAJZXh0ZXJuIGludCBod2Zsb3dfb25vZmYoaW50KTsKIApkaWZmIC0tZ2l0IGEvbGliX2JsYWNrZmluL01ha2VmaWxlIGIvbGliX2JsYWNrZmluL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMjgwZDAKLS0tIC9kZXYvbnVsbAorKysgYi9saWJfYmxhY2tmaW4vTWFrZWZpbGUKQEAgLTAsMCArMSw0NyBAQAorIworIyBVLWJvb3QgTWFrZWZpbGUKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisjCisjIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisjIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworCitMSUIJPSBsaWIkKEFSQ0gpLmEKKworQU9CSlMJPQorCitDT0JKUwk9IGJvYXJkLm8gYmY1MzNfbGludXgubyBiZjUzM19zdHJpbmcubyBjYWNoZS5vIG11bGRpMy5vCitPQkpTCT0gJChBT0JKUykgJChDT0JKUykKKworJChMSUIpOgkuZGVwZW5kICQoT0JKUykKKwkkKEFSKSBjcnYgJEAgJChPQkpTKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKy5kZXBlbmQ6CU1ha2VmaWxlICQoQU9CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCisJCSQoQ0MpIC1NICQoQ0ZMQUdTKSAkKEFPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKSA+ICRACisKK3NpbmNsdWRlIC5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvbGliX2JsYWNrZmluL2JmNTMzX2xpbnV4LmMgYi9saWJfYmxhY2tmaW4vYmY1MzNfbGludXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGI0ZGEyCi0tLSAvZGV2L251bGwKKysrIGIvbGliX2JsYWNrZmluL2JmNTMzX2xpbnV4LmMKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIFUtYm9vdCAtIGJmNTMzX2xpbnV4LmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKiBEdW1teSBmdW5jdGlvbnMsIGN1cnJlbnRseSBub3QgaW4gVXNlICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8aW1hZ2UuaD4KKyNpbmNsdWRlIDx6bGliLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorCisjZGVmaW5lCUxJTlVYX01BWF9FTlZTCQkyNTYKKyNkZWZpbmUJTElOVVhfTUFYX0FSR1MJCTI1NgorCisjaWZkZWYgQ09ORklHX1NIT1dfQk9PVF9QUk9HUkVTUworI2luY2x1ZGUgPHN0YXR1c19sZWQuaD4KKyNkZWZpbmUgU0hPV19CT09UX1BST0dSRVNTKGFyZykJc2hvd19ib290X3Byb2dyZXNzKGFyZykKKyNlbHNlCisjZGVmaW5lIFNIT1dfQk9PVF9QUk9HUkVTUyhhcmcpCisjZW5kaWYKKworI2RlZmluZSBDTURfTElORV9BRERSIDB4RkY5MDAwMDAgIC8qIEwxIHNjcmF0Y2hwYWQgKi8KKworI2lmZGVmIFNIQVJFRF9SRVNPVVJDRVMKKwlleHRlcm4gdm9pZCBzd2FwX3RvKGludCBkZXZpY2VfaWQpOworI2VuZGlmCisKK3N0YXRpYyBjaGFyICptYWtlX2NvbW1hbmRfbGluZSh2b2lkKTsKKworZXh0ZXJuIGltYWdlX2hlYWRlcl90IGhlYWRlcjsKK2V4dGVybiBpbnQgZG9fcmVzZXQoY21kX3RibF90ICogY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKTsKK3ZvaWQgZG9fYm9vdG1fbGludXgoY21kX3RibF90ICogY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdLAorCQkgICAgdWxvbmcgYWRkciwgdWxvbmcgKiBsZW5fcHRyLCBpbnQgdmVyaWZ5KQoreworCWludCAoKmFwcGwpKGNoYXIgKmNtZGxpbmUpOworCWNoYXIgKmNtZGxpbmU7CisKKyNpZmRlZiBTSEFSRURfUkVTT1VSQ0VTCisJc3dhcF90byhGTEFTSCk7CisjZW5kaWYKKworCWFwcGwgPSAoaW50ICgqKShjaGFyICopKW50b2hsKGhlYWRlci5paF9lcCk7CisJcHJpbnRmKCJTdGFydGluZyBLZXJuZWwgYXQgPSAleFxuIiwgYXBwbCk7CisJY21kbGluZSA9IG1ha2VfY29tbWFuZF9saW5lKCk7CisJaWYoaWNhY2hlX3N0YXR1cygpKXsKKwkJZmx1c2hfaW5zdHJ1Y3Rpb25fY2FjaGUoKTsKKwkJaWNhY2hlX2Rpc2FibGUoKTsKKwkJfQorCWlmKGRjYWNoZV9zdGF0dXMoKSl7CisJCWZsdXNoX2RhdGFfY2FjaGUoKTsKKwkJZGNhY2hlX2Rpc2FibGUoKTsKKwkJfQorCSgqYXBwbCkoY21kbGluZSk7Cit9CisKK2NoYXIgKm1ha2VfY29tbWFuZF9saW5lKHZvaWQpCit7CisgICAgY2hhciAqZGVzdCA9IChjaGFyICopIENNRF9MSU5FX0FERFI7CisgICAgY2hhciAqYm9vdGFyZ3M7CisKKyAgICBpZiAoIChib290YXJncyA9IGdldGVudigiYm9vdGFyZ3MiKSkgPT0gTlVMTCApCisJcmV0dXJuIE5VTEw7CisKKyAgICBzdHJuY3B5KGRlc3QsIGJvb3RhcmdzLCAweDEwMDApOworICAgIGRlc3RbMHhmZmZdID0gMDsKKyAgICByZXR1cm4gZGVzdDsKK30KZGlmZiAtLWdpdCBhL2xpYl9ibGFja2Zpbi9iZjUzM19zdHJpbmcuYyBiL2xpYl9ibGFja2Zpbi9iZjUzM19zdHJpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGIxYTNhCi0tLSAvZGV2L251bGwKKysrIGIvbGliX2JsYWNrZmluL2JmNTMzX3N0cmluZy5jCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogVS1ib290IC0gYmY1MzNfc3RyaW5nLmMgQ29udGFpbnMgbGlicmFyeSByb3V0aW5lcy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL3NldHVwLmg+CisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxhc20vY3B1L2RlZkJGNTMzLmg+CisKK3ZvaWQgKmRtYV9tZW1jcHkodm9pZCAqLGNvbnN0IHZvaWQgKixzaXplX3QpOworCitjaGFyICpzdHJjcHkoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKQoreworCWNoYXIgKnhkZXN0ID0gZGVzdDsKKwljaGFyIHRlbXAgPSAwOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18KKwkJKCIxOlx0JTIgPSBCIFslMSsrXSAoWik7XG5cdCIKKwkJIkIgWyUwKytdID0gJTI7XG5cdCIKKwkJIkNDID0gJTI7XG5cdCIKKwkJImlmIGNjIGp1bXAgMWIgKGJwKTtcbiI6Ij1hIihkZXN0KSwgIj1hIihzcmMpLCAiPWQiKHRlbXApCisJCToiMCIoZGVzdCksICIxIihzcmMpLCAiMiIodGVtcCk6Im1lbW9yeSIpOworCisJcmV0dXJuIHhkZXN0OworfQorCitjaGFyICpzdHJuY3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IG4pCit7CisJY2hhciAqeGRlc3QgPSBkZXN0OworCWNoYXIgdGVtcCA9IDA7CisKKwlpZiAobiA9PSAwKQorCQlyZXR1cm4geGRlc3Q7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXworCQkoIjE6XHQlMyA9IEIgWyUxKytdIChaKTtcblx0IgorCQkiQiBbJTArK10gPSAlMztcblx0IgorCQkiQ0MgPSAlMztcblx0IgorCQkiaWYgISBjYyBqdW1wIDJmO1xuXHQiCisJCSIlMiArPSAtMTtcblx0IgorCQkiQ0MgPSAlMiA9PSAwO1xuXHQiCisJCSJpZiAhIGNjIGp1bXAgMWIgKGJwKTtcbiIKKwkJIjI6XG4iOiI9YSIoZGVzdCksICI9YSIoc3JjKSwgIj1kYSIobiksICI9ZCIodGVtcCkKKwkJOiIwIihkZXN0KSwgIjEiKHNyYyksICIyIihuKSwgIjMiKHRlbXApCisJCToibWVtb3J5Iik7CisKKwlyZXR1cm4geGRlc3Q7Cit9CisKK2ludCBzdHJjbXAoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0KQoreworCWNoYXIgX19yZXMxLCBfX3JlczI7CisKKwlfX2FzbV9fCisJCSgiMTpcdCUyID0gQlslMCsrXSAoWik7XG5cdCIJLyogZ2V0ICpjcyAqLworCQkiJTMgPSBCWyUxKytdIChaKTtcblx0IgkJLyogZ2V0ICpjdCAqLworCQkiQ0MgPSAlMiA9PSAlMztcblx0IgkJLyogY29tcGFyZSBhIGJ5dGUgKi8KKwkJImlmICEgY2MganVtcCAyZjtcblx0IgkJLyogbm90IGVxdWFsLCBicmVhayBvdXQgKi8KKwkJIkNDID0gJTI7XG5cdCIJCQkvKiBhdCBlbmQgb2YgY3M/ICovCisJCSJpZiBjYyBqdW1wIDFiIChicCk7XG5cdCIJLyogbm8sIGtlZXAgZ29pbmcgKi8KKwkJImp1bXAucyAzZjtcbiIJCQkvKiBzdHJpbmdzIGFyZSBlcXVhbCAqLworCQkiMjpcdCUyID0gJTIgLSAlMztcbiIJCS8qICpjcyAtICpjdCAqLworCQkiMzpcbiI6CSI9YSIoY3MpLCAiPWEiKGN0KSwgIj1kIihfX3JlczEpLAorCQkiPWQiKF9fcmVzMikKKwkJOiAiMCIoY3MpLCAiMSIoY3QpKTsKKworCXJldHVybiBfX3JlczE7Cit9CisKK2ludCBzdHJuY21wKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCwgc2l6ZV90IGNvdW50KQoreworCWNoYXIgX19yZXMxLCBfX3JlczI7CisKKwlpZiAoIWNvdW50KQorCQlyZXR1cm4gMDsKKworCV9fYXNtX18KKwkJKCIxOlx0JTMgPSBCWyUwKytdIChaKTtcblx0IgkvKiBnZXQgKmNzICovCisJCSIlNCA9IEJbJTErK10gKFopO1xuXHQiCQkvKiBnZXQgKmN0ICovCisJCSJDQyA9ICUzID09ICU0O1xuXHQiCQkvKiBjb21wYXJlIGEgYnl0ZSAqLworCQkiaWYgISBjYyBqdW1wIDNmO1xuXHQiCQkvKiBub3QgZXF1YWwsIGJyZWFrIG91dCAqLworCQkiQ0MgPSAlMztcblx0IgkJCS8qIGF0IGVuZCBvZiBjcz8gKi8KKwkJImlmICEgY2MganVtcCA0Zjtcblx0IgkJLyogeWVzLCBhbGwgZG9uZSAqLworCQkiJTIgKz0gLTE7XG5cdCIJCQkvKiBubywgYWRqdXN0IGNvdW50ICovCisJCSJDQyA9ICUyID09IDA7XG5cdCIgImlmICEgY2MganVtcCAxYjtcbiIJLyogbW9yZSB0byBkbywga2VlcCBnb2luZyAqLworCQkiMjpcdCUzID0gMDtcblx0IgkJLyogc3RyaW5ncyBhcmUgZXF1YWwgKi8KKwkJImp1bXAucyAgICA0ZjtcbiIgIjM6XHQlMyA9ICUzIC0gJTQ7XG4iCS8qICpjcyAtICpjdCAqLworIAkJIjQ6IjoJIj1hIihjcyksICI9YSIoY3QpLCAiPWRhIihjb3VudCksICI9ZCIoX19yZXMxKSwKKwkJIj1kIihfX3JlczIpCisJCTogIjAiKGNzKSwgIjEiKGN0KSwgIjIiKGNvdW50KSk7CisKKwlyZXR1cm4gX19yZXMxOworfQorCisvKgorICogbWVtY3B5IC0gQ29weSBvbmUgYXJlYSBvZiBtZW1vcnkgdG8gYW5vdGhlcgorICogQGRlc3Q6IFdoZXJlIHRvIGNvcHkgdG8KKyAqIEBzcmM6IFdoZXJlIHRvIGNvcHkgZnJvbQorICogQGNvdW50OiBUaGUgc2l6ZSBvZiB0aGUgYXJlYS4KKyAqCisgKiBZb3Ugc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbiB0byBhY2Nlc3MgSU8gc3BhY2UsIHVzZSBtZW1jcHlfdG9pbygpCisgKiBvciBtZW1jcHlfZnJvbWlvKCkgaW5zdGVhZC4KKyAqLwordm9pZCAqIG1lbWNweSh2b2lkICogZGVzdCxjb25zdCB2b2lkICpzcmMsc2l6ZV90IGNvdW50KQoreworCWNoYXIgKnRtcCA9IChjaGFyICopIGRlc3QsICpzID0gKGNoYXIgKikgc3JjOworCisvKiBUdXJuIG9mZiB0aGUgY2FjaGUsIGlmIGRlc3RpbmF0aW9uIGluIHRoZSBMMSBtZW1vcnkgKi8KKwlpZiAoICh0bXAgPj0gKGNoYXIgKilMMV9JU1JBTSkgJiYgKHRtcCA8IChjaGFyICopTDFfSVNSQU1fRU5EKQorCQl8fCAodG1wID49IChjaGFyICopREFUQV9CQU5LQV9TUkFNKSAmJiAodG1wIDwgREFUQV9CQU5LQV9TUkFNX0VORCkKKwkgICAgfHwgKHRtcCA+PSAoY2hhciAqKURBVEFfQkFOS0JfU1JBTSkgJiYgKHRtcCA8IERBVEFfQkFOS0JfU1JBTV9FTkQpICl7CisJCQlpZihpY2FjaGVfc3RhdHVzKCkpeworCQkJCQlibGFja2Zpbl9pY2FjaGVfZmx1c2hfcmFuZ2Uoc3JjLCBzcmMrY291bnQpOworCQkJCQlpY2FjaGVfZGlzYWJsZSgpOworCQkJfQorCQkJaWYoZGNhY2hlX3N0YXR1cygpKXsKKwkJCQkJYmxhY2tmaW5fZGNhY2hlX2ZsdXNoX3JhbmdlKHNyYywgc3JjK2NvdW50KTsKKwkJCQkJZGNhY2hlX2Rpc2FibGUoKTsKKwkJCX0KKwkJCWRtYV9tZW1jcHkoZGVzdCxzcmMsY291bnQpOworCX1lbHNleworCQl3aGlsZShjb3VudC0tKQorCQkJKnRtcCsrID0gKnMrKzsKKwl9CisJcmV0dXJuIGRlc3Q7Cit9CisKK3ZvaWQgKmRtYV9tZW1jcHkodm9pZCAqIGRlc3QsY29uc3Qgdm9pZCAqc3JjLHNpemVfdCBjb3VudCkKK3sKKworCQkqcE1ETUFfRDBfSVJRX1NUQVRVUyA9IERNQV9ET05FIHwgRE1BX0VSUjsKKworCQkvKiBDb3B5IHNyYW0gZnVuY3Rpb25zIGZyb20gc2RyYW0gdG8gc3JhbSAqLworCQkvKiBTZXR1cCBkZXN0aW5hdGlvbiBzdGFydCBhZGRyZXNzICovCisJCSpwTURNQV9EMF9TVEFSVF9BRERSID0gKHZvbGF0aWxlIHZvaWQgKiopZGVzdDsKKwkJLyogU2V0dXAgZGVzdGluYXRpb24geGNvdW50ICovCisJCSpwTURNQV9EMF9YX0NPVU5UID0gY291bnQgOworCQkvKiBTZXR1cCBkZXN0aW5hdGlvbiB4bW9kaWZ5ICovCisJCSpwTURNQV9EMF9YX01PRElGWSA9IDE7CisKKwkJLyogU2V0dXAgU291cmNlIHN0YXJ0IGFkZHJlc3MgKi8KKwkJKnBNRE1BX1MwX1NUQVJUX0FERFIgPSAodm9sYXRpbGUgdm9pZCAqKilzcmM7CisJCS8qIFNldHVwIFNvdXJjZSB4Y291bnQgKi8KKwkJKnBNRE1BX1MwX1hfQ09VTlQgPSBjb3VudDsKKwkJLyogU2V0dXAgU291cmNlIHhtb2RpZnkgKi8KKwkJKnBNRE1BX1MwX1hfTU9ESUZZID0gMTsKKworCQkvKiBFbmFibGUgc291cmNlIERNQSAqLworCQkqcE1ETUFfUzBfQ09ORklHID0gKERNQUVOKTsKKwkJYXNtKCJzc3luYzsiKTsKKworCQkqcE1ETUFfRDBfQ09ORklHID0gKCBXTlIgfCBETUFFTik7CisKKwkJd2hpbGUoKnBNRE1BX0QwX0lSUV9TVEFUVVMgJiBETUFfUlVOKXsKKwkJCSpwTURNQV9EMF9JUlFfU1RBVFVTIHw9IChETUFfRE9ORSB8IERNQV9FUlIpOworCQl9CisJCSpwTURNQV9EMF9JUlFfU1RBVFVTIHw9IChETUFfRE9ORSB8IERNQV9FUlIpOworCisJCWRlc3QgKz0gY291bnQ7CisJCXNyYyAgKz0gY291bnQ7CisJCXJldHVybiBkZXN0OworfQpkaWZmIC0tZ2l0IGEvbGliX2JsYWNrZmluL2JsYWNrZmluX2JvYXJkLmggYi9saWJfYmxhY2tmaW4vYmxhY2tmaW5fYm9hcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWMxNmEyCi0tLSAvZGV2L251bGwKKysrIGIvbGliX2JsYWNrZmluL2JsYWNrZmluX2JvYXJkLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIFUtYm9vdCAtIGJsYWNrZmluX2JvYXJkLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQkxBQ0tGSU5fQk9BUkRfSF9fCisjZGVmaW5lIF9fQkxBQ0tGSU5fQk9BUkRfSF9fCisKK2V4dGVybiB2b2lkIHRpbWVyX2luaXQodm9pZCk7CitleHRlcm4gdm9pZCBpbml0X0lSUSh2b2lkKTsKK2V4dGVybiB2b2lkIHJ0Y19pbml0KHZvaWQpOworCitleHRlcm4gdWxvbmcgdWJvb3RfZW5kX2RhdGE7CitleHRlcm4gdWxvbmcgdWJvb3RfZW5kOworCit1bG9uZyBtb25pdG9yX2ZsYXNoX2xlbjsKKworCisjZGVmaW5lIFZFUlNJT05fU1RSSU5HX1NJWkUgIDE1MCAvKiBpbmNsdWRpbmcgNDAgYnl0ZXMgYnVmZmVyIHRvIGNoYW5nZSBhbnkgc3RyaW5nICovCisjZGVmaW5lIFZFUlNJT05fU1RSSU5HX0ZPUk1BVCAiJXMgKCVzIC0gJXMpXG4iCisjZGVmaW5lIFZFUlNJT05fU1RSSU5HCQlVX0JPT1RfVkVSU0lPTiwgX19EQVRFX18sIF9fVElNRV9fCisKK2NoYXIgdmVyc2lvbl9zdHJpbmdbVkVSU0lPTl9TVFJJTkdfU0laRV07CisKK2ludCAqZ19hZGRyOworc3RhdGljIHVsb25nIG1lbV9tYWxsb2Nfc3RhcnQ7CitzdGF0aWMgdWxvbmcgbWVtX21hbGxvY19lbmQ7CitzdGF0aWMgdWxvbmcgbWVtX21hbGxvY19icms7CitleHRlcm4gY2hhciBfc3JhbV9pbl9zZHJhbV9zdGFydFtdOworZXh0ZXJuIGNoYXIgX3NyYW1faW5zdF9zaXplW107CisjaWZkZWYgREVCVUcKK3N0YXRpYyB2b2lkIGRpc3BsYXlfZ2xvYmFsX2RhdGEodm9pZCk7CisjZW5kaWYKKworLyogZGVmaW5pdGlvbnMgdXNlZCB0byBjaGVjayB0aGUgU01DIGNhcmQgYXZhaWxhYmlsaXR5ICovCisjZGVmaW5lIFNNQ19CQVNFX0FERFJFU1MgQ09ORklHX1NNQzkxMTExX0JBU0UKKyNkZWZpbmUgVVBQRVJfQllURV9NQVNLCTB4RkYwMAorI2RlZmluZSBTTUNfSURFTlQJMHgzMzAwCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliX2JsYWNrZmluL2JvYXJkLmMgYi9saWJfYmxhY2tmaW4vYm9hcmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWQxM2ZhCi0tLSAvZGV2L251bGwKKysrIGIvbGliX2JsYWNrZmluL2JvYXJkLmMKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBVLWJvb3QgLSBib2FyZC5jIEZpcnN0IEMgZmlsZSB0byBiZSBjYWxsZWQgY29udGFpbnMgaW5pdCByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBibGFja2Zpbi51Y2xpbnV4Lm9yZworICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8ZGV2aWNlcy5oPgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKyNpbmNsdWRlIDxuZXQuaD4KKyNpbmNsdWRlIDxlbnZpcm9ubWVudC5oPgorI2luY2x1ZGUgImJsYWNrZmluX2JvYXJkLmgiCisjaW5jbHVkZSAiLi4vZHJpdmVycy9zbWM5MTExMS5oIgorCitleHRlcm4gZmxhc2hfaW5mb190IGZsYXNoX2luZm9bXTsKKworCitzdGF0aWMgdm9pZCBtZW1fbWFsbG9jX2luaXQodm9pZCkKK3sKKwltZW1fbWFsbG9jX3N0YXJ0ID0gQ0ZHX01BTExPQ19CQVNFOworCW1lbV9tYWxsb2NfZW5kID0gKENGR19NQUxMT0NfQkFTRSArIENGR19NQUxMT0NfTEVOKTsKKwltZW1fbWFsbG9jX2JyayA9IG1lbV9tYWxsb2Nfc3RhcnQ7CisJbWVtc2V0KCh2b2lkICopIG1lbV9tYWxsb2Nfc3RhcnQsIDAsCisJbWVtX21hbGxvY19lbmQgLSBtZW1fbWFsbG9jX3N0YXJ0KTsKK30KKwordm9pZCAqc2JyayhwdHJkaWZmX3QgaW5jcmVtZW50KQoreworCXVsb25nIG9sZCA9IG1lbV9tYWxsb2NfYnJrOworCXVsb25nIG5ldyA9IG9sZCArIGluY3JlbWVudDsKKworCWlmICgobmV3IDwgbWVtX21hbGxvY19zdGFydCkgfHwgKG5ldyA+IG1lbV9tYWxsb2NfZW5kKSkgeworCQlyZXR1cm4gKE5VTEwpOworCX0KKwltZW1fbWFsbG9jX2JyayA9IG5ldzsKKworCXJldHVybiAoKHZvaWQgKikgb2xkKTsKK30KKworc3RhdGljIGludCBkaXNwbGF5X2Jhbm5lcih2b2lkKQoreworCXNwcmludGYodmVyc2lvbl9zdHJpbmcsIFZFUlNJT05fU1RSSU5HX0ZPUk1BVCwgVkVSU0lPTl9TVFJJTkcpOworCXByaW50ZigiJXNcbiIsIHZlcnNpb25fc3RyaW5nKTsKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgdm9pZCBkaXNwbGF5X2ZsYXNoX2NvbmZpZyh1bG9uZyBzaXplKQoreworCXB1dHMoIkZMQVNIOiAgIik7CisJcHJpbnRfc2l6ZShzaXplLCAiXG4iKTsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyBpbnQgaW5pdF9iYXVkcmF0ZSh2b2lkKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJdWNoYXIgdG1wWzY0XTsKKwlpbnQgaSA9IGdldGVudl9yKCJiYXVkcmF0ZSIsIHRtcCwgc2l6ZW9mKHRtcCkpOworCWdkLT5iZC0+YmlfYmF1ZHJhdGUgPSBnZC0+YmF1ZHJhdGUgPSAoaSA+IDApCisJCT8gKGludCkgc2ltcGxlX3N0cnRvdWwodG1wLCBOVUxMLCAxMCkKKwkJOiBDT05GSUdfQkFVRFJBVEU7CisJcmV0dXJuICgwKTsKK30KKworI2lmZGVmIERFQlVHCitzdGF0aWMgdm9pZCBkaXNwbGF5X2dsb2JhbF9kYXRhKHZvaWQpCit7CisJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisJYmRfdCAqYmQ7CisJYmQgPSBnZC0+YmQ7CisJcHJpbnRmKCItLWZsYWdzOiV4XG4iLCBnZC0+ZmxhZ3MpOworCXByaW50ZigiLS1ib2FyZF90eXBlOiV4XG4iLCBnZC0+Ym9hcmRfdHlwZSk7CisJcHJpbnRmKCItLWJhdWRyYXRlOiV4XG4iLCBnZC0+YmF1ZHJhdGUpOworCXByaW50ZigiLS1oYXZlX2NvbnNvbGU6JXhcbiIsIGdkLT5oYXZlX2NvbnNvbGUpOworCXByaW50ZigiLS1yYW1fc2l6ZToleFxuIiwgZ2QtPnJhbV9zaXplKTsKKwlwcmludGYoIi0tcmVsb2Nfb2ZmOiV4XG4iLCBnZC0+cmVsb2Nfb2ZmKTsKKwlwcmludGYoIi0tZW52X2FkZHI6JXhcbiIsIGdkLT5lbnZfYWRkcik7CisJcHJpbnRmKCItLWVudl92YWxpZDoleFxuIiwgZ2QtPmVudl92YWxpZCk7CisJcHJpbnRmKCItLWJkOiV4ICV4XG4iLCBnZC0+YmQsIGJkKTsKKwlwcmludGYoIi0tLWJpX2JhdWRyYXRlOiV4XG4iLCBiZC0+YmlfYmF1ZHJhdGUpOworCXByaW50ZigiLS0tYmlfaXBfYWRkcjoleFxuIiwgYmQtPmJpX2lwX2FkZHIpOworCXByaW50ZigiLS0tYmlfZW5ldGFkZHI6JXggJXggJXggJXggJXggJXhcbiIsCisJCQkJYmQtPmJpX2VuZXRhZGRyWzBdLAorCQkJCWJkLT5iaV9lbmV0YWRkclsxXSwKKwkJCQliZC0+YmlfZW5ldGFkZHJbMl0sCisJCQkJYmQtPmJpX2VuZXRhZGRyWzNdLAorCQkJCWJkLT5iaV9lbmV0YWRkcls0XSwKKwkJCQliZC0+YmlfZW5ldGFkZHJbNV0pOworCXByaW50ZigiLS0tYmlfYXJjaF9udW1iZXI6JXhcbiIsIGJkLT5iaV9hcmNoX251bWJlcik7CisJcHJpbnRmKCItLS1iaV9ib290X3BhcmFtczoleFxuIiwgYmQtPmJpX2Jvb3RfcGFyYW1zKTsKKwlwcmludGYoIi0tLWJpX21lbXN0YXJ0OiV4XG4iLCBiZC0+YmlfbWVtc3RhcnQpOworCXByaW50ZigiLS0tYmlfbWVtc2l6ZToleFxuIiwgYmQtPmJpX21lbXNpemUpOworCXByaW50ZigiLS0tYmlfZmxhc2hzdGFydDoleFxuIiwgYmQtPmJpX2ZsYXNoc3RhcnQpOworCXByaW50ZigiLS0tYmlfZmxhc2hzaXplOiV4XG4iLCBiZC0+YmlfZmxhc2hzaXplKTsKKwlwcmludGYoIi0tLWJpX2ZsYXNob2Zmc2V0OiV4XG4iLCBiZC0+YmlfZmxhc2hvZmZzZXQpOworCXByaW50ZigiLS1qdDoleCAqOiV4XG4iLCBnZC0+anQsICooZ2QtPmp0KSk7Cit9CisjZW5kaWYKKworLyoKKyAqIEFsbCBhdHRlbXB0cyB0byBjb21lIHVwIHdpdGggYSAiY29tbW9uIiBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZQorICogdGhhdCB3b3JrcyBmb3IgYWxsIGJvYXJkcyBhbmQgYXJjaGl0ZWN0dXJlcyBmYWlsZWQ6IHNvbWUgb2YgdGhlCisgKiByZXF1aXJlbWVudHMgYXJlIGp1c3QgX3Rvb18gZGlmZmVyZW50LiBUbyBnZXQgcmlkIG9mIHRoZSByZXN1bHRpbmcKKyAqIG1lc3Mgb2YgYm9hcmQgZGVwZW5kZW5kICNpZmRlZidlZCBjb2RlIHdlIG5vdyBtYWtlIHRoZSB3aG9sZQorICogaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgY29uZmlndXJhYmxlIHRvIHRoZSB1c2VyLgorICoKKyAqIFRoZSByZXF1aXJlbWVudHMgZm9yIGFueSBuZXcgaW5pdGFsaXphdGlvbiBmdW5jdGlvbiBpcyBzaW1wbGU6IGl0CisgKiByZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlICJnbG9iYWwgZGF0YSIgc3RydWN0dXJlIGFzIGl0J3Mgb25seQorICogYXJndW1lbnQsIGFuZCByZXR1cm5zIGFuIGludGVnZXIgcmV0dXJuIGNvZGUsIHdoZXJlIDAgbWVhbnMKKyAqICJjb250aW51ZSIgYW5kICE9IDAgbWVhbnMgImZhdGFsIGVycm9yLCBoYW5nIHRoZSBzeXN0ZW0iLgorICovCisKK3ZvaWQgYm9hcmRfaW5pdF9mKHVsb25nIGJvb3RmbGFnKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCXVsb25nIGFkZHI7CisJYmRfdCAqYmQ7CisKKwlnZCA9IChnZF90ICopIChDRkdfR0JMX0RBVEFfQUREUik7CisJbWVtc2V0KCh2b2lkICopIGdkLCAwLCBzaXplb2YoZ2RfdCkpOworCisJLyogQm9hcmQgZGF0YSBpbml0aWFsaXphdGlvbiAqLworCWFkZHIgPSAoQ0ZHX0dCTF9EQVRBX0FERFIgKyBzaXplb2YoZ2RfdCkpOworCisJLyogQWxpZ24gdG8gNCBieXRlIGJvdW5kYXJ5ICovCisJYWRkciAmPSB+KDQgLSAxKTsKKwliZCA9IChiZF90KilhZGRyOworCWdkLT5iZCA9IGJkOworCW1lbXNldCgodm9pZCAqKSBiZCwgMCwgc2l6ZW9mKGJkX3QpKTsKKworCS8qIEluaXRpYWxpemUgKi8KKwlpbml0X0lSUSgpOworCWVudl9pbml0KCk7CQkvKiBpbml0aWFsaXplIGVudmlyb25tZW50ICovCisJaW5pdF9iYXVkcmF0ZSgpOwkvKiBpbml0aWFsemUgYmF1ZHJhdGUgc2V0dGluZ3MgKi8KKwlzZXJpYWxfaW5pdCgpOwkJLyogc2VyaWFsIGNvbW11bmljYXRpb25zIHNldHVwICovCisJY29uc29sZV9pbml0X2YoKTsKKwlkaXNwbGF5X2Jhbm5lcigpOwkvKiBzYXkgdGhhdCB3ZSBhcmUgaGVyZSAqLworCWNoZWNrYm9hcmQoKTsKKyNpZiBkZWZpbmVkKENPTkZJR19SVENfQkY1MzMpICYmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0RBVEUpCisJcnRjX2luaXQoKTsKKyNlbmRpZgorCXRpbWVyX2luaXQoKTsKKwlwcmludGYoIkNsb2NrOiBWQ086ICVsdSBNSHosIENvcmU6ICVsdSBNSHosIFN5c3RlbTogJWx1IE1IelxuIiwgXAorCUNPTkZJR19WQ09fSFovMTAwMDAwMCwgQ09ORklHX0NDTEtfSFovMTAwMDAwMCwgQ09ORklHX1NDTEtfSFovMTAwMDAwMCk7CisJcHJpbnRmKCJTRFJBTTogIik7CisJcHJpbnRfc2l6ZShpbml0ZHJhbSgwKSwgIlxuIik7CisJYm9hcmRfaW5pdF9yKChnZF90ICopIGdkLCAweDIwMDAwMDEwKTsKK30KKwordm9pZCBib2FyZF9pbml0X3IoZ2RfdCAqIGlkLCB1bG9uZyBkZXN0X2FkZHIpCit7CisJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisJdWxvbmcgc2l6ZTsKKwlleHRlcm4gdm9pZCBtYWxsb2NfYmluX3JlbG9jKHZvaWQpOworCWNoYXIgKnMsICplOworCWJkX3QgKmJkOworCWludCBpOworCWdkID0gaWQ7CisJZ2QtPmZsYWdzIHw9IEdEX0ZMR19SRUxPQzsJLyogdGVsbCBvdGhlcnM6IHJlbG9jYXRpb24gZG9uZSAqLworCWJkID0gZ2QtPmJkOworCisjaWYJQ09ORklHX1NUQU1QCisJLyogVGhlcmUgYXJlIHNvbWUgb3RoZXIgcG9pbnRlciBjb25zdGFudHMgd2UgbXVzdCBkZWFsIHdpdGggKi8KKwkvKiBjb25maWd1cmUgYXZhaWxhYmxlIEZMQVNIIGJhbmtzICovCisJc2l6ZSA9IGZsYXNoX2luaXQoKTsKKwlkaXNwbGF5X2ZsYXNoX2NvbmZpZyhzaXplKTsKKwlmbGFzaF9wcm90ZWN0KEZMQUdfUFJPVEVDVF9TRVQsIENGR19GTEFTSF9CQVNFLCBDRkdfRkxBU0hfQkFTRSArIDB4MWZmZmYsICZmbGFzaF9pbmZvWzBdKTsKKwliZC0+YmlfZmxhc2hzdGFydCA9IENGR19GTEFTSF9CQVNFOworCWJkLT5iaV9mbGFzaHNpemUgPSBzaXplOworCWJkLT5iaV9mbGFzaG9mZnNldCA9IDA7CisjZWxzZQorCWJkLT5iaV9mbGFzaHN0YXJ0ID0gMDsKKwliZC0+YmlfZmxhc2hzaXplID0gMDsKKwliZC0+YmlfZmxhc2hvZmZzZXQgPSAwOworI2VuZGlmCisJLyogaW5pdGlhbGl6ZSBtYWxsb2MoKSBhcmVhICovCisJbWVtX21hbGxvY19pbml0KCk7CisJbWFsbG9jX2Jpbl9yZWxvYygpOworCisJLyogcmVsb2NhdGUgZW52aXJvbm1lbnQgZnVuY3Rpb24gcG9pbnRlcnMgZXRjLiAqLworCWVudl9yZWxvY2F0ZSgpOworCisJLyogYm9hcmQgTUFDIGFkZHJlc3MgKi8KKwlzID0gZ2V0ZW52KCJldGhhZGRyIik7CisJZm9yIChpID0gMDsgaSA8IDY7ICsraSkgeworCQliZC0+YmlfZW5ldGFkZHJbaV0gPSBzID8gc2ltcGxlX3N0cnRvdWwocywgJmUsIDE2KSA6IDA7CisJCWlmIChzKQorCQkJcyA9ICgqZSkgPyBlICsgMSA6IGU7CisJfQorCisJLyogSVAgQWRkcmVzcyAqLworCWJkLT5iaV9pcF9hZGRyID0gZ2V0ZW52X0lQYWRkcigiaXBhZGRyIik7CisKKwkvKiBJbml0aWFsaXplIGRldmljZXMgKi8KKwlkZXZpY2VzX2luaXQoKTsKKwlqdW1wdGFibGVfaW5pdCgpOworCisJLyogSW5pdGlhbGl6ZSB0aGUgY29uc29sZSAoYWZ0ZXIgdGhlIHJlbG9jYXRpb24gYW5kIGRldmljZXMgaW5pdCkgKi8KKwljb25zb2xlX2luaXRfcigpOworCisJLyogSW5pdGlhbGl6ZSBmcm9tIGVudmlyb25tZW50ICovCisJaWYgKChzID0gZ2V0ZW52KCJsb2FkYWRkciIpKSAhPSBOVUxMKSB7CisJCWxvYWRfYWRkciA9IHNpbXBsZV9zdHJ0b3VsKHMsIE5VTEwsIDE2KTsKKwl9CisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfTkVUKQorCWlmICgocyA9IGdldGVudigiYm9vdGZpbGUiKSkgIT0gTlVMTCkgeworCQljb3B5X2ZpbGVuYW1lKEJvb3RGaWxlLCBzLCBzaXplb2YoQm9vdEZpbGUpKTsKKwl9CisjZW5kaWYKKyNpZiBkZWZpbmVkKENPTkZJR19NSVNDX0lOSVRfUikKKwkvKiBtaXNjZWxsYW5lb3VzIHBsYXRmb3JtIGRlcGVuZGVudCBpbml0aWFsaXNhdGlvbnMgKi8KKwltaXNjX2luaXRfcigpOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfRFJJVkVSX1NNQzkxMTExCisjaWZkZWYgU0hBUkVEX1JFU09VUkNFUworCS8qIFN3aXRjaCB0byBFdGhlcm5ldCAqLworCXN3YXBfdG8oRVRIRVJORVQpOworI2VuZGlmCisJaWYgICggKFNNQ19pbncoQkFOS19TRUxFQ1QpICYgVVBQRVJfQllURV9NQVNLKSAhPSBTTUNfSURFTlQgKSB7CisJCXByaW50ZigiRVJST1I6IENhbid0IGZpbmQgU01DOTExMTEgYXQgYWRkcmVzcyAleFxuIiwgU01DX0JBU0VfQUREUkVTUyk7CisJfSBlbHNlIHsKKwkJcHJpbnRmKCJOZXQ6ICAgU01DOTExMTEgYXQgMHglMDhYXG4iLCBTTUNfQkFTRV9BRERSRVNTKTsKKwl9CisKKyNpZmRlZiBTSEFSRURfUkVTT1VSQ0VTCisJc3dhcF90byhGTEFTSCk7CisjZW5kaWYKKyNlbmRpZgorI2lmZGVmIENPTkZJR19TT0ZUX0kyQworCWluaXRfZnVuY19pMmMoKTsKKyNlbmRpZgorCisjaWZkZWYgREVCVUcKKwlkaXNwbGF5X2dsb2JhbF9kYXRhKHZvaWQpOworI2VuZGlmCisKKwkvKiBtYWluX2xvb3AoKSBjYW4gcmV0dXJuIHRvIHJldHJ5IGF1dG9ib290LCBpZiBzbyBqdXN0IHJ1biBpdCBhZ2Fpbi4gKi8KKwlmb3IgKDs7KSB7CisJCW1haW5fbG9vcCgpOworCX0KK30KKworI2lmZGVmIENPTkZJR19TT0ZUX0kyQworc3RhdGljIGludCBpbml0X2Z1bmNfaTJjICh2b2lkKQoreworCXB1dHMgKCJJMkM6ICAgIik7CisJaTJjX2luaXQgKENGR19JMkNfU1BFRUQsIENGR19JMkNfU0xBVkUpOworCXB1dHMgKCJyZWFkeVxuIik7CisJcmV0dXJuICgwKTsKK30KKyNlbmRpZgorCit2b2lkIGhhbmcodm9pZCkKK3sKKwlwdXRzKCIjIyMgRVJST1IgIyMjIFBsZWFzZSBSRVNFVCB0aGUgYm9hcmQgIyMjXG4iKTsKKwlmb3IgKDs7KTsKK30KZGlmZiAtLWdpdCBhL2xpYl9ibGFja2Zpbi9jYWNoZS5jIGIvbGliX2JsYWNrZmluL2NhY2hlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ3Mjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYl9ibGFja2Zpbi9jYWNoZS5jCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBVLWJvb3QgLSBjYWNoZS5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IGJsYWNrZmluLnVjbGludXgub3JnCisgKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworLyogZm9yIG5vdzoganVzdCBkdW1teSBmdW5jdGlvbnMgdG8gc2F0aXNmeSB0aGUgbGlua2VyICovCitleHRlcm4gdm9pZCBibGFja2Zpbl9pY2FjaGVfcmFuZ2UgKHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAqKTsKK2V4dGVybiB2b2lkIGJsYWNrZmluX2RjYWNoZV9yYW5nZSAodW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICopOwordm9pZCBmbHVzaF9jYWNoZSAodW5zaWduZWQgbG9uZyBkdW1teTEsIHVuc2lnbmVkIGxvbmcgZHVtbXkyKQoreworCWlmIChpY2FjaGVfc3RhdHVzICgpKSB7CisJCWJsYWNrZmluX2ljYWNoZV9mbHVzaF9yYW5nZSAoZHVtbXkxLCBkdW1teTEgKyBkdW1teTIpOworCX0KKwlpZiAoZGNhY2hlX3N0YXR1cyAoKSkgeworCQlibGFja2Zpbl9kY2FjaGVfZmx1c2hfcmFuZ2UgKGR1bW15MSwgZHVtbXkxICsgZHVtbXkyKTsKKwl9CisJcmV0dXJuOworfQpkaWZmIC0tZ2l0IGEvbGliX2JsYWNrZmluL211bGRpMy5jIGIvbGliX2JsYWNrZmluL211bGRpMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYzM0ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJfYmxhY2tmaW4vbXVsZGkzLmMKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIFUtYm9vdCAtIG11bGRpMy5jIGNvbnRhaW5zIHJvdXRpbmVzIGZvciBtdWx0IGFuZCBkaXYKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgYmxhY2tmaW4udWNsaW51eC5vcmcKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKiBHZW5lcmljIGZ1bmN0aW9uIGdvdCBmcm9tIEdOVSBnY2MgcGFja2FnZSwgbGliZ2NjMi5jICovCisjaWZuZGVmIFNJX1RZUEVfU0laRQorI2RlZmluZSBTSV9UWVBFX1NJWkUgMzIKKyNlbmRpZgorI2RlZmluZSBfX2xsX0IgKDFMIDw8IChTSV9UWVBFX1NJWkUgLyAyKSkKKyNkZWZpbmUgX19sbF9sb3dwYXJ0KHQpICgoVVNJdHlwZSkgKHQpICUgX19sbF9CKQorI2RlZmluZSBfX2xsX2hpZ2hwYXJ0KHQpICgoVVNJdHlwZSkgKHQpIC8gX19sbF9CKQorI2RlZmluZSBCSVRTX1BFUl9VTklUIDgKKworI2lmICFkZWZpbmVkICh1bXVsX3BwbW0pCisjZGVmaW5lIHVtdWxfcHBtbSh3MSwgdzAsIHUsIHYpCQkJCQkJXAorZG8gewkJCQkJCQkJCVwKKwlVU0l0eXBlIF9feDAsIF9feDEsIF9feDIsIF9feDM7CQkJCQlcCisJVVNJdHlwZSBfX3VsLCBfX3ZsLCBfX3VoLCBfX3ZoOwkJCQkJXAorCQkJCQkJCQkJXAorCV9fdWwgPSBfX2xsX2xvd3BhcnQgKHUpOwkJCQkJXAorCV9fdWggPSBfX2xsX2hpZ2hwYXJ0ICh1KTsJCQkJCVwKKwlfX3ZsID0gX19sbF9sb3dwYXJ0ICh2KTsJCQkJCVwKKwlfX3ZoID0gX19sbF9oaWdocGFydCAodik7CQkJCQlcCisJCQkJCQkJCQlcCisJX194MCA9IChVU0l0eXBlKSBfX3VsICogX192bDsJCQkJCVwKKwlfX3gxID0gKFVTSXR5cGUpIF9fdWwgKiBfX3ZoOwkJCQkJXAorCV9feDIgPSAoVVNJdHlwZSkgX191aCAqIF9fdmw7CQkJCQlcCisJX194MyA9IChVU0l0eXBlKSBfX3VoICogX192aDsJCQkJCVwKKwkJCQkJCQkJCVwKKwlfX3gxICs9IF9fbGxfaGlnaHBhcnQgKF9feDApOy8qIHRoaXMgY2FuJ3QgZ2l2ZSBjYXJyeSAqLwlcCisJX194MSArPSBfX3gyOwkvKiBidXQgdGhpcyBpbmRlZWQgY2FuICovCQkJXAorCWlmIChfX3gxIDwgX194MikJLyogZGlkIHdlIGdldCBpdD8gKi8JCQlcCisJCV9feDMgKz0gX19sbF9COwkvKiB5ZXMsIGFkZCBpdCBpbiB0aGUgcHJvcGVyIHBvcy4gKi8JXAorCQkJCQkJCQkJXAorCSh3MSkgPSBfX3gzICsgX19sbF9oaWdocGFydCAoX194MSk7CQkJCVwKKwkodzApID0gX19sbF9sb3dwYXJ0IChfX3gxKSAqIF9fbGxfQiArIF9fbGxfbG93cGFydCAoX194MCk7CVwKK30gd2hpbGUgKDApCisjZW5kaWYKKworI2lmICFkZWZpbmVkIChfX3VtdWxzaWRpMykKKyNkZWZpbmUgX191bXVsc2lkaTModSwgdikJCQkJCQlcCisJKHtESXVuaW9uIF9fdzsJCQkJCQkJXAorCXVtdWxfcHBtbSAoX193LnMuaGlnaCwgX193LnMubG93LCB1LCB2KTsJCQlcCisJX193LmxsOyB9KQorI2VuZGlmCisKK3R5cGVkZWYgdW5zaWduZWQgaW50IFVTSXR5cGUgICAgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKFNJKSkpOwordHlwZWRlZiBpbnQgU0l0eXBlICAgICBfX2F0dHJpYnV0ZV9fICgobW9kZSAoU0kpKSk7Cit0eXBlZGVmIGludCBESXR5cGUgICAgIF9fYXR0cmlidXRlX18gKChtb2RlIChESSkpKTsKK3R5cGVkZWYJaW50IHdvcmRfdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoX193b3JkX18pKSk7CisKK3N0cnVjdCBESXN0cnVjdCB7U0l0eXBlIGxvdywgaGlnaDt9OwordHlwZWRlZiB1bmlvbgoreworCXN0cnVjdCBESXN0cnVjdCBzOworCURJdHlwZSBsbDsKK30gREl1bmlvbjsKKworREl0eXBlIF9fbXVsZGkzIChESXR5cGUgdSwgREl0eXBlIHYpCit7CisJREl1bmlvbiB3OworCURJdW5pb24gdXUsIHZ2OworCisJdXUubGwgPSB1LAorCXZ2LmxsID0gdjsKKwkvKiAgcGFuaWMoImtlcm5lbCBwYW5pYyBmb3IgX19tdWxkaTMiKTsgKi8KKwl3LmxsID0gX191bXVsc2lkaTMgKHV1LnMubG93LCB2di5zLmxvdyk7CisJdy5zLmhpZ2ggKz0gKChVU0l0eXBlKSB1dS5zLmxvdyAqIChVU0l0eXBlKSB2di5zLmhpZ2gKKwkrIChVU0l0eXBlKSB1dS5zLmhpZ2ggKiAoVVNJdHlwZSkgdnYucy5sb3cpOworCisJcmV0dXJuIHcubGw7Cit9CmRpZmYgLS1naXQgYS9uZXQvYm9vdHAuYyBiL25ldC9ib290cC5jCmluZGV4IDhjNTZjMDguLjY2OWQ3NGEgMTAwNjQ0Ci0tLSBhL25ldC9ib290cC5jCisrKyBiL25ldC9ib290cC5jCkBAIC03MTUsNyArNzE1LDcgQEAKIH0KIAogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0RIQ1ApCi1zdGF0aWMgdm9pZCBEaGNwT3B0aW9uc1Byb2Nlc3MgKHVjaGFyICogcG9wdCkKK3N0YXRpYyB2b2lkIERoY3BPcHRpb25zUHJvY2VzcyAodWNoYXIgKiBwb3B0LCBCb290cF90ICpicCkKIHsKIAl1Y2hhciAqZW5kID0gcG9wdCArIEJPT1RQX0hEUl9TSVpFOwogCWludCBvcGxlbiwgc2l6ZTsKQEAgLTc3Miw2ICs3NzIsMzQgQEAKIAkJCWJyZWFrOwogCQljYXNlIDU5OgkvKiBJZ25vcmUgUmViaW5kaW5nIFRpbWUgT3B0aW9uICovCiAJCQlicmVhazsKKwkJY2FzZSA2NjoJLyogSWdub3JlIFRGVFAgc2VydmVyIG5hbWUgKi8KKwkJCWJyZWFrOworCQljYXNlIDY3OgkvKiB2ZW5kb3Igb3B0IGJvb3RmaWxlICovCisJCQkvKgorCQkJICogSSBjYW4ndCB1c2UgZGhjcF92ZW5kb3JleF9wcm9jIGhlcmUgYmVjYXVzZSBJIG5lZWQKKwkJCSAqIHRvIHdyaXRlIGludG8gdGhlIGJvb3RwIHBhY2tldCAtIGV2ZW4gdGhlbiBJIGhhZCB0bworCQkJICogcGFzcyB0aGUgYm9vdHAgcGFja2V0IHBvaW50ZXIgaW50byBoZXJlIGFzIHRoZQorCQkJICogc2Vjb25kIGFyZworCQkJICovCisJCQlzaXplID0gdHJ1bmNhdGVfc3ogKCJPcHQgQm9vdCBGaWxlIiwKKwkJCQkJICAgIHNpemVvZihicC0+YnBfZmlsZSksCisJCQkJCSAgICBvcGxlbik7CisJCQlpZiAoYnAtPmJwX2ZpbGVbMF0gPT0gJ1wwJyAmJiBzaXplID4gMCkgeworCQkJCS8qCisJCQkJICogb25seSB1c2UgdmVuZG9yIGJvb3QgZmlsZSBpZiB3ZSBkaWRuJ3QKKwkJCQkgKiByZWNlaXZlIGEgYm9vdCBmaWxlIGluIHRoZSBtYWluIG5vbi12ZW5kb3IKKwkJCQkgKiBwYXJ0IG9mIHRoZSBwYWNrZXQgLSBnb2Qgb25seSBrbm93cyB3aHkKKwkJCQkgKiBzb21lIHZlbmRvcnMgY2hvc2Ugbm90IHRvIHVzZSB0aGlzIHBlcmZlY3RseQorCQkJCSAqIGdvb2Qgc3BvdCB0byBzdG9yZSB0aGUgYm9vdCBmaWxlIChqb2luIG9uCisJCQkJICogVHJ1NjQgVW5peCkgaXQgc2VlbXMgbWluZCBib2dnbGluZ2x5IGNyYXp5CisJCQkJICogdG8gbWUKKwkJCQkgKi8KKwkJCQlwcmludGYoIioqKiBXQVJOSU5HOiB1c2luZyB2ZW5kb3IgIgorCQkJCQkib3B0aW9uYWwgYm9vdCBmaWxlXG4iKTsKKwkJCQltZW1jcHkoYnAtPmJwX2ZpbGUsIHBvcHQgKyAyLCBzaXplKTsKKwkJCQlicC0+YnBfZmlsZVtzaXplXSA9ICdcMCc7CisJCQl9CisJCQlicmVhazsKIAkJZGVmYXVsdDoKICNpZiAoQ09ORklHX0JPT1RQX01BU0sgJiBDT05GSUdfQk9PVFBfVkVORE9SRVgpCiAJCQlpZiAoZGhjcF92ZW5kb3JleF9wcm9jIChwb3B0KSkKQEAgLTg4Miw3ICs5MTAsNyBAQAogCQkJZGhjcF9zdGF0ZSA9IFJFUVVFU1RJTkc7CiAKIAkJCWlmIChOZXRSZWFkTG9uZygodWxvbmcqKSZicC0+YnBfdmVuZFswXSkgPT0gaHRvbmwoQk9PVFBfVkVORE9SX01BR0lDKSkKLQkJCQlEaGNwT3B0aW9uc1Byb2Nlc3MoKHU4ICopJmJwLT5icF92ZW5kWzRdKTsKKwkJCQlEaGNwT3B0aW9uc1Byb2Nlc3MoKHU4ICopJmJwLT5icF92ZW5kWzRdLCBicCk7CiAKIAkJCUJvb3RwQ29weU5ldFBhcmFtcyhicCk7IC8qIFN0b3JlIG5ldCBwYXJhbXMgZnJvbSByZXBseSAqLwogCkBAIC05MDEsNyArOTI5LDcgQEAKIAkJCWNoYXIgKnM7CiAKIAkJCWlmIChOZXRSZWFkTG9uZygodWxvbmcqKSZicC0+YnBfdmVuZFswXSkgPT0gaHRvbmwoQk9PVFBfVkVORE9SX01BR0lDKSkKLQkJCQlEaGNwT3B0aW9uc1Byb2Nlc3MoKHU4ICopJmJwLT5icF92ZW5kWzRdKTsKKwkJCQlEaGNwT3B0aW9uc1Byb2Nlc3MoKHU4ICopJmJwLT5icF92ZW5kWzRdLCBicCk7CiAJCQlCb290cENvcHlOZXRQYXJhbXMoYnApOyAvKiBTdG9yZSBuZXQgcGFyYW1zIGZyb20gcmVwbHkgKi8KIAkJCWRoY3Bfc3RhdGUgPSBCT1VORDsKIAkJCXB1dHMgKCJESENQIGNsaWVudCBib3VuZCB0byBhZGRyZXNzICIpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldC5jIGIvbmV0L25ldC5jCmluZGV4IDM3YzVmYjYuLjUwNjIwMzcgMTAwNjQ0Ci0tLSBhL25ldC9uZXQuYworKysgYi9uZXQvbmV0LmMKQEAgLTIyMiw4ICsyMjIsMTAgQEAKIAkgICAgKE5ldE91cklQICYgTmV0T3VyU3VibmV0TWFzaykpIHsKIAkJaWYgKE5ldE91ckdhdGV3YXlJUCA9PSAwKSB7CiAJCQlwdXRzICgiIyMgV2FybmluZzogZ2F0ZXdheWlwIG5lZWRlZCBidXQgbm90IHNldFxuIik7CisJCQlOZXRBcnBXYWl0UmVwbHlJUCA9IE5ldEFycFdhaXRQYWNrZXRJUDsKKwkJfSBlbHNlIHsKKwkJCU5ldEFycFdhaXRSZXBseUlQID0gTmV0T3VyR2F0ZXdheUlQOwogCQl9Ci0JCU5ldEFycFdhaXRSZXBseUlQID0gTmV0T3VyR2F0ZXdheUlQOwogCX0gZWxzZSB7CiAJCU5ldEFycFdhaXRSZXBseUlQID0gTmV0QXJwV2FpdFBhY2tldElQOwogCX0KZGlmZiAtLWdpdCBhL3J0Yy9NYWtlZmlsZSBiL3J0Yy9NYWtlZmlsZQppbmRleCA0Y2VhYzc2Li5iMDgwNTdlIDEwMDY0NAotLS0gYS9ydGMvTWFrZWZpbGUKKysrIGIvcnRjL01ha2VmaWxlCkBAIC0yOCw4ICsyOCw4IEBACiBMSUIJPSBsaWJydGMuYQogCiBPQkpTCT0gZGF0ZS5vICAgXAotCSAgZHMxMjg4Ny5vIGRzMTMwMi5vIGRzMTMwNi5vIGRzMTMwNy5vIGRzMTMzNy5vIFwKLQkgIGRzMTU1Ni5vIGRzMTY0eC5vIGRzMTc0eC5vIFwKKwkgIGJmNTMzX3J0Yy5vIGRzMTI4ODcubyBkczEzMDIubyBkczEzMDYubyBkczEzMDcubyBcCisJICBkczEzMzcubyBkczE1NTYubyBkczE2NHgubyBkczE3NHgubyBcCiAJICBtNDF0MTEubyBtYXg2OTAwLm8gbTQ4dDM1YXgubyBtYzE0NjgxOC5vIG1rNDh0NTkubyBcCiAJICBtcGM1eHh4Lm8gbXBjOHh4Lm8gcGNmODU2My5vIHMzYzI0eDBfcnRjLm8gcnM1YzM3Mi5vCiAKZGlmZiAtLWdpdCBhL3J0Yy9iZjUzM19ydGMuYyBiL3J0Yy9iZjUzM19ydGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDhiZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvcnRjL2JmNTMzX3J0Yy5jCkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAxCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICogUmVhbCBUaW1lIENsb2NrIGludGVyZmFjZSBvZiBBREkyMTUzNSAoQmxhY2tmaW4pIGZvciB1Q0xpbnV4CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAzIE1vdG9yb2xhIENvcnBvcmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAkJCQlSaWNoYXJkIFhpYW8gKEEyNTkwQ0BlbWFpbC5tb3QuY29tKQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiBQYXVsIEdvcnRtYWtlcgorICoKKyAqCisgKglCYXNlZCBvbiBvdGhlciBtaW5pbWFsIGNoYXIgZGV2aWNlIGRyaXZlcnMsIGxpa2UgQWxhbidzCisgKgl3YXRjaGRvZywgVGVkJ3MgcmFuZG9tLCBldGMuIGV0Yy4KKyAqCisgKgkxLjA3CVBhdWwgR29ydG1ha2VyLgorICoJMS4wOAlNaXF1ZWwgdmFuIFNtb29yZW5idXJnOiBkaXNhbGxvdyBjZXJ0YWluIHRoaW5ncyBvbiB0aGUKKyAqCQlERUMgQWxwaGEgYXMgdGhlIENNT1MgY2xvY2sgaXMgYWxzbyB1c2VkIGZvciBvdGhlciB0aGluZ3MuCisgKgkxLjA5CU5pa2l0YSBTY2htaWR0OiBlcG9jaCBzdXBwb3J0IGFuZCBzb21lIEFscGhhIGNsZWFudXAuCisgKgkxLjA5YQlQZXRlIFphaXRjZXY6IFN1biBTUEFSQworICoJMS4wOWIJSmVmZiBHYXJ6aWs6IE1vZHVsYXJpemUsIGluaXQgY2xlYW51cAorICoJMS4wOWMJSmVmZiBHYXJ6aWs6IFNNUCBjbGVhbnVwCisgKgkxLjEwICAgIFBhdWwgQmFydG9uLURhdmlzOiBhZGQgc3VwcG9ydCBmb3IgYXN5bmMgSS9PCisgKgkxLjEwYQlBbmRyZWEgQXJjYW5nZWxpOiBBbHBoYSB1cGRhdGVzCisgKgkxLjEwYglBbmRyZXcgTW9ydG9uOiBTTVAgbG9jayBmaXgKKyAqCTEuMTBjCUNlc2FyIEJhcnJvczogU01QIGxvY2tpbmcgZml4ZXMgYW5kIGNsZWFudXAKKyAqCTEuMTBkCVBhdWwgR29ydG1ha2VyOiBkZWxldGUgcGFyYW5vaWEgY2hlY2sgaW4gcnRjX2V4aXQKKyAqCTEuMTBlICAgTEcgU29mdCBJbmRpYTogUmVnaXN0ZXIgYWNjZXNzIGlzIGRpZmZlcmVudCBpbiBCRjUzMy4KKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1ZGUgPHJ0Yy5oPgorCisjaWYgZGVmaW5lZChDT05GSUdfUlRDX0JGNTMzKSAmJiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9EQVRFKQorCisjaW5jbHVkZSA8YXNtL2JsYWNrZmluLmg+CisjaW5jbHVkZSA8YXNtL2NwdS9iZjUzM19ydGMuaD4KKwordm9pZCBydGNfcmVzZXQgKHZvaWQpCit7CisJcmV0dXJuOwkJCS8qIG5vdGhpbmcgdG8gZG8gKi8KK30KKworLyogV2FpdCBmb3IgcGVuZGluZyB3cml0ZXMgdG8gY29tcGxldGUgKi8KK3ZvaWQgd2FpdF9mb3JfY29tcGxldGUgKHZvaWQpCit7CisJd2hpbGUgKCEoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSBSVENfSVNUQVQgJiAweDgwMDApKSB7CisJCXByaW50ZiAoIiIpOworCX0KKwkqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopIFJUQ19JU1RBVCA9IDB4ODAwMDsKK30KKworLyogRW5hYmxlIHRoZSBSVEMgcHJlc2NhbGVyIGVuYWJsZSByZWdpc3RlciAqLwordm9pZCBydGNfaW5pdCAoKQoreworCSoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgUlRDX1BSRU4gPSAweDE7CisJd2FpdF9mb3JfY29tcGxldGUgKCk7Cit9CisKKy8qIFNldCB0aGUgdGltZS4gR2V0IHRoZSB0aW1lX2luX3NlY3Mgd2hpY2ggaXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIEphbiAxOTcwIGFuZCBzZXQgdGhlIFJUQyByZWdpc3RlcnMKKyAqIGJhc2VkIG9uIHRoaXMgdmFsdWUuCisgKi8KK3ZvaWQgcnRjX3NldCAoc3RydWN0IHJ0Y190aW1lICp0bXApCit7CisJdW5zaWduZWQgbG9uZyBuX2RheXNfMTk3MCA9IDA7CisJdW5zaWduZWQgbG9uZyBuX3NlY3NfcmVtID0gMDsKKwl1bnNpZ25lZCBsb25nIG5faHJzID0gMDsKKwl1bnNpZ25lZCBsb25nIG5fbWlucyA9IDA7CisJdW5zaWduZWQgbG9uZyBuX3NlY3MgPSAwOworCXVuc2lnbmVkIGxvbmcgdGltZV9pbl9zZWNzOworCisJaWYgKHRtcCA9PSBOVUxMKSB7CisJCXByaW50ZiAoIkVycm9yIHNldHRpbmcgdGhlIGRhdGUvdGltZSBcbiIpOworCQlyZXR1cm47CisJfQorCisJdGltZV9pbl9zZWNzID0KKwkJbWt0aW1lICh0bXAtPnRtX3llYXIsIHRtcC0+dG1fbW9uLCB0bXAtPnRtX21kYXksIHRtcC0+dG1faG91ciwKKwkJCXRtcC0+dG1fbWluLCB0bXAtPnRtX3NlYyk7CisKKwkvKiBDb21wdXRlIG5vLiBvZiBkYXlzIHNpbmNlIDE5NzAgKi8KKwluX2RheXNfMTk3MCA9ICh1bnNpZ25lZCBsb25nKSAodGltZV9pbl9zZWNzIC8gKE5VTV9TRUNTX0lOX0RBWSkpOworCisJLyogRnJvbSB0aGUgcmVtaW5pbmcgc2VjcywgY29tcHV0ZSB0aGUgaHJzKDAtMjMpLCBtaW5zKDAtNTkpIGFuZCBzZWNzKDAtNTkpICovCisJbl9zZWNzX3JlbSA9ICh1bnNpZ25lZCBsb25nKSAodGltZV9pbl9zZWNzICUgKE5VTV9TRUNTX0lOX0RBWSkpOworCW5faHJzID0gbl9zZWNzX3JlbSAvIChOVU1fU0VDU19JTl9IT1VSKTsKKwluX3NlY3NfcmVtID0gbl9zZWNzX3JlbSAlIChOVU1fU0VDU19JTl9IT1VSKTsKKwluX21pbnMgPSBuX3NlY3NfcmVtIC8gKE5VTV9TRUNTX0lOX01JTik7CisJbl9zZWNzID0gbl9zZWNzX3JlbSAlIChOVU1fU0VDU19JTl9NSU4pOworCisJLyogU3RvcmUgdGhlIG5ldyB0aW1lIGluIHRoZSBSVENfU1RBVCByZWdpc3RlciAqLworCSoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSBSVENfU1RBVCA9CisJCSgobl9kYXlzXzE5NzAgPDwgREFZX0JJVFNfT0ZGKSB8IChuX2hycyA8PCBIT1VSX0JJVFNfT0ZGKSB8CisJCSAobl9taW5zIDw8IE1JTl9CSVRTX09GRikgfCAobl9zZWNzIDw8IFNFQ19CSVRTX09GRikpOworCisJd2FpdF9mb3JfY29tcGxldGUgKCk7Cit9CisKKy8qIFJlYWQgdGhlIHRpbWUgZnJvbSB0aGUgUlRDX1NUQVQuIHRpbWVfaW5fc2Vjb25kcyBpcyBzZWNvbmRzIHNpbmNlIEphbiAxOTcwICovCit2b2lkIHJ0Y19nZXQgKHN0cnVjdCBydGNfdGltZSAqdG1wKQoreworCXVuc2lnbmVkIGxvbmcgY3VyX3J0Y19zdGF0ID0gMDsKKwl1bnNpZ25lZCBsb25nIHRpbWVfaW5fc2VjOworCXVuc2lnbmVkIGxvbmcgdG1fc2VjID0gMCwgdG1fbWluID0gMCwgdG1faG91ciA9IDAsIHRtX2RheSA9IDA7CisKKwlpZiAodG1wID09IE5VTEwpIHsKKwkJcHJpbnRmICgiRXJyb3IgZ2V0dGluZyB0aGUgZGF0ZS90aW1lIFxuIik7CisJCXJldHVybjsKKwl9CisKKwkvKiBSZWFkIHRoZSBSVENfU1RBVCByZWdpc3RlciAqLworCWN1cl9ydGNfc3RhdCA9ICoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSBSVENfU1RBVDsKKworCS8qIEdldCB0aGUgc2VjcyAoMC01OSksIG1pbnMgKDAtNTkpLCBocnMgKDAtMjMpIGFuZCB0aGUgZGF5cyBzaW5jZSBKYW4gMTk3MCAqLworCXRtX3NlYyA9IChjdXJfcnRjX3N0YXQgPj4gU0VDX0JJVFNfT0ZGKSAmIDB4M2Y7CisJdG1fbWluID0gKGN1cl9ydGNfc3RhdCA+PiBNSU5fQklUU19PRkYpICYgMHgzZjsKKwl0bV9ob3VyID0gKGN1cl9ydGNfc3RhdCA+PiBIT1VSX0JJVFNfT0ZGKSAmIDB4MWY7CisJdG1fZGF5ID0gKGN1cl9ydGNfc3RhdCA+PiBEQVlfQklUU19PRkYpICYgMHg3ZmZmOworCisJLyogQ2FsY3VsYXRlIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBKYW4gMTk3MCAqLworCXRpbWVfaW5fc2VjID0gKHRtX3NlYykgKworCQlNSU5fVE9fU0VDUyAodG1fbWluKSArCisJCUhSU19UT19TRUNTICh0bV9ob3VyKSArCisJCURBWVNfVE9fU0VDUyAodG1fZGF5KTsKKwl0b190bSAodGltZV9pbl9zZWMsIHRtcCk7Cit9CisjZW5kaWYgLyogQ09ORklHX1JUQ19CRjUzMyAmJiBDRkdfQ01EX0RBVEUgKi8KZGlmZiAtLWdpdCBhL3J0Yy9yczVjMzcyLmMgYi9ydGMvcnM1YzM3Mi5jCmluZGV4IDg3ZjM4YzQuLmI1NjgwOGIgMTAwNjQ0Ci0tLSBhL3J0Yy9yczVjMzcyLmMKKysrIGIvcnRjL3JzNWMzNzIuYwpAQCAtNzMsNyArNzMsNyBAQAogc3RhdGljIGludCBzZXR1cF9kb25lID0gMDsKIAogc3RhdGljIGludAotcnM1YzM3Ml9yZWFkcmFtKGNoYXIgKmJ1ZiwgaW50IGxlbikKK3JzNWMzNzJfcmVhZHJhbSh1bnNpZ25lZCBjaGFyICpidWYsIGludCBsZW4pCiB7CiAJaW50IHJldDsKIApAQCAtMTI4LDcgKzEyOCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1yczVjMzcyX2NvbnZlcnRfdG9fdGltZShzdHJ1Y3QgcnRjX3RpbWUgKmR0LCBjaGFyICpidWYpCityczVjMzcyX2NvbnZlcnRfdG9fdGltZShzdHJ1Y3QgcnRjX3RpbWUgKmR0LCB1bnNpZ25lZCBjaGFyICpidWYpCiB7CiAJLyogYnVmWzBdIGlzIHJlZ2lzdGVyIDE1ICovCiAJZHQtPnRtX3NlYyA9IGJjZDJiaW4oYnVmWzFdKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL21raW1hZ2UuYyBiL3Rvb2xzL21raW1hZ2UuYwppbmRleCBmYmMxYTEyLi41MjIyYmIyIDEwMDY0NAotLS0gYS90b29scy9ta2ltYWdlLmMKKysrIGIvdG9vbHMvbWtpbWFnZS5jCkBAIC05Myw2ICs5Myw3IEBACiAgICAgewlJSF9DUFVfU0gsCQkic2giLAkJIlN1cGVySCIsCX0sCiAgICAgewlJSF9DUFVfU1BBUkMsCQkic3BhcmMiLAkiU1BBUkMiLAl9LAogICAgIHsJSUhfQ1BVX1NQQVJDNjQsCQkic3BhcmM2NCIsCSJTUEFSQyA2NCBCaXQiLAl9LAorICAgIHsJSUhfQ1BVX0JMQUNLRklOLAkiYmxhY2tmaW4iLAkiQmxhY2tmaW4iLAl9LAogICAgIHsJLTEsCQkJIiIsCQkiIiwJCX0sCiB9OwogCkBAIC0zODMsNyArMzg0LDcgQEAKIAogCWlmIChvcHRfdHlwZSA9PSBJSF9UWVBFX01VTFRJIHx8IG9wdF90eXBlID09IElIX1RZUEVfU0NSSVBUKSB7CiAJCWNoYXIgKmZpbGUgPSBkYXRhZmlsZTsKLQkJdW5zaWduZWQgbG9uZyBzaXplOworCQl1aW50MzJfdCBzaXplOwogCiAJCWZvciAoOzspIHsKIAkJCWNoYXIgKnNlcCA9IE5VTEw7CmRpZmYgLS1naXQgYS90b29scy9zZXRsb2NhbHZlcnNpb24gYi90b29scy9zZXRsb2NhbHZlcnNpb24KbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWEyMzgyNQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3NldGxvY2FsdmVyc2lvbgpAQCAtMCwwICsxLDIyIEBACisjIS9iaW4vc2gKKyMgUHJpbnQgYWRkaXRpb25hbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciBub24tcmVsZWFzZSB0cmVlcy4KKwordXNhZ2UoKSB7CisJZWNobyAiVXNhZ2U6ICQwIFtzcmN0cmVlXSIgPiYyCisJZXhpdCAxCit9CisKK2NkICIkezE6LS59IiB8fCB1c2FnZQorCisjIENoZWNrIGZvciBnaXQgYW5kIGEgZ2l0IHJlcG8uCitpZiBoZWFkPWBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgMj4vZGV2L251bGxgOyB0aGVuCisJIyBEbyB3ZSBoYXZlIGFuIHVudGFnZ2VkIHZlcnNpb24/CisJaWYgIFsgImBnaXQgbmFtZS1yZXYgLS10YWdzIEhFQURgIiA9ICJIRUFEIHVuZGVmaW5lZCIgXTsgdGhlbgorCQlwcmludGYgJyVzJXMnIC1nIGBlY2hvICIkaGVhZCIgfCBjdXQgLWMxLThgCisJZmkKKworCSMgQXJlIHRoZXJlIHVuY29tbWl0dGVkIGNoYW5nZXM/CisJaWYgZ2l0IGRpZmYtZmlsZXMgfCByZWFkIGR1bW15OyB0aGVuCisJCXByaW50ZiAnJXMnIC1kaXJ0eQorCWZpCitmaQo=